mirror of https://github.com/xemu-project/xemu.git
nv2a/vk: Fix renderer debug messenger registration
This commit is contained in:
parent
3f0a7e514d
commit
f35d489203
|
@ -60,7 +60,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(
|
||||||
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
VkDebugUtilsMessageTypeFlagsEXT messageType,
|
||||||
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData)
|
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData)
|
||||||
{
|
{
|
||||||
NV2A_VK_DPRINTF("[vk] %s", pCallbackData->pMessage);
|
|
||||||
fprintf(stderr, "[vk] %s\n", pCallbackData->pMessage);
|
fprintf(stderr, "[vk] %s\n", pCallbackData->pMessage);
|
||||||
|
|
||||||
if ((messageType & VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT) &&
|
if ((messageType & VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT) &&
|
||||||
|
@ -270,20 +269,6 @@ static bool create_instance(PGRAPHState *pg, Error **errp)
|
||||||
&g_array_index(enabled_extension_names, const char *, 0),
|
&g_array_index(enabled_extension_names, const char *, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
VkDebugUtilsMessengerCreateInfoEXT dbg_create_info;
|
|
||||||
if (r->debug_utils_extension_enabled) {
|
|
||||||
dbg_create_info = (VkDebugUtilsMessengerCreateInfoEXT){
|
|
||||||
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
|
|
||||||
.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT |
|
|
||||||
VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT |
|
|
||||||
VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,
|
|
||||||
.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
|
|
||||||
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
|
|
||||||
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,
|
|
||||||
.pfnUserCallback = debugCallback,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
enable_validation = g_config.display.vulkan.validation_layers;
|
enable_validation = g_config.display.vulkan.validation_layers;
|
||||||
|
|
||||||
if (enable_validation) {
|
if (enable_validation) {
|
||||||
|
@ -292,10 +277,6 @@ static bool create_instance(PGRAPHState *pg, Error **errp)
|
||||||
"performance impact.\n");
|
"performance impact.\n");
|
||||||
create_info.enabledLayerCount = ARRAY_SIZE(validation_layers);
|
create_info.enabledLayerCount = ARRAY_SIZE(validation_layers);
|
||||||
create_info.ppEnabledLayerNames = validation_layers;
|
create_info.ppEnabledLayerNames = validation_layers;
|
||||||
if (r->debug_utils_extension_enabled) {
|
|
||||||
create_info.pNext =
|
|
||||||
(VkDebugUtilsMessengerCreateInfoEXT *)&dbg_create_info;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Warning: validation layers not available\n");
|
fprintf(stderr, "Warning: validation layers not available\n");
|
||||||
enable_validation = false;
|
enable_validation = false;
|
||||||
|
@ -309,6 +290,22 @@ static bool create_instance(PGRAPHState *pg, Error **errp)
|
||||||
}
|
}
|
||||||
|
|
||||||
volkLoadInstance(r->instance);
|
volkLoadInstance(r->instance);
|
||||||
|
|
||||||
|
if (r->debug_utils_extension_enabled) {
|
||||||
|
VkDebugUtilsMessengerCreateInfoEXT messenger_info = {
|
||||||
|
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
|
||||||
|
.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT |
|
||||||
|
VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT |
|
||||||
|
VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,
|
||||||
|
.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
|
||||||
|
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
|
||||||
|
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,
|
||||||
|
.pfnUserCallback = debugCallback,
|
||||||
|
};
|
||||||
|
VK_CHECK(vkCreateDebugUtilsMessengerEXT(r->instance, &messenger_info,
|
||||||
|
NULL, &r->debug_messenger));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -718,6 +715,11 @@ void pgraph_vk_finalize_instance(PGRAPHState *pg)
|
||||||
r->device = VK_NULL_HANDLE;
|
r->device = VK_NULL_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (r->debug_messenger != VK_NULL_HANDLE) {
|
||||||
|
vkDestroyDebugUtilsMessengerEXT(r->instance, r->debug_messenger, NULL);
|
||||||
|
r->debug_messenger = VK_NULL_HANDLE;
|
||||||
|
}
|
||||||
|
|
||||||
if (r->instance != VK_NULL_HANDLE) {
|
if (r->instance != VK_NULL_HANDLE) {
|
||||||
vkDestroyInstance(r->instance, NULL);
|
vkDestroyInstance(r->instance, NULL);
|
||||||
r->instance = VK_NULL_HANDLE;
|
r->instance = VK_NULL_HANDLE;
|
||||||
|
|
|
@ -271,6 +271,7 @@ typedef struct PGRAPHVkComputeState {
|
||||||
typedef struct PGRAPHVkState {
|
typedef struct PGRAPHVkState {
|
||||||
void *window;
|
void *window;
|
||||||
VkInstance instance;
|
VkInstance instance;
|
||||||
|
VkDebugUtilsMessengerEXT debug_messenger;
|
||||||
|
|
||||||
bool debug_utils_extension_enabled;
|
bool debug_utils_extension_enabled;
|
||||||
bool custom_border_color_extension_enabled;
|
bool custom_border_color_extension_enabled;
|
||||||
|
|
Loading…
Reference in New Issue