From 93ff47eb19089435896b48707641bdb799d2d2fa Mon Sep 17 00:00:00 2001 From: Hoe Hao Cheng Date: Sat, 13 Feb 2021 04:56:23 +0800 Subject: [PATCH] zink: enable KHR_shader_draw_parameters on Vulkan <1.2 Reviewed-By: Mike Blumenkrantz Part-of: --- docs/drivers/zink.rst | 16 +++++++++++++--- src/gallium/drivers/zink/zink_device_info.py | 1 + src/gallium/drivers/zink/zink_screen.c | 3 ++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/drivers/zink.rst b/docs/drivers/zink.rst index 160b63d..73f1c73 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 22e9c32..726ea88 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 6875ff5..a73a7c7 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; -- 2.7.4