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@gmail.com>
Acked-by: Hoe Hao Cheng <haochengho12907@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11554>
This commit is contained in:
Erik Faye-Lund
2021-06-23 09:46:15 +02:00
parent 95cbb560cf
commit ccb9f8670e
2 changed files with 13 additions and 27 deletions

View File

@@ -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

View File

@@ -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