From 72ece9dddfd1cbb7ec749fd6ab61ce22d0b89118 Mon Sep 17 00:00:00 2001 From: khyperia <953151+khyperia@users.noreply.github.com> Date: Tue, 23 Dec 2025 09:40:57 +0100 Subject: [PATCH] render/vulkan: put vulkan debug logs on WLR_DEBUG Previously, VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT was commented out. Instead, subscribe to vulkan message severity based on wlr_log_get_verbosity. This allows vulkan validation layer messages to be printed, instead of being completely swallowed no matter what. --- render/vulkan/renderer.c | 2 +- render/vulkan/vulkan.c | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/render/vulkan/renderer.c b/render/vulkan/renderer.c index 0b411f5dd..b03d21273 100644 --- a/render/vulkan/renderer.c +++ b/render/vulkan/renderer.c @@ -2570,7 +2570,7 @@ struct wlr_renderer *wlr_vk_renderer_create_with_drm_fd(int drm_fd) { wlr_log(WLR_INFO, "The vulkan renderer is only experimental and " "not expected to be ready for daily use"); wlr_log(WLR_INFO, "Run with VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation " - "to enable the validation layer"); + "and a log level of WLR_DEBUG to enable the validation layer"); struct wlr_vk_instance *ini = vulkan_instance_create(default_debug); if (!ini) { diff --git a/render/vulkan/vulkan.c b/render/vulkan/vulkan.c index 78bc25941..20fdf2e4a 100644 --- a/render/vulkan/vulkan.c +++ b/render/vulkan/vulkan.c @@ -60,6 +60,9 @@ static VKAPI_ATTR VkBool32 debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT: importance = WLR_INFO; break; + case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT: + importance = WLR_DEBUG; + break; } wlr_log(importance, "%s (%s)", debug_data->pMessage, @@ -152,15 +155,24 @@ struct wlr_vk_instance *vulkan_instance_create(bool debug) { .ppEnabledLayerNames = NULL, }; - VkDebugUtilsMessageSeverityFlagsEXT severity = - // VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; + VkDebugUtilsMessageSeverityFlagsEXT severity = 0; VkDebugUtilsMessageTypeFlagsEXT types = - // VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT; + enum wlr_log_importance verbosity = wlr_log_get_verbosity(); + if (verbosity >= WLR_DEBUG) { + severity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT; + } + if (verbosity >= WLR_INFO) { + severity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT; + types |= VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT; + } + if (verbosity >= WLR_ERROR) { + severity |= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; + } + VkDebugUtilsMessengerCreateInfoEXT debug_info = { .sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, .messageSeverity = severity,