xref: /aosp_15_r20/external/mesa3d/src/vulkan/screenshot-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:`screenshot` 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,screenshot 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_screenshot /path/to/my_vulkan_app
24*61046927SAndroid Build Coastguard Worker
25*61046927SAndroid Build Coastguard Worker
26*61046927SAndroid Build Coastguard WorkerList the help menu:
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_screenshot VK_LAYER_MESA_SCREENSHOT_CONFIG=help /path/to/my_vulkan_app
31*61046927SAndroid Build Coastguard Worker
32*61046927SAndroid Build Coastguard WorkerEnable log output in stdout/stderr:
33*61046927SAndroid Build Coastguard Worker
34*61046927SAndroid Build Coastguard Worker.. code-block:: sh
35*61046927SAndroid Build Coastguard Worker
36*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_screenshot VK_LAYER_MESA_SCREENSHOT_CONFIG=log_type=<info|debug> /path/to/my_vulkan_app
37*61046927SAndroid Build Coastguard Worker
38*61046927SAndroid Build Coastguard WorkerRedirect screenshots taken to a different directory:
39*61046927SAndroid Build Coastguard Worker
40*61046927SAndroid Build Coastguard Worker.. code-block:: sh
41*61046927SAndroid Build Coastguard Worker
42*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_screenshot VK_LAYER_MESA_SCREENSHOT_CONFIG=output_dir=/path/to/new_dir /path/to/my_vulkan_app
43*61046927SAndroid Build Coastguard Worker
44*61046927SAndroid Build Coastguard WorkerCapture pre-determined screenshots:
45*61046927SAndroid Build Coastguard Worker
46*61046927SAndroid Build Coastguard Worker.. code-block:: sh
47*61046927SAndroid Build Coastguard Worker
48*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_screenshot VK_LAYER_MESA_SCREENSHOT_CONFIG=frames=1/5/7/15-4-5 /path/to/my_vulkan_app
49*61046927SAndroid Build Coastguard Worker
50*61046927SAndroid Build Coastguard WorkerNote:
51*61046927SAndroid Build Coastguard Worker - Individual frames are separated by '/' and must be listed before the frame range
52*61046927SAndroid Build Coastguard Worker - The frame range is determined by <range start>-<range count>-<range interval>
53*61046927SAndroid Build Coastguard Worker - Example: '1/5/7/15-4-5' gives individual frames [1,5,7], then the frame range gives [15,20,25,30], combining into [1,5,7,15,20,25,30]
54*61046927SAndroid Build Coastguard Worker
55*61046927SAndroid Build Coastguard WorkerTo capture all frames:
56*61046927SAndroid Build Coastguard Worker
57*61046927SAndroid Build Coastguard Worker.. code-block:: sh
58*61046927SAndroid Build Coastguard Worker
59*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_screenshot VK_LAYER_MESA_SCREENSHOT_CONFIG=frames=all /path/to/my_vulkan_app
60*61046927SAndroid Build Coastguard Worker
61*61046927SAndroid Build Coastguard WorkerDirect Socket Control
62*61046927SAndroid Build Coastguard Worker---------------------
63*61046927SAndroid Build Coastguard Worker
64*61046927SAndroid Build Coastguard WorkerEnabling communication with the client can be done with the following setup:
65*61046927SAndroid Build Coastguard Worker
66*61046927SAndroid Build Coastguard Worker.. code-block:: sh
67*61046927SAndroid Build Coastguard Worker
68*61046927SAndroid Build Coastguard Worker  VK_LOADER_LAYERS_ENABLE=VK_LAYER_MESA_screenshot VK_LAYER_MESA_SCREENSHOT_CONFIG=comms /path/to/my_vulkan_app
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard WorkerThe Unix socket may be used directly if needed. Once a client connects to the socket, the overlay layer will immediately
71*61046927SAndroid Build Coastguard Workersend the following commands to the client:
72*61046927SAndroid Build Coastguard Worker
73*61046927SAndroid Build Coastguard Worker.. code-block:: sh
74*61046927SAndroid Build Coastguard Worker
75*61046927SAndroid Build Coastguard Worker  :MesaOverlayControlVersion=1;
76*61046927SAndroid Build Coastguard Worker  :DeviceName=<device name>;
77*61046927SAndroid Build Coastguard Worker  :MesaVersion=<mesa version>;
78*61046927SAndroid Build Coastguard Worker
79*61046927SAndroid Build Coastguard WorkerThe client connected to the overlay layer can trigger a screenshot to be taken by sending the command:
80*61046927SAndroid Build Coastguard Worker
81*61046927SAndroid Build Coastguard Worker.. code-block:: sh
82*61046927SAndroid Build Coastguard Worker
83*61046927SAndroid Build Coastguard Worker  :capture=<screenshot_name.png>;
84*61046927SAndroid Build Coastguard Worker
85*61046927SAndroid Build Coastguard WorkerNote that the screenshot name must include '.png', other image types are not supported.
86*61046927SAndroid Build Coastguard Worker
87*61046927SAndroid Build Coastguard Worker.. _docs/install.rst: ../../docs/install.rst
88