diff --git a/docs/drivers/zink.rst b/docs/drivers/zink.rst index 160b63df9e6..73f1c7350c6 100644 --- a/docs/drivers/zink.rst +++ b/docs/drivers/zink.rst @@ -131,12 +131,21 @@ are required: OpenGL 4.2 ^^^^^^^^^^ -For OpenGL 4.2 support, Vulkan 1.2 is required, plus the following additional +For OpenGL 4.2 support, the following additional requirements needs to be supported: -* ``VkPhysicalDeviceVulkan11Features``: +* For Vulkan 1.2 and above: + + * ``VkPhysicalDeviceVulkan11Features``: + + * ``shaderDrawParameters`` + +* For Vulkan 1.1 and below: + + * Device extensions: + + * `VK_KHR_shader_draw_parameters`_ - * ``shaderDrawParameters`` * Formats features: @@ -193,3 +202,4 @@ questions, don't hesitate to visit `#zink on FreeNode .. _VK_EXT_vertex_attribute_divisor: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_vertex_attribute_divisor.html .. _VK_KHR_maintenance2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance2.html .. _VK_KHR_vulkan_memory_model: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_vulkan_memory_model.html +.. _VK_KHR_shader_draw_parameters: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_shader_draw_parameters.html diff --git a/src/gallium/drivers/zink/zink_device_info.py b/src/gallium/drivers/zink/zink_device_info.py index 22e9c324549..726ea887f45 100644 --- a/src/gallium/drivers/zink/zink_device_info.py +++ b/src/gallium/drivers/zink/zink_device_info.py @@ -69,6 +69,7 @@ EXTENSIONS = [ alias="driver", properties=True), Extension("VK_KHR_draw_indirect_count"), + Extension("VK_KHR_shader_draw_parameters"), Extension("VK_EXT_conditional_rendering", alias="cond_render", features=True, diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 6875ff52a9b..a73a7c72ce8 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -192,7 +192,8 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return screen->info.have_KHR_draw_indirect_count; case PIPE_CAP_START_INSTANCE: - return screen->info.feats11.shaderDrawParameters; + return (screen->info.have_vulkan12 && screen->info.feats11.shaderDrawParameters) || + screen->info.have_KHR_shader_draw_parameters; case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: return screen->info.have_EXT_vertex_attribute_divisor;