| digraph T { | 
 |     /* Make sure our payloads are always drawn below the driver node */ | 
 |     subgraph cluster_driver { | 
 |         fillcolor = grey; | 
 |         style = filled; | 
 |         driver -> {payload1, payload2} [dir=none]; | 
 |     } | 
 |  | 
 |     /* Driver malloc references */ | 
 |     edge [style=dashed]; | 
 |     driver -> port1; | 
 |     driver -> port2; | 
 |     driver -> port3:e; | 
 |     driver -> port4 [color=red]; | 
 |  | 
 |     payload1:s -> port1:e; | 
 |     payload2:s -> port3:e; | 
 |     edge [style=""]; | 
 |  | 
 |     subgraph cluster_topology { | 
 |         label="Topology Manager"; | 
 |         labelloc=bottom; | 
 |  | 
 |         /* Topology references */ | 
 |         mstb1 -> {port1, port2}; | 
 |         port1 -> mstb2; | 
 |         edge [color=red]; | 
 |         port2 -> mstb3 -> {port3, port4}; | 
 |         port3 -> mstb4; | 
 |         edge [color=""]; | 
 |  | 
 |         /* Malloc references */ | 
 |         edge [style=dashed;dir=back]; | 
 |         mstb1 -> {port1, port2}; | 
 |         port1 -> mstb2; | 
 |         port2 -> mstb3 -> port3; | 
 |         edge [color=red]; | 
 |         mstb3 -> port4; | 
 |         port3 -> mstb4; | 
 |     } | 
 |  | 
 |     mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen]; | 
 |     mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen]; | 
 |     mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen]; | 
 |     mstb4 [label="MSTB #4";style=filled;fillcolor=grey]; | 
 |  | 
 |     port1 [label="Port #1"]; | 
 |     port2 [label="Port #2"]; | 
 |     port3 [label="Port #3"]; | 
 |     port4 [label="Port #4";style=filled;fillcolor=grey]; | 
 |  | 
 |     driver [label="DRM driver";style=filled;shape=box;fillcolor=lightblue]; | 
 |  | 
 |     payload1 [label="Payload #1";style=filled;shape=box;fillcolor=lightblue]; | 
 |     payload2 [label="Payload #2";style=filled;shape=box;fillcolor=lightblue]; | 
 | } |