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
