fix debug callback segfaulting in some situations
This commit is contained in:
parent
b0d96f26fe
commit
6c081177ac
115
vulkan_logging.d
115
vulkan_logging.d
@ -15,61 +15,68 @@ DebugCallback(
|
|||||||
{
|
{
|
||||||
string ms, mt;
|
string ms, mt;
|
||||||
|
|
||||||
const(char)[] msg = callback_data.pMessage[0 .. strlen(callback_data.pMessage)];
|
if (callback_data.pMessage != null)
|
||||||
bool debug_printf = strcmp(callback_data.pMessageIdName, "WARNING-DEBUG-PRINTF") == 0;
|
|
||||||
|
|
||||||
switch (message_severity) {
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT:
|
|
||||||
ms = "VERBOSE";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT:
|
|
||||||
ms = "INFO";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT:
|
|
||||||
ms = "WARNING";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
|
|
||||||
ms = "ERROR";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ms = "UNKNOWN";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (message_type) {
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
|
||||||
mt = "General";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT:
|
|
||||||
mt = "Validation";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
|
||||||
mt = "Validation | General";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
|
||||||
mt = "Performance";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
|
||||||
mt = "General | Performance";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
|
||||||
mt = "Validation | Performance";
|
|
||||||
break;
|
|
||||||
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
|
||||||
mt = "General | Validation | Performance";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
mt = "Unknown";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (debug_printf)
|
|
||||||
{
|
{
|
||||||
writefln("SHADER PRINT: %s", msg);
|
const(char)[] msg = callback_data.pMessage[0 .. strlen(callback_data.pMessage)];
|
||||||
}
|
bool debug_printf = false;
|
||||||
else
|
if (callback_data.pMessageIdName != null)
|
||||||
{
|
{
|
||||||
writefln("[%s: %s]\n%r\n", ms, mt, msg);
|
debug_printf = (strcmp(callback_data.pMessageIdName, "WARNING-DEBUG-PRINTF") == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (message_severity) {
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT:
|
||||||
|
ms = "VERBOSE";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT:
|
||||||
|
ms = "INFO";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT:
|
||||||
|
ms = "WARNING";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
|
||||||
|
ms = "ERROR";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ms = "UNKNOWN";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (message_type) {
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
||||||
|
mt = "General";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT:
|
||||||
|
mt = "Validation";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
||||||
|
mt = "Validation | General";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
||||||
|
mt = "Performance";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
||||||
|
mt = "General | Performance";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT:
|
||||||
|
mt = "Validation | Performance";
|
||||||
|
break;
|
||||||
|
case VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT:
|
||||||
|
mt = "General | Validation | Performance";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mt = "Unknown";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debug_printf)
|
||||||
|
{
|
||||||
|
writefln("SHADER PRINT: %s", msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writefln("[%s: %s]\n%r 12345", ms, mt, msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return VK_FALSE;
|
return VK_FALSE;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user