1digraph T { 2 /* Make sure our payloads are always drawn below the driver node */ 3 subgraph cluster_driver { 4 fillcolor = grey; 5 style = filled; 6 driver -> {payload1, payload2} [dir=none]; 7 } 8 9 /* Driver malloc references */ 10 edge [style=dashed]; 11 driver -> port1; 12 driver -> port2; 13 driver -> port3:e; 14 driver -> port4 [color=red]; 15 16 payload1:s -> port1:e; 17 payload2:s -> port3:e; 18 edge [style=""]; 19 20 subgraph cluster_topology { 21 label="Topology Manager"; 22 labelloc=bottom; 23 24 /* Topology references */ 25 mstb1 -> {port1, port2}; 26 port1 -> mstb2; 27 edge [color=red]; 28 port2 -> mstb3 -> {port3, port4}; 29 port3 -> mstb4; 30 edge [color=""]; 31 32 /* Malloc references */ 33 edge [style=dashed;dir=back]; 34 mstb1 -> {port1, port2}; 35 port1 -> mstb2; 36 port2 -> mstb3 -> port3; 37 edge [color=red]; 38 mstb3 -> port4; 39 port3 -> mstb4; 40 } 41 42 mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen]; 43 mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen]; 44 mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen]; 45 mstb4 [label="MSTB #4";style=filled;fillcolor=grey]; 46 47 port1 [label="Port #1"]; 48 port2 [label="Port #2"]; 49 port3 [label="Port #3"]; 50 port4 [label="Port #4";style=filled;fillcolor=grey]; 51 52 driver [label="DRM driver";style=filled;shape=box;fillcolor=lightblue]; 53 54 payload1 [label="Payload #1";style=filled;shape=box;fillcolor=lightblue]; 55 payload2 [label="Payload #2";style=filled;shape=box;fillcolor=lightblue]; 56} 57