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