mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
vulkan/runtime: allow drivers to enable vk_log output in release builds
In non-debug builds, __vk_log_impl() silently drops all messages due to two compile/link-time gates: an early return when no debug callbacks are registered, and the MESA_VK_LOG=0 guard around the mesa_log*() calls. Add vk_instance::enable_debug_logging so drivers can opt in to log output at runtime. When set, both gates are bypassed. No functional change without a driver setting the flag. Signed-off-by: Michael Cheng <michael.cheng@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40551>
This commit is contained in:
parent
1e04e7ee74
commit
7d787ba8c6
2 changed files with 34 additions and 22 deletions
|
|
@ -110,6 +110,14 @@ struct vk_instance {
|
|||
/** Instance-level dispatch table */
|
||||
struct vk_instance_dispatch_table dispatch_table;
|
||||
|
||||
/** Driver-set flag to enable debug logging in release builds
|
||||
*
|
||||
* When set to true, vk_log messages will not be skipped in non-debug
|
||||
* builds even when no debug_utils or debug_report callbacks are registered.
|
||||
* Drivers should set this based on their own debug environment variables.
|
||||
*/
|
||||
bool enable_debug_logging;
|
||||
|
||||
/* VK_EXT_debug_report debug callbacks */
|
||||
struct vk_debug_report debug_report;
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,8 @@ __vk_log_impl(VkDebugUtilsMessageSeverityFlagBitsEXT severity,
|
|||
|
||||
#if !MESA_DEBUG
|
||||
if (unlikely(!instance) ||
|
||||
(likely(list_is_empty(&instance->debug_utils.callbacks)) &&
|
||||
(likely(!instance->enable_debug_logging) &&
|
||||
likely(list_is_empty(&instance->debug_utils.callbacks)) &&
|
||||
likely(list_is_empty(&instance->debug_report.callbacks))))
|
||||
return;
|
||||
#endif
|
||||
|
|
@ -127,26 +128,30 @@ __vk_log_impl(VkDebugUtilsMessageSeverityFlagBitsEXT severity,
|
|||
|
||||
char *message_idname = ralloc_asprintf(NULL, "%s:%d", file, line);
|
||||
|
||||
#if MESA_VK_LOG
|
||||
switch (severity) {
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT:
|
||||
mesa_logd("%s: %s", message_idname, message);
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT:
|
||||
mesa_logi("%s: %s", message_idname, message);
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT:
|
||||
if (types & VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)
|
||||
mesa_logw("%s: PERF: %s", message_idname, message);
|
||||
else
|
||||
mesa_logw("%s: %s", message_idname, message);
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
|
||||
mesa_loge("%s: %s", message_idname, message);
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE("Invalid debug message severity");
|
||||
break;
|
||||
const bool do_log = MESA_VK_LOG ||
|
||||
(instance && instance->enable_debug_logging);
|
||||
|
||||
if (do_log) {
|
||||
switch (severity) {
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT:
|
||||
mesa_logd("%s: %s", message_idname, message);
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT:
|
||||
mesa_logi("%s: %s", message_idname, message);
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT:
|
||||
if (types & VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)
|
||||
mesa_logw("%s: PERF: %s", message_idname, message);
|
||||
else
|
||||
mesa_logw("%s: %s", message_idname, message);
|
||||
break;
|
||||
case VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT:
|
||||
mesa_loge("%s: %s", message_idname, message);
|
||||
break;
|
||||
default:
|
||||
UNREACHABLE("Invalid debug message severity");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!instance) {
|
||||
|
|
@ -154,7 +159,6 @@ __vk_log_impl(VkDebugUtilsMessageSeverityFlagBitsEXT severity,
|
|||
ralloc_free(message_idname);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!instance->base.client_visible) {
|
||||
vk_debug_message_instance(instance, severity, types,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue