zink: enable KHR_shader_draw_parameters on Vulkan <1.2
authorHoe Hao Cheng <haochengho12907@gmail.com>
Fri, 12 Feb 2021 20:56:23 +0000 (04:56 +0800)
committerMarge Bot <eric+marge@anholt.net>
Fri, 12 Feb 2021 21:04:24 +0000 (21:04 +0000)
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9021>

docs/drivers/zink.rst
src/gallium/drivers/zink/zink_device_info.py
src/gallium/drivers/zink/zink_screen.c

index 160b63d..73f1c73 100644 (file)
@@ -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
index 22e9c32..726ea88 100644 (file)
@@ -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, 
index 6875ff5..a73a7c7 100644 (file)
@@ -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;