Last active
December 19, 2021 20:02
-
-
Save xenobrain/67e7fc0ad38edb5390a4350f489c6ae4 to your computer and use it in GitHub Desktop.
SDL_LOG macros and vk::DebugUtilsMessengerCreateInfo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define LOG_INFO(fmt, ...) do { SDL_LogInfo (SDL_LOG_CATEGORY_APPLICATION, "%s:%d \n\t%s()\n\t\t" fmt, __FILE__, __LINE__, __func__, __VA_ARGS__); } while (0) | |
#define LOG_WARN(fmt, ...) do { SDL_LogWarn (SDL_LOG_CATEGORY_APPLICATION, "%s:%d \n\t%s()\n\t\t" fmt, __FILE__, __LINE__, __func__, __VA_ARGS__); } while (0) | |
#define LOG_ERROR(fmt, ...) do { char message[120]; snprintf(message, 120, "%s:%d \n\t%s()\n\t\t" fmt, __FILE__, __LINE__, __func__, __VA_ARGS__); if (SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error", message, nullptr) < 0) SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s:%d \n\t%s()\n\t\t" fmt, __FILE__, __LINE__, __func__, __VA_ARGS__); } while (0) | |
#define LOG_VERBOSE(fmt, ...) do { SDL_LogVerbose(SDL_LOG_CATEGORY_APPLICATION, "%s:%d \n\t%s()\n\t\t" fmt, __FILE__, __LINE__, __func__, __VA_ARGS__); } while (0) | |
auto static default_debug_utils_messenger() -> vk::DebugUtilsMessengerCreateInfoEXT{ | |
return vk::DebugUtilsMessengerCreateInfoEXT{ | |
vk::DebugUtilsMessengerCreateFlagsEXT{}, | |
vk::DebugUtilsMessageSeverityFlagsEXT{ | |
vk::DebugUtilsMessageSeverityFlagBitsEXT::eError | | |
vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning | |
}, | |
vk::DebugUtilsMessageTypeFlagsEXT{ | |
vk::DebugUtilsMessageTypeFlagBitsEXT::eGeneral | | |
vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation | | |
vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance | |
}, | |
[](auto const message_severity, auto const message_type, auto const* data, auto*) { | |
auto message = std::stringstream{}; | |
message << vk::to_string(static_cast<vk::DebugUtilsMessageSeverityFlagBitsEXT>(message_severity)) << ": " | |
<< vk::to_string(static_cast<vk::DebugUtilsMessageTypeFlagsEXT>(message_type)) << ":\n" | |
<< "\tmessageIDName = <" << data->pMessageIdName << ">\n" | |
<< "\tmessageIdNumber = " << data->messageIdNumber << "\n" | |
<< "\tmessage = <" << data->pMessage << ">\n"; | |
if (data->queueLabelCount > 0) { | |
message << "\tQueue Labels:\n"; | |
for (auto i {std::uint8_t{}}; i < data->queueLabelCount; ++i) | |
message << "\t\tlabelName = <" << data->pQueueLabels[i].pLabelName << ">\n"; | |
} | |
if (data->cmdBufLabelCount > 0) { | |
message << "\tCommandBuffer Labels:\n"; | |
for (auto i {std::uint8_t{}}; i < data->cmdBufLabelCount; ++i) | |
message << "\t\tlabelName = <" << data->pCmdBufLabels[i].pLabelName << ">\n"; | |
} | |
if (data->objectCount > 0) { | |
message << "\tObjects:\n"; | |
for (auto i {std::uint8_t{}}; i < data->objectCount; ++i) { | |
message << "\t\tObject " << i << "\n" | |
<< "\t\t\tobjectType = " | |
<< vk::to_string( static_cast<vk::ObjectType>(data->pObjects[i].objectType ) ) << "\n" | |
<< "\t\t\tobjectHandle = " << data->pObjects[i].objectHandle << "\n"; | |
if (data->pObjects[i].pObjectName) | |
message << "\t\t\tobjectName = <" << data->pObjects[i].pObjectName << ">\n"; | |
} | |
} | |
switch (static_cast<vk::DebugUtilsMessageSeverityFlagBitsEXT>(message_severity)) { | |
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eInfo: LOG_INFO("%s", message.str().c_str()); | |
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eError: LOG_ERROR("%s", message.str().c_str()); | |
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning: LOG_WARN("%s", message.str().c_str()); | |
case vk::DebugUtilsMessageSeverityFlagBitsEXT::eVerbose: LOG_VERBOSE("%s", message.str().c_str()); | |
} | |
return vk::Bool32{false}; | |
} | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment