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:
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user