Mesa (main): zink: do not store moltenvk functions in screen
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jun 24 09:29:22 UTC 2021
Module: Mesa
Branch: main
Commit: ccb9f8670e7d8c0e33d3fcb9857a2b3eac5a47ec
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ccb9f8670e7d8c0e33d3fcb9857a2b3eac5a47ec
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Wed Jun 23 09:46:15 2021 +0200
zink: do not store moltenvk functions in screen
These functions are only used once anyway, no need to store them and
make the rest of Zink care.
Acked-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Acked-by: Hoe Hao Cheng <haochengho12907 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11554>
---
src/gallium/drivers/zink/zink_screen.c | 21 +++++++++++++--------
src/gallium/drivers/zink/zink_screen.h | 19 -------------------
2 files changed, 13 insertions(+), 27 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index b4b4917adff..c025bc746e5 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -51,6 +51,11 @@
#include "frontend/sw_winsys.h"
+#if defined(__APPLE__)
+// Source of MVK_VERSION
+#include "MoltenVK/vk_mvk_moltenvk.h"
+#endif
+
static const struct debug_named_value
zink_debug_options[] = {
{ "nir", ZINK_DEBUG_NIR, "Dump NIR during program compile" },
@@ -1354,29 +1359,29 @@ zink_internal_setup_moltenvk(struct zink_screen *screen)
if (!screen->instance_info.have_MVK_moltenvk)
return true;
- GET_PROC_ADDR_INSTANCE(GetMoltenVKConfigurationMVK);
- GET_PROC_ADDR_INSTANCE(SetMoltenVKConfigurationMVK);
- GET_PROC_ADDR_INSTANCE(GetVersionStringsMVK);
+ GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, GetMoltenVKConfigurationMVK);
+ GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, SetMoltenVKConfigurationMVK);
+ GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, GetVersionStringsMVK);
- if (screen->vk_GetVersionStringsMVK) {
+ if (vk_GetVersionStringsMVK) {
char molten_version[64] = {0};
char vulkan_version[64] = {0};
- (*screen->vk_GetVersionStringsMVK)(molten_version, sizeof(molten_version) - 1, vulkan_version, sizeof(vulkan_version) - 1);
+ vk_GetVersionStringsMVK(molten_version, sizeof(molten_version) - 1, vulkan_version, sizeof(vulkan_version) - 1);
printf("zink: MoltenVK %s Vulkan %s \n", molten_version, vulkan_version);
}
- if (screen->vk_GetMoltenVKConfigurationMVK && screen->vk_SetMoltenVKConfigurationMVK) {
+ if (vk_GetMoltenVKConfigurationMVK && vk_SetMoltenVKConfigurationMVK) {
MVKConfiguration molten_config = {0};
size_t molten_config_size = sizeof(molten_config);
- VkResult res = (*screen->vk_GetMoltenVKConfigurationMVK)(screen->instance, &molten_config, &molten_config_size);
+ VkResult res = vk_GetMoltenVKConfigurationMVK(screen->instance, &molten_config, &molten_config_size);
if (res == VK_SUCCESS || res == VK_INCOMPLETE) {
// Needed to allow MoltenVK to accept VkImageView swizzles.
// Encountered when using VK_FORMAT_R8G8_UNORM
molten_config.fullImageViewSwizzle = VK_TRUE;
- (*screen->vk_SetMoltenVKConfigurationMVK)(screen->instance, &molten_config, &molten_config_size);
+ vk_SetMoltenVKConfigurationMVK(screen->instance, &molten_config, &molten_config_size);
}
}
#endif // MVK_VERSION
diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h
index 7c570414582..ef786898b35 100644
--- a/src/gallium/drivers/zink/zink_screen.h
+++ b/src/gallium/drivers/zink/zink_screen.h
@@ -40,11 +40,6 @@
#include <vulkan/vulkan.h>
-#if defined(__APPLE__)
-// Source of MVK_VERSION
-#include "MoltenVK/vk_mvk_moltenvk.h"
-#endif
-
extern uint32_t zink_debug;
struct hash_table;
@@ -144,12 +139,6 @@ struct zink_screen {
void (*descriptors_deinit)(struct zink_context *ctx);
enum zink_descriptor_mode descriptor_mode;
-#if defined(MVK_VERSION)
- PFN_vkGetMoltenVKConfigurationMVK vk_GetMoltenVKConfigurationMVK;
- PFN_vkSetMoltenVKConfigurationMVK vk_SetMoltenVKConfigurationMVK;
- PFN_vkGetVersionStringsMVK vk_GetVersionStringsMVK;
-#endif
-
struct {
bool dual_color_blend_by_location;
bool inline_uniforms;
@@ -241,14 +230,6 @@ 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(x) do { \
- screen->vk_##x = (PFN_vk##x)vkGetInstanceProcAddr(screen->instance, "vk"#x); \
- if (!screen->vk_##x) { \
- mesa_loge("ZINK: GetInstanceProcAddr failed: vk"#x"\n"); \
- return false; \
- } \
- } while (0)
-
#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