From c412073c235a1b25210a213d92f628092da3a3e4 Mon Sep 17 00:00:00 2001 From: firewire Date: Sun, 12 Apr 2026 22:48:03 -0400 Subject: [PATCH] ctx - Debug messenger --- oatmeal/src/ctx_instance.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/oatmeal/src/ctx_instance.cpp b/oatmeal/src/ctx_instance.cpp index 1423786..00feb50 100644 --- a/oatmeal/src/ctx_instance.cpp +++ b/oatmeal/src/ctx_instance.cpp @@ -1,7 +1,9 @@ #include #include #include +#include #include +#include #include #include "ctx.h" #include "vulkan/vulkan.hpp" @@ -80,4 +82,34 @@ namespace Oatmeal { return extensions; } + static VKAPI_ATTR vk::Bool32 VKAPI_CALL debugCallback(vk::DebugUtilsMessageSeverityFlagBitsEXT severity, + vk::DebugUtilsMessageTypeFlagsEXT type, + const vk::DebugUtilsMessengerCallbackDataEXT *pCallbackData, + void *) { + std::cerr << "Validation layer: type " << vk::to_string(type) << "msg: " << pCallbackData->pMessage + << std::endl; + return 0; + } + + void ctx::setupDebugMessenger() { + if (!enableValidationLayers) { + return; + } + + vk::DebugUtilsMessageSeverityFlagsEXT severityFlags(vk::DebugUtilsMessageSeverityFlagBitsEXT::eWarning | + vk::DebugUtilsMessageSeverityFlagBitsEXT::eError); + + vk::DebugUtilsMessageTypeFlagsEXT typeFlags(vk::DebugUtilsMessageTypeFlagBitsEXT::eGeneral | + vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation | + vk::DebugUtilsMessageTypeFlagBitsEXT::ePerformance); + + vk::DebugUtilsMessengerCreateInfoEXT createInfo{ + .messageSeverity = severityFlags, + .messageType = typeFlags, + .pfnUserCallback = &debugCallback, + }; + + m_debugMessenger = m_instance.createDebugUtilsMessengerEXT(createInfo); + } + } // namespace Oatmeal