xref: /third_party/mesa3d/docs/drivers/zink.rst (revision bf215546)
1bf215546Sopenharmony_ciZink
2bf215546Sopenharmony_ci====
3bf215546Sopenharmony_ci
4bf215546Sopenharmony_ciOverview
5bf215546Sopenharmony_ci--------
6bf215546Sopenharmony_ci
7bf215546Sopenharmony_ciThe Zink driver is a Gallium driver that emits Vulkan API calls instead
8bf215546Sopenharmony_ciof targeting a specific GPU architecture. This can be used to get full
9bf215546Sopenharmony_cidesktop OpenGL support on devices that only support Vulkan.
10bf215546Sopenharmony_ci
11bf215546Sopenharmony_ciFeatures
12bf215546Sopenharmony_ci--------
13bf215546Sopenharmony_ci
14bf215546Sopenharmony_ciThe feature-level of Zink depends on two things; what's implemented in Zink,
15bf215546Sopenharmony_cias well as the features of the Vulkan driver.
16bf215546Sopenharmony_ci
17bf215546Sopenharmony_ciOpenGL 2.1
18bf215546Sopenharmony_ci^^^^^^^^^^
19bf215546Sopenharmony_ci
20bf215546Sopenharmony_ciOpenGL 2.1 is the minimum version Zink can support, and will always be
21bf215546Sopenharmony_ciexposed, given Vulkan support. There's a few features that are required
22bf215546Sopenharmony_cifor correct behavior, but not all of these are validated; instead you'll
23bf215546Sopenharmony_cisee rendering-issues and likely validation error, or even crashes.
24bf215546Sopenharmony_ci
25bf215546Sopenharmony_ciHere's a list of those requirements:
26bf215546Sopenharmony_ci
27bf215546Sopenharmony_ci* Vulkan 1.0
28bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
29bf215546Sopenharmony_ci
30bf215546Sopenharmony_ci  * ``logicOp``
31bf215546Sopenharmony_ci  * ``fillModeNonSolid``
32bf215546Sopenharmony_ci  * ``alphaToOne``
33bf215546Sopenharmony_ci  * ``shaderClipDistance``
34bf215546Sopenharmony_ci
35bf215546Sopenharmony_ci* Device extensions:
36bf215546Sopenharmony_ci
37bf215546Sopenharmony_ci  * `VK_KHR_maintenance1`_
38bf215546Sopenharmony_ci  * `VK_KHR_create_renderpass2`_
39bf215546Sopenharmony_ci  * `VK_KHR_imageless_framebuffer`_
40bf215546Sopenharmony_ci  * `VK_KHR_timeline_semaphore`_
41bf215546Sopenharmony_ci  * `VK_EXT_custom_border_color`_ with ``customBorderColorWithoutFormat``
42bf215546Sopenharmony_ci  * `VK_EXT_provoking_vertex`_
43bf215546Sopenharmony_ci  * `VK_EXT_line_rasterization`_, with the following ``VkPhysicalDeviceLineRasterizationFeaturesEXT``:
44bf215546Sopenharmony_ci
45bf215546Sopenharmony_ci    * ``rectangularLines``
46bf215546Sopenharmony_ci    * ``bresenhamLines``
47bf215546Sopenharmony_ci    * ``smoothLines``
48bf215546Sopenharmony_ci    * ``stippledRectangularLines``
49bf215546Sopenharmony_ci    * ``stippledBresenhamLines``
50bf215546Sopenharmony_ci    * ``stippledSmoothLines``
51bf215546Sopenharmony_ci
52bf215546Sopenharmony_ci  * `VK_KHR_swapchain_mutable_format`_
53bf215546Sopenharmony_ci  * `VK_EXT_border_color_swizzle`_
54bf215546Sopenharmony_ci
55bf215546Sopenharmony_ciIn addition to this, `VK_KHR_external_memory`_ is required to support the
56bf215546Sopenharmony_ciDRI code-path.
57bf215546Sopenharmony_ci
58bf215546Sopenharmony_ciWe also require either the `VK_EXT_scalar_block_layout`_ extension or
59bf215546Sopenharmony_ciVulkan 1.2, with the ``scalarBlockLayout`` feature.
60bf215546Sopenharmony_ci
61bf215546Sopenharmony_ciOpenGL 3.0
62bf215546Sopenharmony_ci^^^^^^^^^^
63bf215546Sopenharmony_ci
64bf215546Sopenharmony_ci
65bf215546Sopenharmony_ciFor OpenGL 3.0 support, the following additional requirements must be
66bf215546Sopenharmony_cisupported:
67bf215546Sopenharmony_ci
68bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
69bf215546Sopenharmony_ci
70bf215546Sopenharmony_ci  * ``independentBlend``
71bf215546Sopenharmony_ci
72bf215546Sopenharmony_ci* Device extensions:
73bf215546Sopenharmony_ci
74bf215546Sopenharmony_ci  * `VK_EXT_transform_feedback`_
75bf215546Sopenharmony_ci  * `VK_EXT_conditional_rendering`_
76bf215546Sopenharmony_ci
77bf215546Sopenharmony_ci* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
78bf215546Sopenharmony_ci
79bf215546Sopenharmony_ci   * ``VK_FORMAT_BC4_UNORM_BLOCK``
80bf215546Sopenharmony_ci   * ``VK_FORMAT_BC4_SNORM_BLOCK``
81bf215546Sopenharmony_ci   * ``VK_FORMAT_BC5_UNORM_BLOCK``
82bf215546Sopenharmony_ci   * ``VK_FORMAT_BC5_SNORM_BLOCK``
83bf215546Sopenharmony_ci
84bf215546Sopenharmony_ciOpenGL 3.1
85bf215546Sopenharmony_ci^^^^^^^^^^
86bf215546Sopenharmony_ci
87bf215546Sopenharmony_ciFor OpenGL 3.1 support, the following additional ``VkPhysicalDeviceLimits``
88bf215546Sopenharmony_ciare required:
89bf215546Sopenharmony_ci
90bf215546Sopenharmony_ci* ``maxPerStageDescriptorSamplers`` ≥ 16
91bf215546Sopenharmony_ci
92bf215546Sopenharmony_ciOpenGL 3.2
93bf215546Sopenharmony_ci^^^^^^^^^^
94bf215546Sopenharmony_ci
95bf215546Sopenharmony_ciFor OpenGL 3.2 support, the following additional requirements must be
96bf215546Sopenharmony_cisupported, although some of these might not actually get verified:
97bf215546Sopenharmony_ci
98bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
99bf215546Sopenharmony_ci
100bf215546Sopenharmony_ci  * ``depthClamp``
101bf215546Sopenharmony_ci  * ``geometryShader``
102bf215546Sopenharmony_ci  * ``shaderTessellationAndGeometryPointSize``
103bf215546Sopenharmony_ci
104bf215546Sopenharmony_ci* Device extensions:
105bf215546Sopenharmony_ci
106bf215546Sopenharmony_ci  * `VK_EXT_depth_clip_enable`_
107bf215546Sopenharmony_ci
108bf215546Sopenharmony_ciOpenGL 3.3
109bf215546Sopenharmony_ci^^^^^^^^^^
110bf215546Sopenharmony_ci
111bf215546Sopenharmony_ciFor OpenGL 3.3 support, the following additional requirements must be
112bf215546Sopenharmony_cisupported, although some of these might not actually get verified:
113bf215546Sopenharmony_ci
114bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
115bf215546Sopenharmony_ci
116bf215546Sopenharmony_ci  * ``occlusionQueryPrecise``
117bf215546Sopenharmony_ci
118bf215546Sopenharmony_ci* Device extensions:
119bf215546Sopenharmony_ci
120bf215546Sopenharmony_ci  * `VK_EXT_vertex_attribute_divisor`_
121bf215546Sopenharmony_ci
122bf215546Sopenharmony_ciOpenGL 4.0
123bf215546Sopenharmony_ci^^^^^^^^^^
124bf215546Sopenharmony_ci
125bf215546Sopenharmony_ciFor OpenGL 4.0 support, the following additional requirements must be
126bf215546Sopenharmony_cisupported:
127bf215546Sopenharmony_ci
128bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
129bf215546Sopenharmony_ci
130bf215546Sopenharmony_ci  * ``sampleRateShading``
131bf215546Sopenharmony_ci  * ``tessellationShader``
132bf215546Sopenharmony_ci  * ``imageCubeArray``
133bf215546Sopenharmony_ci
134bf215546Sopenharmony_ci* Device extensions:
135bf215546Sopenharmony_ci
136bf215546Sopenharmony_ci  * `VK_KHR_maintenance2`_
137bf215546Sopenharmony_ci
138bf215546Sopenharmony_ci* Formats requiring ``VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT``:
139bf215546Sopenharmony_ci
140bf215546Sopenharmony_ci      * ``VK_FORMAT_R32G32B32_SFLOAT``
141bf215546Sopenharmony_ci      * ``VK_FORMAT_R32G32B32_SINT``
142bf215546Sopenharmony_ci      * ``VK_FORMAT_R32G32B32_UINT``
143bf215546Sopenharmony_ci
144bf215546Sopenharmony_ciOpenGL 4.1
145bf215546Sopenharmony_ci^^^^^^^^^^
146bf215546Sopenharmony_ci
147bf215546Sopenharmony_ciFor OpenGL 4.1 support, the following additional requirements must be
148bf215546Sopenharmony_cisupported:
149bf215546Sopenharmony_ci
150bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
151bf215546Sopenharmony_ci
152bf215546Sopenharmony_ci  * ``multiViewport``
153bf215546Sopenharmony_ci
154bf215546Sopenharmony_ci* ``VkPhysicalDeviceLimits``
155bf215546Sopenharmony_ci
156bf215546Sopenharmony_ci  * ``maxImageDimension2D`` ≥ 16384
157bf215546Sopenharmony_ci  * ``maxViewports`` ≥ 16
158bf215546Sopenharmony_ci
159bf215546Sopenharmony_ciOpenGL 4.2
160bf215546Sopenharmony_ci^^^^^^^^^^
161bf215546Sopenharmony_ci
162bf215546Sopenharmony_ciFor OpenGL 4.2 support, the following additional requirements must be
163bf215546Sopenharmony_cisupported:
164bf215546Sopenharmony_ci
165bf215546Sopenharmony_ci* Device extensions:
166bf215546Sopenharmony_ci    * `VK_EXT_image_2d_view_of_3d`_
167bf215546Sopenharmony_ci
168bf215546Sopenharmony_ci* ``VkPhysicalDeviceLimits``:
169bf215546Sopenharmony_ci
170bf215546Sopenharmony_ci  * ``shaderStorageImageExtendedFormats``
171bf215546Sopenharmony_ci  * ``shaderStorageImageWriteWithoutFormat``
172bf215546Sopenharmony_ci
173bf215546Sopenharmony_ci* For Vulkan 1.2 and above:
174bf215546Sopenharmony_ci
175bf215546Sopenharmony_ci  * ``VkPhysicalDeviceVulkan11Features``:
176bf215546Sopenharmony_ci
177bf215546Sopenharmony_ci    * ``shaderDrawParameters``
178bf215546Sopenharmony_ci    * ``vertexPipelineStoresAndAtomics``
179bf215546Sopenharmony_ci    * ``fragmentStoresAndAtomics``
180bf215546Sopenharmony_ci    * ``textureCompressionBC``
181bf215546Sopenharmony_ci
182bf215546Sopenharmony_ci* For Vulkan 1.1 and below:
183bf215546Sopenharmony_ci
184bf215546Sopenharmony_ci  * Device extensions:
185bf215546Sopenharmony_ci
186bf215546Sopenharmony_ci    * `VK_KHR_shader_draw_parameters`_
187bf215546Sopenharmony_ci
188bf215546Sopenharmony_ci* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
189bf215546Sopenharmony_ci
190bf215546Sopenharmony_ci   * ``VK_FORMAT_BC7_UNORM_BLOCK``
191bf215546Sopenharmony_ci   * ``VK_FORMAT_BC7_SRGB_BLOCK``
192bf215546Sopenharmony_ci   * ``VK_FORMAT_BC6H_SFLOAT_BLOCK``
193bf215546Sopenharmony_ci   * ``VK_FORMAT_BC6H_UFLOAT_BLOCK``
194bf215546Sopenharmony_ci
195bf215546Sopenharmony_ciOpenGL 4.3
196bf215546Sopenharmony_ci^^^^^^^^^^
197bf215546Sopenharmony_ci
198bf215546Sopenharmony_ciFor OpenGL 4.3 support, the following additional requirements must be
199bf215546Sopenharmony_cisupported:
200bf215546Sopenharmony_ci
201bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
202bf215546Sopenharmony_ci
203bf215546Sopenharmony_ci  * ``robustBufferAccess``
204bf215546Sopenharmony_ci
205bf215546Sopenharmony_ci* Formats requiring ``VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT``:
206bf215546Sopenharmony_ci
207bf215546Sopenharmony_ci   * ``VK_FORMAT_R8G8B8A8_UNORM``
208bf215546Sopenharmony_ci   * ``VK_FORMAT_R8G8B8A8_SRGB``
209bf215546Sopenharmony_ci   * ``VK_FORMAT_R16_UNORM``
210bf215546Sopenharmony_ci   * ``VK_FORMAT_R16G16_UNORM``
211bf215546Sopenharmony_ci   * ``VK_FORMAT_R16_SNORM``
212bf215546Sopenharmony_ci   * ``VK_FORMAT_R16G16_SNORM``
213bf215546Sopenharmony_ci   * ``VK_FORMAT_D32_SFLOAT_S8_UINT``
214bf215546Sopenharmony_ci
215bf215546Sopenharmony_ciOpenGL 4.4
216bf215546Sopenharmony_ci^^^^^^^^^^
217bf215546Sopenharmony_ci
218bf215546Sopenharmony_ciFor OpenGL 4.4 support, the following additional requirements must be
219bf215546Sopenharmony_cisupported:
220bf215546Sopenharmony_ci
221bf215546Sopenharmony_ci* Formats requiring ``VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT``:
222bf215546Sopenharmony_ci
223bf215546Sopenharmony_ci  * ``VK_FORMAT_B10G11R11_UFLOAT_PACK32``
224bf215546Sopenharmony_ci
225bf215546Sopenharmony_ci* Device extensions:
226bf215546Sopenharmony_ci
227bf215546Sopenharmony_ci  * `VK_KHR_sampler_mirror_clamp_to_edge`_
228bf215546Sopenharmony_ci
229bf215546Sopenharmony_ciOpenGL 4.5
230bf215546Sopenharmony_ci^^^^^^^^^^
231bf215546Sopenharmony_ci
232bf215546Sopenharmony_ciFor OpenGL 4.5 support, the following additional ``VkPhysicalDeviceFeatures``
233bf215546Sopenharmony_ciare required to be supported
234bf215546Sopenharmony_ci
235bf215546Sopenharmony_ci* ``shaderCullDistance``
236bf215546Sopenharmony_ci
237bf215546Sopenharmony_ciOpenGL 4.6
238bf215546Sopenharmony_ci^^^^^^^^^^
239bf215546Sopenharmony_ci
240bf215546Sopenharmony_ciFor OpenGL 4.6 support, the following additional ``VkPhysicalDeviceFeatures``
241bf215546Sopenharmony_ciare required to be supported
242bf215546Sopenharmony_ci
243bf215546Sopenharmony_ci* ``VkPhysicalDeviceFeatures``:
244bf215546Sopenharmony_ci
245bf215546Sopenharmony_ci  * ``samplerAnisotropy``
246bf215546Sopenharmony_ci  * ``pipelineStatisticsQuery``
247bf215546Sopenharmony_ci  * ``depthBiasClamp``
248bf215546Sopenharmony_ci
249bf215546Sopenharmony_ci* Device extensions:
250bf215546Sopenharmony_ci
251bf215546Sopenharmony_ci  * `VK_KHR_draw_indirect_count`_
252bf215546Sopenharmony_ci
253bf215546Sopenharmony_ciPerformance
254bf215546Sopenharmony_ci-----------
255bf215546Sopenharmony_ci
256bf215546Sopenharmony_ciIf you notice poor performance and high CPU usage while running an application,
257bf215546Sopenharmony_cichanging the descriptor manager may improve performance:
258bf215546Sopenharmony_ci
259bf215546Sopenharmony_ci.. envvar:: ZINK_DESCRIPTORS <mode> ("auto")
260bf215546Sopenharmony_ci
261bf215546Sopenharmony_ci``auto``
262bf215546Sopenharmony_ci   Automatically detect best mode. This is the default.
263bf215546Sopenharmony_ci``lazy``
264bf215546Sopenharmony_ci   Disable caching and attempt to use the least amount of CPU.
265bf215546Sopenharmony_ci``cached``
266bf215546Sopenharmony_ci   Use caching to reuse descriptor sets.
267bf215546Sopenharmony_ci``notemplates``
268bf215546Sopenharmony_ci   The same as `auto`, but disables the use of `VK_KHR_descriptor_templates`.
269bf215546Sopenharmony_ci
270bf215546Sopenharmony_ciDebugging
271bf215546Sopenharmony_ci---------
272bf215546Sopenharmony_ci
273bf215546Sopenharmony_ciThere's a few tools that are useful for debugging Zink, like this environment
274bf215546Sopenharmony_civariable:
275bf215546Sopenharmony_ci
276bf215546Sopenharmony_ci.. envvar:: ZINK_DEBUG <flags> ("")
277bf215546Sopenharmony_ci
278bf215546Sopenharmony_ci``nir``
279bf215546Sopenharmony_ci   Print the NIR form of all shaders to stderr.
280bf215546Sopenharmony_ci``spirv``
281bf215546Sopenharmony_ci   Write the binary SPIR-V form of all compiled shaders to a file in the
282bf215546Sopenharmony_ci   current directory, and print a message with the filename to stderr.
283bf215546Sopenharmony_ci``tgsi``
284bf215546Sopenharmony_ci   Print the TGSI form of TGSI shaders to stderr.
285bf215546Sopenharmony_ci``validation``
286bf215546Sopenharmony_ci   Dump Validation layer output.
287bf215546Sopenharmony_ci``sync``
288bf215546Sopenharmony_ci   Emit full synchronization barriers before every draw and dispatch.
289bf215546Sopenharmony_ci``compact``
290bf215546Sopenharmony_ci   Use a maximum of 4 descriptor sets
291bf215546Sopenharmony_ci``noreorder``
292bf215546Sopenharmony_ci   Do not reorder or optimize GL command streams
293bf215546Sopenharmony_ci
294bf215546Sopenharmony_ciVulkan Validation Layers
295bf215546Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^^
296bf215546Sopenharmony_ci
297bf215546Sopenharmony_ciAnother useful tool for debugging is the `Vulkan Validation Layers
298bf215546Sopenharmony_ci<https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/master/README.md>`_.
299bf215546Sopenharmony_ci
300bf215546Sopenharmony_ciThe validation layers effectively insert extra checking between Zink and the
301bf215546Sopenharmony_ciVulkan driver, pointing out incorrect usage of the Vulkan API. The layers can
302bf215546Sopenharmony_cibe enabled by setting the environment variable :envvar:`VK_INSTANCE_LAYERS` to
303bf215546Sopenharmony_ci"VK_LAYER_KHRONOS_validation". You can read more about the Validation Layers
304bf215546Sopenharmony_ciin the link above.
305bf215546Sopenharmony_ci
306bf215546Sopenharmony_ciIRC
307bf215546Sopenharmony_ci---
308bf215546Sopenharmony_ci
309bf215546Sopenharmony_ciIn order to make things a bit easier to follow, we have decided to create our
310bf215546Sopenharmony_ciown IRC channel. If you're interested in contributing, or have any technical
311bf215546Sopenharmony_ciquestions, don't hesitate to visit `#zink on OFTC
312bf215546Sopenharmony_ci<irc://irc.oftc.net/zink>`__ and say hi!
313bf215546Sopenharmony_ci
314bf215546Sopenharmony_ci
315bf215546Sopenharmony_ci.. _VK_KHR_maintenance1: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance1.html
316bf215546Sopenharmony_ci.. _VK_KHR_create_renderpass2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_create_renderpass2.html
317bf215546Sopenharmony_ci.. _VK_KHR_imageless_framebuffer: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_imageless_framebuffer.html
318bf215546Sopenharmony_ci.. _VK_KHR_timeline_semaphore: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_timeline_semaphore.html
319bf215546Sopenharmony_ci.. _VK_KHR_external_memory: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory.html
320bf215546Sopenharmony_ci.. _VK_EXT_scalar_block_layout: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_scalar_block_layout.html
321bf215546Sopenharmony_ci.. _VK_EXT_transform_feedback: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_transform_feedback.html
322bf215546Sopenharmony_ci.. _VK_EXT_conditional_rendering: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_conditional_rendering.html
323bf215546Sopenharmony_ci.. _VK_EXT_vertex_attribute_divisor: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_vertex_attribute_divisor.html
324bf215546Sopenharmony_ci.. _VK_EXT_image_2d_view_of_3d: https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_2d_view_of_3d.html
325bf215546Sopenharmony_ci.. _VK_KHR_maintenance2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance2.html
326bf215546Sopenharmony_ci.. _VK_KHR_shader_draw_parameters: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_shader_draw_parameters.html
327bf215546Sopenharmony_ci.. _VK_KHR_draw_indirect_count: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_draw_indirect_count.html
328bf215546Sopenharmony_ci.. _VK_KHR_sampler_mirror_clamp_to_edge: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_sampler_mirror_clamp_to_edge.html
329bf215546Sopenharmony_ci.. _VK_EXT_custom_border_color: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_custom_border_color.html
330bf215546Sopenharmony_ci.. _VK_EXT_provoking_vertex: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_provoking_vertex.html
331bf215546Sopenharmony_ci.. _VK_EXT_line_rasterization: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_line_rasterization.html
332bf215546Sopenharmony_ci.. _VK_KHR_swapchain_mutable_format: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_swapchain_mutable_format.html
333bf215546Sopenharmony_ci.. _VK_EXT_border_color_swizzle: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_border_color_swizzle.html
334bf215546Sopenharmony_ci.. _VK_EXT_depth_clip_enable: https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_depth_clip_enable.html
335