digraph "KMS" { node [shape=box] subgraph cluster_static { style=dashed label="Static Objects" node [bgcolor=grey style=filled] "drm_plane A" -> "drm_crtc" "drm_plane B" -> "drm_crtc" "drm_crtc" -> "drm_encoder A" "drm_crtc" -> "drm_encoder B" } subgraph cluster_user_created { style=dashed label="Userspace-Created" node [shape=oval] "drm_framebuffer 1" -> "drm_plane A" "drm_framebuffer 2" -> "drm_plane B" } subgraph cluster_connector { style=dashed label="Hotpluggable" "drm_encoder A" -> "drm_connector A" "drm_encoder B" -> "drm_connector B" } }