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"
|
#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
|
static const struct debug_named_value
|
||||||
zink_debug_options[] = {
|
zink_debug_options[] = {
|
||||||
{ "nir", ZINK_DEBUG_NIR, "Dump NIR during program compile" },
|
{ "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)
|
if (!screen->instance_info.have_MVK_moltenvk)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
GET_PROC_ADDR_INSTANCE(GetMoltenVKConfigurationMVK);
|
GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, GetMoltenVKConfigurationMVK);
|
||||||
GET_PROC_ADDR_INSTANCE(SetMoltenVKConfigurationMVK);
|
GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, SetMoltenVKConfigurationMVK);
|
||||||
GET_PROC_ADDR_INSTANCE(GetVersionStringsMVK);
|
GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, GetVersionStringsMVK);
|
||||||
|
|
||||||
if (screen->vk_GetVersionStringsMVK) {
|
if (vk_GetVersionStringsMVK) {
|
||||||
char molten_version[64] = {0};
|
char molten_version[64] = {0};
|
||||||
char vulkan_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);
|
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};
|
MVKConfiguration molten_config = {0};
|
||||||
size_t molten_config_size = sizeof(molten_config);
|
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) {
|
if (res == VK_SUCCESS || res == VK_INCOMPLETE) {
|
||||||
// Needed to allow MoltenVK to accept VkImageView swizzles.
|
// Needed to allow MoltenVK to accept VkImageView swizzles.
|
||||||
// Encountered when using VK_FORMAT_R8G8_UNORM
|
// Encountered when using VK_FORMAT_R8G8_UNORM
|
||||||
molten_config.fullImageViewSwizzle = VK_TRUE;
|
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
|
#endif // MVK_VERSION
|
||||||
|
@@ -40,11 +40,6 @@
|
|||||||
|
|
||||||
#include <vulkan/vulkan.h>
|
#include <vulkan/vulkan.h>
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
|
||||||
// Source of MVK_VERSION
|
|
||||||
#include "MoltenVK/vk_mvk_moltenvk.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern uint32_t zink_debug;
|
extern uint32_t zink_debug;
|
||||||
struct hash_table;
|
struct hash_table;
|
||||||
|
|
||||||
@@ -144,12 +139,6 @@ struct zink_screen {
|
|||||||
void (*descriptors_deinit)(struct zink_context *ctx);
|
void (*descriptors_deinit)(struct zink_context *ctx);
|
||||||
enum zink_descriptor_mode descriptor_mode;
|
enum zink_descriptor_mode descriptor_mode;
|
||||||
|
|
||||||
#if defined(MVK_VERSION)
|
|
||||||
PFN_vkGetMoltenVKConfigurationMVK vk_GetMoltenVKConfigurationMVK;
|
|
||||||
PFN_vkSetMoltenVKConfigurationMVK vk_SetMoltenVKConfigurationMVK;
|
|
||||||
PFN_vkGetVersionStringsMVK vk_GetVersionStringsMVK;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
bool dual_color_blend_by_location;
|
bool dual_color_blend_by_location;
|
||||||
bool inline_uniforms;
|
bool inline_uniforms;
|
||||||
@@ -241,14 +230,6 @@ zink_screen_timeline_wait(struct zink_screen *screen, uint32_t batch_id, uint64_
|
|||||||
bool
|
bool
|
||||||
zink_is_depth_format_supported(struct zink_screen *screen, VkFormat format);
|
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)
|
#define GET_PROC_ADDR_INSTANCE_LOCAL(instance, x) PFN_vk##x vk_##x = (PFN_vk##x)vkGetInstanceProcAddr(instance, "vk"#x)
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Reference in New Issue
Block a user