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; 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 port2 -> mstb3 -> {port3, port4}; 28 port3 -> mstb4; 29 30 /* Malloc references */ 31 edge [style=dashed;dir=back]; 32 mstb1 -> {port1, port2}; 33 port1 -> mstb2; 34 port2 -> mstb3 -> {port3, port4}; 35 port3 -> mstb4; 36 } 37 38 driver [label="DRM driver";style=filled;shape=box;fillcolor=lightblue]; 39 40 payload1 [label="Payload #1";style=filled;shape=box;fillcolor=lightblue]; 41 payload2 [label="Payload #2";style=filled;shape=box;fillcolor=lightblue]; 42 43 mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen;shape=oval]; 44 mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen;shape=oval]; 45 mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen;shape=oval]; 46 mstb4 [label="MSTB #4";style=filled;fillcolor=palegreen;shape=oval]; 47 48 port1 [label="Port #1";shape=oval]; 49 port2 [label="Port #2";shape=oval]; 50 port3 [label="Port #3";shape=oval]; 51 port4 [label="Port #4";shape=oval]; 52} 53