Module: Mesa
Branch: master
Commit: 1c01ad1b804a6c46d22775c1622de412eec50fa3
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c01ad1b804a6c46d22775c1622de412eec50fa3

Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Dec 28 15:39:18 2020 -0500

zink: add KHR_draw_indirect_count detection

this is a vk 1.2 feature

Reviewed-by: Hoe Hao Cheng <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8233>

---

 src/gallium/drivers/zink/zink_instance.py |  1 +
 src/gallium/drivers/zink/zink_screen.c    | 11 +++++++++++
 src/gallium/drivers/zink/zink_screen.h    |  3 +++
 3 files changed, 15 insertions(+)

diff --git a/src/gallium/drivers/zink/zink_instance.py 
b/src/gallium/drivers/zink/zink_instance.py
index 27b72eea948..d0745d810cf 100644
--- a/src/gallium/drivers/zink/zink_instance.py
+++ b/src/gallium/drivers/zink/zink_instance.py
@@ -7,6 +7,7 @@ EXTENSIONS = [
     Extension("VK_EXT_debug_utils"),
     Extension("VK_KHR_maintenance2"),
     Extension("VK_KHR_get_physical_device_properties2"),
+    Extension("VK_KHR_draw_indirect_count"),
     Extension("VK_KHR_external_memory_capabilities"),
     Extension("VK_MVK_moltenvk"),
 ]
diff --git a/src/gallium/drivers/zink/zink_screen.c 
b/src/gallium/drivers/zink/zink_screen.c
index 3e08734c3b4..9cdfc821cf9 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -834,6 +834,17 @@ load_instance_extensions(struct zink_screen *screen)
       GET_PROC_ADDR_INSTANCE(GetPhysicalDeviceProperties2);
    }
 
+   if (screen->instance_info.have_KHR_draw_indirect_count) {
+      GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, CmdDrawIndirectCountKHR);
+      GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, 
CmdDrawIndexedIndirectCountKHR);
+      screen->vk_CmdDrawIndirectCount = vk_CmdDrawIndirectCountKHR;
+      screen->vk_CmdDrawIndexedIndirectCount = 
vk_CmdDrawIndexedIndirectCountKHR;
+   } else if (VK_MAKE_VERSION(1,1,0) <= screen->loader_version) {
+      // Get Vk 1.1+ Instance functions
+      GET_PROC_ADDR_INSTANCE(CmdDrawIndirectCount);
+      GET_PROC_ADDR_INSTANCE(CmdDrawIndexedIndirectCount);
+   }
+
    return true;
 }
 
diff --git a/src/gallium/drivers/zink/zink_screen.h 
b/src/gallium/drivers/zink/zink_screen.h
index 2bf407b92da..d47d9028208 100644
--- a/src/gallium/drivers/zink/zink_screen.h
+++ b/src/gallium/drivers/zink/zink_screen.h
@@ -78,6 +78,9 @@ struct zink_screen {
    PFN_vkGetPhysicalDeviceFeatures2 vk_GetPhysicalDeviceFeatures2;
    PFN_vkGetPhysicalDeviceProperties2 vk_GetPhysicalDeviceProperties2;
 
+   PFN_vkCmdDrawIndirectCount vk_CmdDrawIndirectCount;
+   PFN_vkCmdDrawIndexedIndirectCount vk_CmdDrawIndexedIndirectCount;
+
    PFN_vkGetMemoryFdKHR vk_GetMemoryFdKHR;
    PFN_vkCmdBeginConditionalRenderingEXT vk_CmdBeginConditionalRenderingEXT;
    PFN_vkCmdEndConditionalRenderingEXT vk_CmdEndConditionalRenderingEXT;

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to