@@ -324,89 +324,104 @@ Device::~Device() {
324324 }
325325}
326326
327+ void Device::set_debug_marker_name (void *object, VkDebugReportObjectTypeEXT object_type,
328+ const std::string &name) const {
327329#ifndef NDEBUG
328- void Device::set_object_name (std::uint64_t object, const VkDebugReportObjectTypeEXT type,
329- const std::string &name) const {
330+ if (!m_enable_vulkan_debug_markers) {
331+ return ;
332+ }
330333
331- if (m_enable_vulkan_debug_markers) {
332- assert (m_device);
333- assert (!name.empty ());
334- assert (object);
335- assert (m_vk_debug_marker_set_object_name);
334+ assert (object);
335+ assert (!name.empty ());
336+ assert (m_vk_debug_marker_set_object_name);
336337
337- auto name_info = make_info<VkDebugMarkerObjectNameInfoEXT>();
338- name_info.objectType = type ;
339- name_info.object = object;
340- name_info.pObjectName = name.c_str ();
338+ auto name_info = make_info<VkDebugMarkerObjectNameInfoEXT>();
339+ name_info.objectType = object_type ;
340+ name_info.object = reinterpret_cast <std:: uint64_t >( object) ;
341+ name_info.pObjectName = name.c_str ();
341342
342- if (m_vk_debug_marker_set_object_name (m_device, &name_info) != VK_SUCCESS) {
343- throw std::runtime_error (" Failed to assign Vulkan debug marker name to Vulkan resource " + name + " !" );
344- }
343+ if (m_vk_debug_marker_set_object_name (m_device, &name_info) != VK_SUCCESS) {
344+ throw std::runtime_error (" Failed to assign Vulkan debug marker name " + name + " !" );
345345 }
346+ #endif
346347}
347348
348- void Device::set_object_tag (const std::uint64_t object, const VkDebugReportObjectTypeEXT type, const std::uint64_t name,
349- const std::size_t tag_size, const void *tag) const {
350- if (m_enable_vulkan_debug_markers) {
351- assert (m_device);
352- assert (name);
353- assert (tag_size > 0 );
354- assert (tag);
355- assert (m_vk_debug_marker_set_object_tag);
349+ void Device::set_memory_block_attachment (void *object, VkDebugReportObjectTypeEXT object_type, const std::uint64_t name,
350+ const std::size_t memory_size, const void *memory_block) const {
351+ #ifndef NDEBUG
352+ if (!m_enable_vulkan_debug_markers) {
353+ return ;
354+ }
356355
357- auto tagInfo = make_info<VkDebugMarkerObjectTagInfoEXT>();
358- tagInfo.objectType = type;
359- tagInfo.object = object;
360- tagInfo.tagName = name;
361- tagInfo.tagSize = tag_size;
362- tagInfo.pTag = tag;
356+ assert (name);
357+ assert (memory_size > 0 );
358+ assert (memory_block);
359+ assert (m_vk_debug_marker_set_object_tag);
363360
364- if (m_vk_debug_marker_set_object_tag (m_device, &tagInfo) != VK_SUCCESS) {
365- throw std::runtime_error (" Failed to assign Vulkan debug marker data tag to Vulkan resource!" );
366- }
361+ auto tag_info = make_info<VkDebugMarkerObjectTagInfoEXT>();
362+ tag_info.object = reinterpret_cast <std::uint64_t >(object);
363+ tag_info.objectType = object_type;
364+ tag_info.tagName = name;
365+ tag_info.tagSize = memory_size;
366+ tag_info.pTag = memory_block;
367+
368+ if (m_vk_debug_marker_set_object_tag (m_device, &tag_info) != VK_SUCCESS) {
369+ throw std::runtime_error (" Failed to assign Vulkan debug marker memory block!" );
367370 }
371+ #endif
368372}
369373
370374void Device::bind_debug_region (const VkCommandBuffer command_buffer, const std::string &name,
371375 const std::array<float , 4 > color) const {
372- if (m_enable_vulkan_debug_markers) {
373- assert (command_buffer);
374- assert (!name. empty ()) ;
375- assert (m_vk_cmd_debug_marker_begin);
376+ # ifndef NDEBUG
377+ if (!m_enable_vulkan_debug_markers) {
378+ return ;
379+ }
376380
377- auto debug_marker = make_info<VkDebugMarkerMarkerInfoEXT>();
381+ assert (command_buffer);
382+ assert (!name.empty ());
383+ assert (m_vk_cmd_debug_marker_begin);
378384
379- std::copy (color. begin (), color. end (), debug_marker. color );
385+ auto debug_marker = make_info<VkDebugMarkerMarkerInfoEXT>( );
380386
381- debug_marker. pMarkerName = name. c_str ( );
387+ std::copy (color. begin (), color. end (), debug_marker. color );
382388
383- m_vk_cmd_debug_marker_begin (command_buffer, &debug_marker);
384- }
389+ debug_marker.pMarkerName = name.c_str ();
390+
391+ m_vk_cmd_debug_marker_begin (command_buffer, &debug_marker);
392+ #endif
385393}
386394
387395void Device::insert_debug_marker (const VkCommandBuffer command_buffer, const std::string &name,
388396 const std::array<float , 4 > color) const {
389- if (m_enable_vulkan_debug_markers) {
390- assert (command_buffer);
391- assert (!name. empty ()) ;
392- assert (m_vk_cmd_debug_marker_insert);
397+ # ifndef NDEBUG
398+ if (!m_enable_vulkan_debug_markers) {
399+ return ;
400+ }
393401
394- auto debug_marker = make_info<VkDebugMarkerMarkerInfoEXT>();
402+ assert (command_buffer);
403+ assert (!name.empty ());
404+ assert (m_vk_cmd_debug_marker_insert);
395405
396- std::copy (color. begin (), color. end (), debug_marker. color );
406+ auto debug_marker = make_info<VkDebugMarkerMarkerInfoEXT>( );
397407
398- debug_marker. pMarkerName = name. c_str ( );
408+ std::copy (color. begin (), color. end (), debug_marker. color );
399409
400- m_vk_cmd_debug_marker_insert (command_buffer, &debug_marker);
401- }
410+ debug_marker.pMarkerName = name.c_str ();
411+
412+ m_vk_cmd_debug_marker_insert (command_buffer, &debug_marker);
413+ #endif
402414}
403415
404416void Device::end_debug_region (const VkCommandBuffer command_buffer) const {
405- if (m_enable_vulkan_debug_markers) {
406- assert (m_vk_cmd_debug_marker_end);
407- m_vk_cmd_debug_marker_end (command_buffer) ;
417+ # ifndef NDEBUG
418+ if (!m_enable_vulkan_debug_markers) {
419+ return ;
408420 }
409- }
421+
422+ assert (m_vk_cmd_debug_marker_end);
423+ m_vk_cmd_debug_marker_end (command_buffer);
410424#endif
425+ }
411426
412427} // namespace inexor::vulkan_renderer::wrapper
0 commit comments