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