1digraph {
2  rankdir = "BT"
3  subgraph clients {
4    rank = same;
5    browser [label = "Browser"]
6    vnc_client [label = "VNC Client"]
7  }
8  host_renderer [label = < <font color="blue">gfxstream</font> / virglrenderer >]
9  run_cvd
10  wayland_socket [label = "internal/frames.sock", shape = "rectangle"]
11  webrtc [label = < <b>webrtc</b> >, penwidth = 2]
12  vmm [label = < <font color="blue">crosvm</font> / <font color="red">qemu</font> >]
13
14  subgraph cluster_android {
15    label = "Cuttlefish VM"
16    subgraph devices {
17      rank = same;
18      drm_card [label = "/dev/dri/card0", shape = "rectangle"]
19      drm_render [label = "/dev/dri/renderD128", shape = "rectangle"]
20    }
21    subgraph hals {
22      rank = same;
23      angle
24      egl [shape = "rectangle"]
25      hwcomposer_drm [label = "hwcomposer.drm"]
26      hwcomposer_ranchu [label = "hwcomposer.ranchu"]
27      vulkan [shape = "rectangle"]
28    }
29    minigbm
30    mesa
31    swiftshader [label = "SwiftShader Pastel"]
32    surfaceflinger
33    vulkan_ranchu [color = "blue", label = "Gfxstream Vulkan"]
34  }
35
36  webrtc -> browser [dir = both]
37  vmm -> vnc_client [dir = both, color = "red"]
38
39  webrtc -> run_cvd [dir = back]
40
41  wayland_socket -> webrtc [dir = both, color = "blue", label = < <I>Wayland</I> >]
42  vmm -> wayland_socket [dir = both, color = "blue", label = < <I>Wayland</I> >]
43
44  { rank = same; host_renderer -> vmm [dir = both] }
45
46  drm_render -> vmm
47  drm_card -> vmm
48
49  minigbm -> drm_render
50  mesa -> drm_render
51  vulkan_ranchu -> drm_render
52  hwcomposer_drm -> drm_card
53  hwcomposer_ranchu -> drm_card
54
55  minigbm -> hwcomposer_drm [dir = both, label = "HIDL (graphics.allocator)", style = "dashed"]
56  hwcomposer_ranchu -> minigbm [dir = both, label = "AIDL (graphics.allocator)", style = "dashed"]
57  angle -> egl [dir = "back", label = "Symlink", style = "dashed"]
58  egl -> mesa [label = "Symlink", style = "dashed"]
59  vulkan -> angle [dir = "back", label = "Shared library"]
60  vulkan-> swiftshader  [label = "Symlink", style = "dashed"]
61  vulkan -> vulkan_ranchu [label = "Symlink", style = "dashed"]
62
63  surfaceflinger -> egl [label = "Shared library"]
64  surfaceflinger -> hwcomposer_ranchu [dir = both, label = "AIDL (graphics.composer3)", style = "dashed"]
65  surfaceflinger -> hwcomposer_drm [dir = both, label = "HIDL (graphics.composer)", style = "dashed"]
66  surfaceflinger -> vulkan [label = "Shared library"]
67  surfaceflinger -> minigbm [dir = both, label = "HIDL (graphics.allocator)"]
68}
69