42 if (result && title) {
43 renderdoc_api_.set_frame_capture_title(title);
73 const char *title = (
const char *)scope;
87 const char *title = (
const char *)scope;
100void VKDebuggingTools::init(VkInstance vk_instance)
103 init_messenger(vk_instance);
106void VKDebuggingTools::deinit(VkInstance vk_instance)
108 destroy_messenger(vk_instance);
113 const VKDevice &device = VKBackend::get().device;
115 VkDebugUtilsObjectNameInfoEXT info = {};
116 info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
117 info.objectType = vk_object_type;
118 info.objectHandle = object_handle;
119 info.pObjectName = name;
128void VKDebuggingTools::print_labels(
const VkDebugUtilsMessengerCallbackDataEXT *callback_data)
130 std::stringstream ss;
131 for (
uint32_t object = 0;
object < callback_data->objectCount; ++object) {
132 ss <<
" - ObjectType[" <<
to_string(callback_data->pObjects[
object].objectType) <<
"],";
133 ss <<
"Handle[0x" << std::hex <<
uintptr_t(callback_data->pObjects[
object].objectHandle)
135 if (callback_data->pObjects[
object].pObjectName) {
136 ss <<
",Name[" << callback_data->pObjects[object].pObjectName <<
"]";
141 if (callback_data->pCmdBufLabels[
label].pLabelName) {
142 ss <<
" - CommandBuffer : " << callback_data->pCmdBufLabels[
label].pLabelName << std::endl;
146 if (callback_data->pQueueLabels[
label].pLabelName) {
147 ss <<
" - Queue : " << callback_data->pQueueLabels[
label].pLabelName << std::endl;
151 printf(
"%s", ss.str().c_str());
154static VKAPI_ATTR VkBool32 VKAPI_CALL
156 VkDebugUtilsMessageTypeFlagsEXT ,
157 const VkDebugUtilsMessengerCallbackDataEXT *callback_data,
162 if (message_severity & (VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT |
163 VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT))
167 if (message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
170 if (message_severity & VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT) {
175 const char *
format =
"{0x%x}% s\n %s ";
181 callback_data->messageIdNumber,
182 callback_data->pMessageIdName,
183 callback_data->pMessage);
186 const bool do_labels = (callback_data->objectCount + callback_data->cmdBufLabelCount +
187 callback_data->queueLabelCount) > 0;
196void VKDebuggingTools::init_messenger(VkInstance vk_instance)
198 if (vk_debug_utils_messenger) {
202 VKDevice &device = VKBackend::get().device;
207 VkDebugUtilsMessengerCreateInfoEXT create_info;
208 create_info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
209 create_info.pNext =
nullptr;
210 create_info.flags = 0;
211 create_info.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT |
212 VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT |
213 VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT |
214 VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
215 create_info.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
216 VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
217 VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
219 create_info.pUserData =
this;
221 vk_instance, &create_info,
nullptr, &vk_debug_utils_messenger);
225void VKDebuggingTools::destroy_messenger(VkInstance vk_instance)
227 if (vk_debug_utils_messenger ==
nullptr) {
231 VKDevice &device = VKBackend::get().device;
233 vk_debug_utils_messenger =
nullptr;
void void CLG_logf(const CLG_LogType *lg, enum CLG_Severity severity, const char *file_line, const char *fn, const char *format,...) _CLOG_ATTR_NONNULL(1
void CLG_logref_init(CLG_LogRef *clg_ref)
bool debug_capture_begin(const char *title)
void debug_group_begin(const char *, int) override
void debug_group_end() override
render_graph::VKRenderGraph render_graph
bool debug_capture_scope_begin(void *scope) override
void * debug_capture_scope_create(const char *name) override
bool debug_capture_begin(const char *title) override
void flush_render_graph()
void debug_capture_end() override
void debug_capture_scope_end(void *scope) override
PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectName
VkDevice vk_handle() const
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessenger
VkInstance instance_get() const
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessenger
struct blender::gpu::VKDevice::@670 functions
void debug_group_begin(const char *name)
static const char * to_string(const Interpolation &interp)
static VKAPI_ATTR VkBool32 VKAPI_CALL messenger_callback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity, VkDebugUtilsMessageTypeFlagsEXT, const VkDebugUtilsMessengerCallbackDataEXT *callback_data, void *user_data)
void object_label(GLenum type, GLuint object, const char *name)
_W64 unsigned int uintptr_t
unsigned __int64 uint64_t