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;

    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;
        port2 -> mstb3 -> {port3, port4};
        port3 -> mstb4;

        /* Malloc references */
        edge [style=dashed;dir=back];
        mstb1 -> {port1, port2};
        port1 -> mstb2;
        port2 -> mstb3 -> {port3, port4};
        port3 -> mstb4;
    }

    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];

    mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen;shape=oval];
    mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen;shape=oval];
    mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen;shape=oval];
    mstb4 [label="MSTB #4";style=filled;fillcolor=palegreen;shape=oval];

    port1 [label="Port #1";shape=oval];
    port2 [label="Port #2";shape=oval];
    port3 [label="Port #3";shape=oval];
    port4 [label="Port #4";shape=oval];
}
