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"
   }
}