xref: /aosp_15_r20/external/mesa3d/docs/drivers/zink.rst (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard WorkerZink
2*61046927SAndroid Build Coastguard Worker====
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard WorkerOverview
5*61046927SAndroid Build Coastguard Worker--------
6*61046927SAndroid Build Coastguard Worker
7*61046927SAndroid Build Coastguard WorkerThe Zink driver is a Gallium driver that emits Vulkan API calls instead
8*61046927SAndroid Build Coastguard Workerof targeting a specific GPU architecture. This can be used to get full
9*61046927SAndroid Build Coastguard Workerdesktop OpenGL support on devices that only support Vulkan.
10*61046927SAndroid Build Coastguard Worker
11*61046927SAndroid Build Coastguard WorkerFeatures
12*61046927SAndroid Build Coastguard Worker--------
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard WorkerThe feature-level of Zink depends on two things; what's implemented in Zink,
15*61046927SAndroid Build Coastguard Workeras well as the capabilities of the Vulkan driver.
16*61046927SAndroid Build Coastguard Worker
17*61046927SAndroid Build Coastguard WorkerThe feature-levels implemented by Zink are exposed by `Vulkan Profiles
18*61046927SAndroid Build Coastguard Worker<https://dev.vulkan.org/tools#vulkan-profiles>`__ in the
19*61046927SAndroid Build Coastguard Worker:file:`VP_ZINK_requirements.json` profiles file.
20*61046927SAndroid Build Coastguard Worker
21*61046927SAndroid Build Coastguard WorkerUsed with the `Vulkan Profiles tools <https://github.com/KhronosGroup/Vulkan-Profiles>`__,
22*61046927SAndroid Build Coastguard Workerwe can compare the ZINK profiles with Vulkan devices profiles generated with
23*61046927SAndroid Build Coastguard Worker`Vulkaninfo <https://vulkan.lunarg.com/doc/view/latest/windows/vulkaninfo.html>`__
24*61046927SAndroid Build Coastguard Workeror `downloaded from GPUinfo.org`_
25*61046927SAndroid Build Coastguard Workerto establish the feature-levels supported by these drivers.
26*61046927SAndroid Build Coastguard Worker
27*61046927SAndroid Build Coastguard WorkerOpenGL 2.1
28*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard WorkerOpenGL 2.1 is the minimum version Zink can support, and will always be
31*61046927SAndroid Build Coastguard Workerexposed, given Vulkan support. There's a few features that are required
32*61046927SAndroid Build Coastguard Workerfor correct behavior, but not all of these are validated; instead you'll
33*61046927SAndroid Build Coastguard Workersee rendering-issues and likely validation error, or even crashes.
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard WorkerHere's a list of those requirements:
36*61046927SAndroid Build Coastguard Worker
37*61046927SAndroid Build Coastguard Worker* Vulkan 1.0
38*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
39*61046927SAndroid Build Coastguard Worker
40*61046927SAndroid Build Coastguard Worker  * :vk-feat:`logicOp`
41*61046927SAndroid Build Coastguard Worker  * :vk-feat:`fillModeNonSolid`
42*61046927SAndroid Build Coastguard Worker  * :vk-feat:`alphaToOne`
43*61046927SAndroid Build Coastguard Worker  * :vk-feat:`shaderClipDistance`
44*61046927SAndroid Build Coastguard Worker
45*61046927SAndroid Build Coastguard Worker* Device extensions:
46*61046927SAndroid Build Coastguard Worker
47*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_maintenance1`
48*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_create_renderpass2`
49*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_imageless_framebuffer`
50*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_timeline_semaphore`
51*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_custom_border_color` with ``customBorderColorWithoutFormat``
52*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_provoking_vertex`
53*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_line_rasterization`, with the following ``VkPhysicalDeviceLineRasterizationFeaturesEXT``:
54*61046927SAndroid Build Coastguard Worker
55*61046927SAndroid Build Coastguard Worker    * :vk-feat:`rectangularLines`
56*61046927SAndroid Build Coastguard Worker    * :vk-feat:`bresenhamLines`
57*61046927SAndroid Build Coastguard Worker    * :vk-feat:`smoothLines`
58*61046927SAndroid Build Coastguard Worker    * :vk-feat:`stippledRectangularLines`
59*61046927SAndroid Build Coastguard Worker    * :vk-feat:`stippledBresenhamLines`
60*61046927SAndroid Build Coastguard Worker    * :vk-feat:`stippledSmoothLines`
61*61046927SAndroid Build Coastguard Worker
62*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_swapchain_mutable_format`
63*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_border_color_swizzle`
64*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_descriptor_update_template`
65*61046927SAndroid Build Coastguard Worker
66*61046927SAndroid Build Coastguard WorkerIn addition to this, :ext:`VK_KHR_external_memory` is required to support the
67*61046927SAndroid Build Coastguard WorkerDRI code-path.
68*61046927SAndroid Build Coastguard Worker
69*61046927SAndroid Build Coastguard WorkerWe also require either the :ext:`VK_EXT_scalar_block_layout` extension or
70*61046927SAndroid Build Coastguard WorkerVulkan 1.2, with the :vk-feat:`scalarBlockLayout` feature.
71*61046927SAndroid Build Coastguard Worker
72*61046927SAndroid Build Coastguard WorkerOpenGL 3.0
73*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
74*61046927SAndroid Build Coastguard Worker
75*61046927SAndroid Build Coastguard Worker
76*61046927SAndroid Build Coastguard WorkerFor OpenGL 3.0 support, the following additional requirements must be
77*61046927SAndroid Build Coastguard Workermet:
78*61046927SAndroid Build Coastguard Worker
79*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
80*61046927SAndroid Build Coastguard Worker
81*61046927SAndroid Build Coastguard Worker  * :vk-feat:`independentBlend`
82*61046927SAndroid Build Coastguard Worker
83*61046927SAndroid Build Coastguard Worker* Device extensions:
84*61046927SAndroid Build Coastguard Worker
85*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_transform_feedback`
86*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_conditional_rendering`
87*61046927SAndroid Build Coastguard Worker
88*61046927SAndroid Build Coastguard WorkerOpenGL 3.1
89*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
90*61046927SAndroid Build Coastguard Worker
91*61046927SAndroid Build Coastguard WorkerFor OpenGL 3.1 support, the following additional ``VkPhysicalDeviceLimits``
92*61046927SAndroid Build Coastguard Workerare required:
93*61046927SAndroid Build Coastguard Worker
94*61046927SAndroid Build Coastguard Worker* ``maxPerStageDescriptorSamplers`` ≥ 16
95*61046927SAndroid Build Coastguard Worker
96*61046927SAndroid Build Coastguard WorkerOpenGL 3.2
97*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
98*61046927SAndroid Build Coastguard Worker
99*61046927SAndroid Build Coastguard WorkerFor OpenGL 3.2 support, the following additional requirements must be
100*61046927SAndroid Build Coastguard Workermet, although some of these might not actually get verified:
101*61046927SAndroid Build Coastguard Worker
102*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
103*61046927SAndroid Build Coastguard Worker
104*61046927SAndroid Build Coastguard Worker  * :vk-feat:`depthClamp`
105*61046927SAndroid Build Coastguard Worker  * :vk-feat:`geometryShader`
106*61046927SAndroid Build Coastguard Worker  * :vk-feat:`shaderTessellationAndGeometryPointSize`
107*61046927SAndroid Build Coastguard Worker
108*61046927SAndroid Build Coastguard Worker* Device extensions:
109*61046927SAndroid Build Coastguard Worker
110*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_depth_clip_enable`
111*61046927SAndroid Build Coastguard Worker
112*61046927SAndroid Build Coastguard WorkerOpenGL 3.3
113*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
114*61046927SAndroid Build Coastguard Worker
115*61046927SAndroid Build Coastguard WorkerFor OpenGL 3.3 support, the following additional requirements must be
116*61046927SAndroid Build Coastguard Workermet, although some of these might not actually get verified:
117*61046927SAndroid Build Coastguard Worker
118*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
119*61046927SAndroid Build Coastguard Worker
120*61046927SAndroid Build Coastguard Worker  * :vk-feat:`dualSrcBlend`
121*61046927SAndroid Build Coastguard Worker
122*61046927SAndroid Build Coastguard Worker* Device extensions:
123*61046927SAndroid Build Coastguard Worker
124*61046927SAndroid Build Coastguard Worker  * :ext:`VK_EXT_vertex_attribute_divisor`
125*61046927SAndroid Build Coastguard Worker
126*61046927SAndroid Build Coastguard WorkerOpenGL 4.0
127*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
128*61046927SAndroid Build Coastguard Worker
129*61046927SAndroid Build Coastguard WorkerFor OpenGL 4.0 support, the following additional requirements must be
130*61046927SAndroid Build Coastguard Workermet:
131*61046927SAndroid Build Coastguard Worker
132*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
133*61046927SAndroid Build Coastguard Worker
134*61046927SAndroid Build Coastguard Worker  * :vk-feat:`sampleRateShading`
135*61046927SAndroid Build Coastguard Worker  * :vk-feat:`tessellationShader`
136*61046927SAndroid Build Coastguard Worker  * :vk-feat:`imageCubeArray`
137*61046927SAndroid Build Coastguard Worker
138*61046927SAndroid Build Coastguard Worker* Device extensions:
139*61046927SAndroid Build Coastguard Worker
140*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_maintenance2`
141*61046927SAndroid Build Coastguard Worker
142*61046927SAndroid Build Coastguard Worker* Formats requiring ``VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT``:
143*61046927SAndroid Build Coastguard Worker
144*61046927SAndroid Build Coastguard Worker      * ``VK_FORMAT_R32G32B32_SFLOAT``
145*61046927SAndroid Build Coastguard Worker      * ``VK_FORMAT_R32G32B32_SINT``
146*61046927SAndroid Build Coastguard Worker      * ``VK_FORMAT_R32G32B32_UINT``
147*61046927SAndroid Build Coastguard Worker
148*61046927SAndroid Build Coastguard WorkerOpenGL 4.1
149*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
150*61046927SAndroid Build Coastguard Worker
151*61046927SAndroid Build Coastguard WorkerFor OpenGL 4.1 support, the following additional requirements must be
152*61046927SAndroid Build Coastguard Workermet:
153*61046927SAndroid Build Coastguard Worker
154*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
155*61046927SAndroid Build Coastguard Worker
156*61046927SAndroid Build Coastguard Worker  * :vk-feat:`multiViewport`
157*61046927SAndroid Build Coastguard Worker
158*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceLimits``
159*61046927SAndroid Build Coastguard Worker
160*61046927SAndroid Build Coastguard Worker  * ``maxImageDimension1D`` ≥ 16384
161*61046927SAndroid Build Coastguard Worker  * ``maxImageDimension2D`` ≥ 16384
162*61046927SAndroid Build Coastguard Worker  * ``maxImageDimension3D`` ≥ 2048
163*61046927SAndroid Build Coastguard Worker  * ``maxImageDimensionCube`` ≥ 16384
164*61046927SAndroid Build Coastguard Worker  * ``maxImageArrayLayers`` ≥ 2048
165*61046927SAndroid Build Coastguard Worker  * ``maxViewports`` ≥ 16
166*61046927SAndroid Build Coastguard Worker
167*61046927SAndroid Build Coastguard WorkerOpenGL 4.2
168*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
169*61046927SAndroid Build Coastguard Worker
170*61046927SAndroid Build Coastguard WorkerFor OpenGL 4.2 support, the following additional requirements must be
171*61046927SAndroid Build Coastguard Workermet:
172*61046927SAndroid Build Coastguard Worker
173*61046927SAndroid Build Coastguard Worker* Device extensions:
174*61046927SAndroid Build Coastguard Worker    * :ext:`VK_EXT_image_2d_view_of_3d`
175*61046927SAndroid Build Coastguard Worker
176*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceLimits``:
177*61046927SAndroid Build Coastguard Worker
178*61046927SAndroid Build Coastguard Worker  * ``shaderStorageImageExtendedFormats``
179*61046927SAndroid Build Coastguard Worker  * ``shaderStorageImageWriteWithoutFormat``
180*61046927SAndroid Build Coastguard Worker  * ``vertexPipelineStoresAndAtomics``
181*61046927SAndroid Build Coastguard Worker  * ``fragmentStoresAndAtomics``
182*61046927SAndroid Build Coastguard Worker
183*61046927SAndroid Build Coastguard Worker* For Vulkan 1.2 and above:
184*61046927SAndroid Build Coastguard Worker
185*61046927SAndroid Build Coastguard Worker  * ``VkPhysicalDeviceVulkan11Features``:
186*61046927SAndroid Build Coastguard Worker
187*61046927SAndroid Build Coastguard Worker    * :vk-feat:`shaderDrawParameters`
188*61046927SAndroid Build Coastguard Worker
189*61046927SAndroid Build Coastguard Worker* For Vulkan 1.1 and below:
190*61046927SAndroid Build Coastguard Worker
191*61046927SAndroid Build Coastguard Worker  * Device extensions:
192*61046927SAndroid Build Coastguard Worker
193*61046927SAndroid Build Coastguard Worker    * :ext:`VK_KHR_shader_draw_parameters`
194*61046927SAndroid Build Coastguard Worker
195*61046927SAndroid Build Coastguard WorkerOpenGL 4.3
196*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
197*61046927SAndroid Build Coastguard Worker
198*61046927SAndroid Build Coastguard WorkerFor OpenGL 4.3 support, the following additional requirements must be
199*61046927SAndroid Build Coastguard Workermet:
200*61046927SAndroid Build Coastguard Worker
201*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
202*61046927SAndroid Build Coastguard Worker
203*61046927SAndroid Build Coastguard Worker  * :vk-feat:`robustBufferAccess`
204*61046927SAndroid Build Coastguard Worker
205*61046927SAndroid Build Coastguard Worker* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
206*61046927SAndroid Build Coastguard Worker
207*61046927SAndroid Build Coastguard Worker   * ``VK_FORMAT_R8G8B8A8_UNORM``
208*61046927SAndroid Build Coastguard Worker   * ``VK_FORMAT_R8G8B8A8_SRGB``
209*61046927SAndroid Build Coastguard Worker   * ``VK_FORMAT_R16_UNORM``
210*61046927SAndroid Build Coastguard Worker   * ``VK_FORMAT_R16G16_UNORM``
211*61046927SAndroid Build Coastguard Worker   * ``VK_FORMAT_R16_SNORM``
212*61046927SAndroid Build Coastguard Worker   * ``VK_FORMAT_R16G16_SNORM``
213*61046927SAndroid Build Coastguard Worker   * ``VK_FORMAT_D32_SFLOAT_S8_UINT``
214*61046927SAndroid Build Coastguard Worker
215*61046927SAndroid Build Coastguard WorkerOpenGL 4.4
216*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
217*61046927SAndroid Build Coastguard Worker
218*61046927SAndroid Build Coastguard WorkerFor OpenGL 4.4 support, the following additional requirements must be
219*61046927SAndroid Build Coastguard Workermet:
220*61046927SAndroid Build Coastguard Worker
221*61046927SAndroid Build Coastguard Worker* Formats requiring ``VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT``:
222*61046927SAndroid Build Coastguard Worker
223*61046927SAndroid Build Coastguard Worker  * ``VK_FORMAT_B10G11R11_UFLOAT_PACK32``
224*61046927SAndroid Build Coastguard Worker
225*61046927SAndroid Build Coastguard Worker* For Vulkan 1.2 and above:
226*61046927SAndroid Build Coastguard Worker
227*61046927SAndroid Build Coastguard Worker  * ``VkPhysicalDeviceVulkan12Features``:
228*61046927SAndroid Build Coastguard Worker
229*61046927SAndroid Build Coastguard Worker    * ``samplerMirrorClampToEdge``
230*61046927SAndroid Build Coastguard Worker
231*61046927SAndroid Build Coastguard Worker* For Vulkan 1.1 and below:
232*61046927SAndroid Build Coastguard Worker
233*61046927SAndroid Build Coastguard Worker  * Device extensions:
234*61046927SAndroid Build Coastguard Worker
235*61046927SAndroid Build Coastguard Worker    * :ext:`VK_KHR_sampler_mirror_clamp_to_edge`
236*61046927SAndroid Build Coastguard Worker
237*61046927SAndroid Build Coastguard WorkerOpenGL 4.5
238*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
239*61046927SAndroid Build Coastguard Worker
240*61046927SAndroid Build Coastguard WorkerFor OpenGL 4.5 support, the following additional ``VkPhysicalDeviceFeatures``
241*61046927SAndroid Build Coastguard Workerare required to be supported
242*61046927SAndroid Build Coastguard Worker
243*61046927SAndroid Build Coastguard Worker* :vk-feat:`shaderCullDistance`
244*61046927SAndroid Build Coastguard Worker
245*61046927SAndroid Build Coastguard WorkerOpenGL 4.6
246*61046927SAndroid Build Coastguard Worker^^^^^^^^^^
247*61046927SAndroid Build Coastguard Worker
248*61046927SAndroid Build Coastguard WorkerFor OpenGL 4.6 support, the following additional requirements must be
249*61046927SAndroid Build Coastguard Workermet:
250*61046927SAndroid Build Coastguard Worker
251*61046927SAndroid Build Coastguard Worker* ``VkPhysicalDeviceFeatures``:
252*61046927SAndroid Build Coastguard Worker
253*61046927SAndroid Build Coastguard Worker  * :vk-feat:`samplerAnisotropy`
254*61046927SAndroid Build Coastguard Worker  * :vk-feat:`depthBiasClamp`
255*61046927SAndroid Build Coastguard Worker
256*61046927SAndroid Build Coastguard Worker* Device extensions:
257*61046927SAndroid Build Coastguard Worker
258*61046927SAndroid Build Coastguard Worker  * :ext:`VK_KHR_draw_indirect_count`
259*61046927SAndroid Build Coastguard Worker
260*61046927SAndroid Build Coastguard WorkerPerformance
261*61046927SAndroid Build Coastguard Worker-----------
262*61046927SAndroid Build Coastguard Worker
263*61046927SAndroid Build Coastguard WorkerIf you notice poor performance and high CPU usage while running an application,
264*61046927SAndroid Build Coastguard Workerchanging the descriptor manager may improve performance:
265*61046927SAndroid Build Coastguard Worker
266*61046927SAndroid Build Coastguard Worker.. envvar:: ZINK_DESCRIPTORS <mode> ("auto")
267*61046927SAndroid Build Coastguard Worker
268*61046927SAndroid Build Coastguard Worker``auto``
269*61046927SAndroid Build Coastguard Worker   Automatically detect best mode. This is the default.
270*61046927SAndroid Build Coastguard Worker``lazy``
271*61046927SAndroid Build Coastguard Worker   Attempt to use the least amount of CPU by binding descriptors opportunistically.
272*61046927SAndroid Build Coastguard Worker``db``
273*61046927SAndroid Build Coastguard Worker   Use EXT_descriptor_buffer when possible.
274*61046927SAndroid Build Coastguard Worker
275*61046927SAndroid Build Coastguard WorkerDebugging
276*61046927SAndroid Build Coastguard Worker---------
277*61046927SAndroid Build Coastguard Worker
278*61046927SAndroid Build Coastguard WorkerThere's a few tools that are useful for debugging Zink, like this environment
279*61046927SAndroid Build Coastguard Workervariable:
280*61046927SAndroid Build Coastguard Worker
281*61046927SAndroid Build Coastguard Worker.. envvar:: ZINK_DEBUG
282*61046927SAndroid Build Coastguard Worker
283*61046927SAndroid Build Coastguard Worker  Accepts the following comma-separated list of flags:
284*61046927SAndroid Build Coastguard Worker
285*61046927SAndroid Build Coastguard Worker  ``nir``
286*61046927SAndroid Build Coastguard Worker    Print the NIR form of all shaders to stderr.
287*61046927SAndroid Build Coastguard Worker  ``spirv``
288*61046927SAndroid Build Coastguard Worker    Write the binary SPIR-V form of all compiled shaders to a file in the
289*61046927SAndroid Build Coastguard Worker    current directory, and print a message with the filename to stderr.
290*61046927SAndroid Build Coastguard Worker  ``tgsi``
291*61046927SAndroid Build Coastguard Worker    Print the TGSI form of TGSI shaders to stderr.
292*61046927SAndroid Build Coastguard Worker  ``validation``
293*61046927SAndroid Build Coastguard Worker    Dump Validation layer output.
294*61046927SAndroid Build Coastguard Worker  ``sync``
295*61046927SAndroid Build Coastguard Worker    Emit full synchronization barriers before every draw and dispatch.
296*61046927SAndroid Build Coastguard Worker  ``compact``
297*61046927SAndroid Build Coastguard Worker    Use a maximum of 4 descriptor sets
298*61046927SAndroid Build Coastguard Worker  ``noreorder``
299*61046927SAndroid Build Coastguard Worker    Do not reorder or optimize GL command streams
300*61046927SAndroid Build Coastguard Worker  ``gpl``
301*61046927SAndroid Build Coastguard Worker    Force using Graphics Pipeline Library for all shaders
302*61046927SAndroid Build Coastguard Worker  ``rp``
303*61046927SAndroid Build Coastguard Worker    Enable render pass optimizations (for tiling GPUs)
304*61046927SAndroid Build Coastguard Worker  ``norp``
305*61046927SAndroid Build Coastguard Worker    Disable render pass optimizations (for tiling GPUs)
306*61046927SAndroid Build Coastguard Worker  ``map``
307*61046927SAndroid Build Coastguard Worker    Print info about mapped VRAM
308*61046927SAndroid Build Coastguard Worker  ``flushsync``
309*61046927SAndroid Build Coastguard Worker    Force synchronous flushes/presents
310*61046927SAndroid Build Coastguard Worker  ``noshobj``
311*61046927SAndroid Build Coastguard Worker    Disable EXT_shader_object
312*61046927SAndroid Build Coastguard Worker  ``optimal_keys``
313*61046927SAndroid Build Coastguard Worker    Debug/use optimal_keys
314*61046927SAndroid Build Coastguard Worker  ``noopt``
315*61046927SAndroid Build Coastguard Worker    Disable async optimized pipeline compiles
316*61046927SAndroid Build Coastguard Worker  ``nobgc``
317*61046927SAndroid Build Coastguard Worker    Disable all async pipeline compiles
318*61046927SAndroid Build Coastguard Worker  ``mem``
319*61046927SAndroid Build Coastguard Worker    Enable memory allocation debugging
320*61046927SAndroid Build Coastguard Worker  ``quiet``
321*61046927SAndroid Build Coastguard Worker    Suppress probably-harmless warnings
322*61046927SAndroid Build Coastguard Worker
323*61046927SAndroid Build Coastguard WorkerVulkan Validation Layers
324*61046927SAndroid Build Coastguard Worker^^^^^^^^^^^^^^^^^^^^^^^^
325*61046927SAndroid Build Coastguard Worker
326*61046927SAndroid Build Coastguard WorkerAnother useful tool for debugging is the `Vulkan Validation Layers
327*61046927SAndroid Build Coastguard Worker<https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/README.md>`__.
328*61046927SAndroid Build Coastguard Worker
329*61046927SAndroid Build Coastguard WorkerThe validation layers effectively insert extra checking between Zink and the
330*61046927SAndroid Build Coastguard WorkerVulkan driver, pointing out incorrect usage of the Vulkan API. The layers can
331*61046927SAndroid Build Coastguard Workerbe enabled by setting the environment variable :envvar:`VK_LOADER_LAYERS_ENABLE` to
332*61046927SAndroid Build Coastguard Worker``VK_LAYER_KHRONOS_validation``. You can read more about the Validation Layers
333*61046927SAndroid Build Coastguard Workerin the link above.
334*61046927SAndroid Build Coastguard Worker
335*61046927SAndroid Build Coastguard WorkerApple macOS and MoltenVK
336*61046927SAndroid Build Coastguard Worker------------------------
337*61046927SAndroid Build Coastguard Worker
338*61046927SAndroid Build Coastguard WorkerZink on macOS is experimental with very limited capabilities.
339*61046927SAndroid Build Coastguard WorkerThe Vulkan SDK (1.3.250 or newer) is required to build Zink.
340*61046927SAndroid Build Coastguard WorkerSet the build option ``-Dmoltenvk-dir=<directory>`` to point at your Vulkan SDK install or MoltenVK build.
341*61046927SAndroid Build Coastguard WorkerAdd Zink to the Gallium drivers build option ``-Dgallium-drivers=zink``.
342*61046927SAndroid Build Coastguard WorkerIf installed using ``brew``, you can set ``-D moltenvk-dir=$(brew --prefix molten-vk)``.
343*61046927SAndroid Build Coastguard Worker
344*61046927SAndroid Build Coastguard Worker
345*61046927SAndroid Build Coastguard WorkerIRC
346*61046927SAndroid Build Coastguard Worker---
347*61046927SAndroid Build Coastguard Worker
348*61046927SAndroid Build Coastguard WorkerIn order to make things a bit easier to follow, we have decided to create our
349*61046927SAndroid Build Coastguard Workerown IRC channel. If you're interested in contributing, or have any technical
350*61046927SAndroid Build Coastguard Workerquestions, don't hesitate to visit `#zink on OFTC
351*61046927SAndroid Build Coastguard Worker<irc://irc.oftc.net/zink>`__ and say hi!
352*61046927SAndroid Build Coastguard Worker
353*61046927SAndroid Build Coastguard Worker
354*61046927SAndroid Build Coastguard Worker.. _downloaded from GPUinfo.org: https://www.saschawillems.de/blog/2022/03/12/vulkan-profiles-support-for-the-vulkan-hardware-capability-viewer-and-database/
355