Mesa (main): zink: pass screen to extension getter macro

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri May 13 17:05:46 UTC 2022


Module: Mesa
Branch: main
Commit: 9e9ead2c152512e7f283f496f06cf08fe172558a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e9ead2c152512e7f283f496f06cf08fe172558a

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Wed Jun 23 10:18:20 2021 +0200

zink: pass screen to extension getter macro

This is just prep-work to reduce the size of the final commit; this
allows us to store the extension-getter function in the screen object.

Reviewed-by: Hoe Hao Cheng <haochengho12907 at gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11550>

---

 src/gallium/drivers/zink/zink_screen.c | 13 +++++++------
 src/gallium/drivers/zink/zink_screen.h |  2 +-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index fb402ed1367..3550957145c 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -1602,9 +1602,9 @@ zink_internal_setup_moltenvk(struct zink_screen *screen)
    if (!screen->instance_info.have_MVK_moltenvk)
       return true;
 
-   GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, GetMoltenVKConfigurationMVK);
-   GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, SetMoltenVKConfigurationMVK);
-   GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, GetVersionStringsMVK);
+   GET_PROC_ADDR_INSTANCE_LOCAL(screen, screen->instance, GetMoltenVKConfigurationMVK);
+   GET_PROC_ADDR_INSTANCE_LOCAL(screen, screen->instance, SetMoltenVKConfigurationMVK);
+   GET_PROC_ADDR_INSTANCE_LOCAL(screen, screen->instance, GetVersionStringsMVK);
 
    if (vk_GetVersionStringsMVK) {
       char molten_version[64] = {0};
@@ -1739,13 +1739,13 @@ zink_screen_timeline_wait(struct zink_screen *screen, uint32_t batch_id, uint64_
 }
 
 static uint32_t
-zink_get_loader_version(void)
+zink_get_loader_version(struct zink_screen *screen)
 {
 
    uint32_t loader_version = VK_API_VERSION_1_0;
 
    // Get the Loader version
-   GET_PROC_ADDR_INSTANCE_LOCAL(NULL, EnumerateInstanceVersion);
+   GET_PROC_ADDR_INSTANCE_LOCAL(screen, NULL, EnumerateInstanceVersion);
    if (vk_EnumerateInstanceVersion) {
       uint32_t loader_version_temp = VK_API_VERSION_1_0;
       if (VK_SUCCESS == (*vk_EnumerateInstanceVersion)(&loader_version_temp)) {
@@ -2045,7 +2045,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config)
       abort();
    }
 
-   screen->instance_info.loader_version = zink_get_loader_version();
+   screen->instance_info.loader_version = zink_get_loader_version(screen);
+
 #if WITH_XMLCONFIG
    if (config) {
       driParseConfigFiles(config->options, config->options_info, 0, "zink",
diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h
index d6e8c994b4e..6eb5b904eba 100644
--- a/src/gallium/drivers/zink/zink_screen.h
+++ b/src/gallium/drivers/zink/zink_screen.h
@@ -265,7 +265,7 @@ zink_screen_timeline_wait(struct zink_screen *screen, uint32_t batch_id, uint64_
 bool
 zink_is_depth_format_supported(struct zink_screen *screen, VkFormat format);
 
-#define GET_PROC_ADDR_INSTANCE_LOCAL(instance, x) PFN_vk##x vk_##x = (PFN_vk##x)vkGetInstanceProcAddr(instance, "vk"#x)
+#define GET_PROC_ADDR_INSTANCE_LOCAL(screen, instance, x) PFN_vk##x vk_##x = (PFN_vk##x)vkGetInstanceProcAddr(instance, "vk"#x)
 
 void
 zink_screen_update_pipeline_cache(struct zink_screen *screen, struct zink_program *pg);



More information about the mesa-commit mailing list