Mesa (master): zink: rewrite macro for getting KHR device functions

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Mar 3 22:43:48 UTC 2021


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

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Wed Mar  3 16:44:09 2021 -0500

zink: rewrite macro for getting KHR device functions

we have the technology. we can improve our our lives with better macros.

Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9398>

---

 src/gallium/drivers/zink/zink_screen.c | 6 ++----
 src/gallium/drivers/zink/zink_screen.h | 9 ++++++++-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 948a1ebd620..9e0fe23ba57 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -1028,10 +1028,8 @@ load_device_extensions(struct zink_screen *screen)
    }
 
    if (screen->info.have_KHR_draw_indirect_count) {
-      GET_PROC_ADDR_DEVICE_LOCAL(CmdDrawIndexedIndirectCountKHR);
-      screen->vk_CmdDrawIndexedIndirectCount = vk_CmdDrawIndexedIndirectCountKHR;
-      GET_PROC_ADDR_DEVICE_LOCAL(CmdDrawIndirectCountKHR);
-      screen->vk_CmdDrawIndirectCount = vk_CmdDrawIndirectCountKHR;
+      GET_PROC_ADDR_KHR(CmdDrawIndexedIndirectCount);
+      GET_PROC_ADDR_KHR(CmdDrawIndirectCount);
    }
 
    if (screen->info.have_EXT_calibrated_timestamps) {
diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h
index 169c350c5fa..065abf44a0c 100644
--- a/src/gallium/drivers/zink/zink_screen.h
+++ b/src/gallium/drivers/zink/zink_screen.h
@@ -147,6 +147,14 @@ zink_is_depth_format_supported(struct zink_screen *screen, VkFormat format);
       } \
    } while (0)
 
+#define GET_PROC_ADDR_KHR(x) do {                                               \
+      screen->vk_##x = (PFN_vk##x)vkGetDeviceProcAddr(screen->dev, "vk"#x"KHR"); \
+      if (!screen->vk_##x) {                                                \
+         mesa_loge("ZINK: vkGetDeviceProcAddr failed: vk"#x"KHR\n");           \
+         return false;                                                      \
+      } \
+   } while (0)
+
 #define GET_PROC_ADDR_INSTANCE(x) do {                                          \
       screen->vk_##x = (PFN_vk##x)vkGetInstanceProcAddr(screen->instance, "vk"#x); \
       if (!screen->vk_##x) {                                                \
@@ -155,7 +163,6 @@ zink_is_depth_format_supported(struct zink_screen *screen, VkFormat format);
       } \
    } while (0)
 
-#define GET_PROC_ADDR_DEVICE_LOCAL(x) PFN_vk##x vk_##x = (PFN_vk##x)vkGetDeviceProcAddr(screen->dev, "vk"#x)
 #define GET_PROC_ADDR_INSTANCE_LOCAL(instance, x) PFN_vk##x vk_##x = (PFN_vk##x)vkGetInstanceProcAddr(instance, "vk"#x)
 
 void



More information about the mesa-commit mailing list