xref: /aosp_15_r20/external/mesa3d/src/vulkan/overlay-layer/README.rst (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard WorkerA Vulkan layer to display information about the running application using an overlay.
2*61046927SAndroid Build Coastguard Worker
3*61046927SAndroid Build Coastguard WorkerBuilding
4*61046927SAndroid Build Coastguard Worker=======
5*61046927SAndroid Build Coastguard Worker
6*61046927SAndroid Build Coastguard WorkerThe overlay layer will be built if :code:`overlay` is passed as a :code:`vulkan-layers` argument. For example:
7*61046927SAndroid Build Coastguard Worker
8*61046927SAndroid Build Coastguard Worker.. code-block:: sh
9*61046927SAndroid Build Coastguard Worker
10*61046927SAndroid Build Coastguard Worker  meson -Dvulkan-layers=device-select,overlay builddir/
11*61046927SAndroid Build Coastguard Worker  ninja -C builddir/
12*61046927SAndroid Build Coastguard Worker  sudo ninja -C builddir/ install
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard WorkerSee `docs/install.rst <https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/docs/install.rst>`__ for more information.
15*61046927SAndroid Build Coastguard Worker
16*61046927SAndroid Build Coastguard WorkerBasic Usage
17*61046927SAndroid Build Coastguard Worker=======
18*61046927SAndroid Build Coastguard Worker
19*61046927SAndroid Build Coastguard WorkerTurn on the layer:
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard Worker.. code-block:: sh
22*61046927SAndroid Build Coastguard Worker
23*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay /path/to/my_vulkan_app
24*61046927SAndroid Build Coastguard Worker
25*61046927SAndroid Build Coastguard Worker
26*61046927SAndroid Build Coastguard WorkerList the available statistics:
27*61046927SAndroid Build Coastguard Worker
28*61046927SAndroid Build Coastguard Worker.. code-block:: sh
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=help /path/to/my_vulkan_app
31*61046927SAndroid Build Coastguard Worker
32*61046927SAndroid Build Coastguard Worker
33*61046927SAndroid Build Coastguard WorkerTurn on some statistics:
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Worker.. code-block:: sh
36*61046927SAndroid Build Coastguard Worker
37*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=submit,draw,pipeline_graphics /path/to/my_vulkan_app
38*61046927SAndroid Build Coastguard Worker
39*61046927SAndroid Build Coastguard WorkerPosition the overlay:
40*61046927SAndroid Build Coastguard Worker
41*61046927SAndroid Build Coastguard Worker.. code-block:: sh
42*61046927SAndroid Build Coastguard Worker
43*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=submit,draw,pipeline_graphics,position=top-right /path/to/my_vulkan_app
44*61046927SAndroid Build Coastguard Worker
45*61046927SAndroid Build Coastguard WorkerLogging Statistics
46*61046927SAndroid Build Coastguard Worker=======
47*61046927SAndroid Build Coastguard Worker
48*61046927SAndroid Build Coastguard WorkerLog statistics to a file:
49*61046927SAndroid Build Coastguard Worker
50*61046927SAndroid Build Coastguard Worker.. code-block:: sh
51*61046927SAndroid Build Coastguard Worker
52*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=output_file=/tmp/output.txt /path/to/my_vulkan_app
53*61046927SAndroid Build Coastguard Worker
54*61046927SAndroid Build Coastguard WorkerLogging is enabled for the entire lifecycle of the process unless a control socket is specified (see below).
55*61046927SAndroid Build Coastguard Worker
56*61046927SAndroid Build Coastguard Worker**Note:** some statistics (e.g. :code:`frame_timing` and :code:`gpu_timing`) log values for the entire sample interval instead of per-frame.
57*61046927SAndroid Build Coastguard WorkerFor these statistics, logging the :code:`frame` statistic allows one to compute per-frame statistics after capture.
58*61046927SAndroid Build Coastguard Worker
59*61046927SAndroid Build Coastguard WorkerLog statistics to a file, controlling when such statistics will start to be captured:
60*61046927SAndroid Build Coastguard Worker
61*61046927SAndroid Build Coastguard Worker.. code-block:: sh
62*61046927SAndroid Build Coastguard Worker
63*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=output_file=/tmp/output.txt,control=mesa_overlay /path/to/my_vulkan_app
64*61046927SAndroid Build Coastguard Worker
65*61046927SAndroid Build Coastguard WorkerThe command above will open a Unix socket with the abstract path :code:`mesa_overlay`. When a control socket is specified,
66*61046927SAndroid Build Coastguard Workerlogging must be explicitly enabled through the control socket. :code:`mesa-overlay-control.py` provides a convenient CLI:
67*61046927SAndroid Build Coastguard Worker
68*61046927SAndroid Build Coastguard Worker.. code-block:: sh
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard Worker  mesa-overlay-control.py start-capture
71*61046927SAndroid Build Coastguard Worker
72*61046927SAndroid Build Coastguard Worker.. code-block:: sh
73*61046927SAndroid Build Coastguard Worker
74*61046927SAndroid Build Coastguard Worker  mesa-overlay-control.py stop-capture
75*61046927SAndroid Build Coastguard Worker
76*61046927SAndroid Build Coastguard WorkerDirect Socket Control
77*61046927SAndroid Build Coastguard Worker------
78*61046927SAndroid Build Coastguard Worker
79*61046927SAndroid Build Coastguard WorkerThe Unix socket may be used directly if needed. Once a client connects to the socket, the overlay layer will immediately
80*61046927SAndroid Build Coastguard Workersend the following commands to the client:
81*61046927SAndroid Build Coastguard Worker
82*61046927SAndroid Build Coastguard Worker.. code-block:: sh
83*61046927SAndroid Build Coastguard Worker
84*61046927SAndroid Build Coastguard Worker  :MesaOverlayControlVersion=1;
85*61046927SAndroid Build Coastguard Worker  :DeviceName=<device name>;
86*61046927SAndroid Build Coastguard Worker  :MesaVersion=<mesa version>;
87*61046927SAndroid Build Coastguard Worker
88*61046927SAndroid Build Coastguard WorkerThe client connected to the overlay layer can enable statistics capturing by sending the command:
89*61046927SAndroid Build Coastguard Worker
90*61046927SAndroid Build Coastguard Worker.. code-block:: sh
91*61046927SAndroid Build Coastguard Worker
92*61046927SAndroid Build Coastguard Worker  :capture=1;
93*61046927SAndroid Build Coastguard Worker
94*61046927SAndroid Build Coastguard WorkerAnd disable it by sending:
95*61046927SAndroid Build Coastguard Worker
96*61046927SAndroid Build Coastguard Worker.. code-block:: sh
97*61046927SAndroid Build Coastguard Worker
98*61046927SAndroid Build Coastguard Worker  :capture=0;
99*61046927SAndroid Build Coastguard Worker
100*61046927SAndroid Build Coastguard Worker.. _docs/install.rst: ../../docs/install.rst
101