mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-22 10:42:36 +01:00
vk: Add support for tagging objects to ease debugging
- Makes use of VK_EXT_debug_utils
This commit is contained in:
parent
8b0e1d6c03
commit
1d9dd8d29d
@ -120,6 +120,7 @@ namespace rsx
|
|||||||
usage_flags,
|
usage_flags,
|
||||||
0, RSX_FORMAT_CLASS_COLOR);
|
0, RSX_FORMAT_CLASS_COLOR);
|
||||||
|
|
||||||
|
rtt->set_debug_name(fmt::format("RTV @0x%x", address));
|
||||||
rtt->change_layout(cmd, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
|
rtt->change_layout(cmd, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
|
||||||
|
|
||||||
rtt->set_format(format);
|
rtt->set_format(format);
|
||||||
@ -180,6 +181,7 @@ namespace rsx
|
|||||||
usage_flags,
|
usage_flags,
|
||||||
0, rsx::classify_format(format));
|
0, rsx::classify_format(format));
|
||||||
|
|
||||||
|
ds->set_debug_name(fmt::format("DSV @0x%x", address));
|
||||||
ds->change_layout(cmd, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
|
ds->change_layout(cmd, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
|
||||||
|
|
||||||
ds->set_format(format);
|
ds->set_format(format);
|
||||||
|
@ -927,6 +927,8 @@ namespace vk
|
|||||||
rsx::texture_create_flags::default_component_order);
|
rsx::texture_create_flags::default_component_order);
|
||||||
|
|
||||||
auto image = section->get_raw_texture();
|
auto image = section->get_raw_texture();
|
||||||
|
image->set_debug_name(fmt::format("Raw Texture @0x%x", rsx_range.start));
|
||||||
|
|
||||||
vk::enter_uninterruptible();
|
vk::enter_uninterruptible();
|
||||||
|
|
||||||
bool input_swizzled = swizzled;
|
bool input_swizzled = swizzled;
|
||||||
|
@ -58,6 +58,7 @@ namespace vk
|
|||||||
conditional_render_support = device_extensions.is_supported(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME);
|
conditional_render_support = device_extensions.is_supported(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME);
|
||||||
external_memory_host_support = device_extensions.is_supported(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME);
|
external_memory_host_support = device_extensions.is_supported(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME);
|
||||||
unrestricted_depth_range_support = device_extensions.is_supported(VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME);
|
unrestricted_depth_range_support = device_extensions.is_supported(VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME);
|
||||||
|
debug_utils_support = instance_extensions.is_supported(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
||||||
surface_capabilities_2_support = instance_extensions.is_supported(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
surface_capabilities_2_support = instance_extensions.is_supported(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,6 +438,11 @@ namespace vk
|
|||||||
_vkCmdEndConditionalRenderingEXT = reinterpret_cast<PFN_vkCmdEndConditionalRenderingEXT>(vkGetDeviceProcAddr(dev, "vkCmdEndConditionalRenderingEXT"));
|
_vkCmdEndConditionalRenderingEXT = reinterpret_cast<PFN_vkCmdEndConditionalRenderingEXT>(vkGetDeviceProcAddr(dev, "vkCmdEndConditionalRenderingEXT"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pgpu->debug_utils_support)
|
||||||
|
{
|
||||||
|
_vkSetDebugUtilsObjectNameEXT = reinterpret_cast<PFN_vkSetDebugUtilsObjectNameEXT>(vkGetDeviceProcAddr(dev, "vkSetDebugUtilsObjectNameEXT"));
|
||||||
|
}
|
||||||
|
|
||||||
memory_map = vk::get_memory_mapping(pdev);
|
memory_map = vk::get_memory_mapping(pdev);
|
||||||
m_formats_support = vk::get_optimal_tiling_supported_formats(pdev);
|
m_formats_support = vk::get_optimal_tiling_supported_formats(pdev);
|
||||||
m_pipeline_binding_table = vk::get_pipeline_binding_table(pdev);
|
m_pipeline_binding_table = vk::get_pipeline_binding_table(pdev);
|
||||||
@ -597,6 +603,11 @@ namespace vk
|
|||||||
return pgpu->surface_capabilities_2_support;
|
return pgpu->surface_capabilities_2_support;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool render_device::get_debug_utils_support() const
|
||||||
|
{
|
||||||
|
return g_cfg.video.renderdoc_compatiblity && pgpu->debug_utils_support;
|
||||||
|
}
|
||||||
|
|
||||||
mem_allocator_base* render_device::get_allocator() const
|
mem_allocator_base* render_device::get_allocator() const
|
||||||
{
|
{
|
||||||
return m_allocator.get();
|
return m_allocator.get();
|
||||||
|
@ -52,6 +52,7 @@ namespace vk
|
|||||||
bool external_memory_host_support = false;
|
bool external_memory_host_support = false;
|
||||||
bool unrestricted_depth_range_support = false;
|
bool unrestricted_depth_range_support = false;
|
||||||
bool surface_capabilities_2_support = false;
|
bool surface_capabilities_2_support = false;
|
||||||
|
bool debug_utils_support = false;
|
||||||
|
|
||||||
friend class render_device;
|
friend class render_device;
|
||||||
private:
|
private:
|
||||||
@ -101,6 +102,7 @@ namespace vk
|
|||||||
// Exported device endpoints
|
// Exported device endpoints
|
||||||
PFN_vkCmdBeginConditionalRenderingEXT _vkCmdBeginConditionalRenderingEXT = nullptr;
|
PFN_vkCmdBeginConditionalRenderingEXT _vkCmdBeginConditionalRenderingEXT = nullptr;
|
||||||
PFN_vkCmdEndConditionalRenderingEXT _vkCmdEndConditionalRenderingEXT = nullptr;
|
PFN_vkCmdEndConditionalRenderingEXT _vkCmdEndConditionalRenderingEXT = nullptr;
|
||||||
|
PFN_vkSetDebugUtilsObjectNameEXT _vkSetDebugUtilsObjectNameEXT = nullptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
render_device() = default;
|
render_device() = default;
|
||||||
@ -126,6 +128,7 @@ namespace vk
|
|||||||
bool get_unrestricted_depth_range_support() const;
|
bool get_unrestricted_depth_range_support() const;
|
||||||
bool get_external_memory_host_support() const;
|
bool get_external_memory_host_support() const;
|
||||||
bool get_surface_capabilities_2_support() const;
|
bool get_surface_capabilities_2_support() const;
|
||||||
|
bool get_debug_utils_support() const;
|
||||||
|
|
||||||
VkQueue get_present_queue() const;
|
VkQueue get_present_queue() const;
|
||||||
VkQueue get_graphics_queue() const;
|
VkQueue get_graphics_queue() const;
|
||||||
|
@ -215,6 +215,20 @@ namespace vk
|
|||||||
current_queue_family = new_queue_family;
|
current_queue_family = new_queue_family;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void image::set_debug_name(const std::string& name)
|
||||||
|
{
|
||||||
|
if (g_render_device->get_debug_utils_support())
|
||||||
|
{
|
||||||
|
VkDebugUtilsObjectNameInfoEXT name_info{};
|
||||||
|
name_info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||||
|
name_info.objectType = VK_OBJECT_TYPE_IMAGE;
|
||||||
|
name_info.objectHandle = reinterpret_cast<u64>(value);
|
||||||
|
name_info.pObjectName = name.c_str();
|
||||||
|
|
||||||
|
g_render_device->_vkSetDebugUtilsObjectNameEXT(m_device, &name_info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
image_view::image_view(VkDevice dev, VkImage image, VkImageViewType view_type, VkFormat format, VkComponentMapping mapping, VkImageSubresourceRange range)
|
image_view::image_view(VkDevice dev, VkImage image, VkImageViewType view_type, VkFormat format, VkComponentMapping mapping, VkImageSubresourceRange range)
|
||||||
: m_device(dev)
|
: m_device(dev)
|
||||||
{
|
{
|
||||||
|
@ -81,6 +81,9 @@ namespace vk
|
|||||||
void change_layout(const command_buffer& cmd, VkImageLayout new_layout);
|
void change_layout(const command_buffer& cmd, VkImageLayout new_layout);
|
||||||
void change_layout(const command_buffer& cmd, VkImageLayout new_layout, u32 new_queue_family);
|
void change_layout(const command_buffer& cmd, VkImageLayout new_layout, u32 new_queue_family);
|
||||||
|
|
||||||
|
// Debug utils
|
||||||
|
void set_debug_name(const std::string& name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VkDevice m_device;
|
VkDevice m_device;
|
||||||
};
|
};
|
||||||
|
@ -159,6 +159,12 @@ namespace vk
|
|||||||
{
|
{
|
||||||
extensions.push_back(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
|
extensions.push_back(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (g_cfg.video.renderdoc_compatiblity && support.is_supported(VK_EXT_DEBUG_UTILS_EXTENSION_NAME))
|
||||||
|
{
|
||||||
|
extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
extensions.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
|
extensions.push_back(VK_KHR_WIN32_SURFACE_EXTENSION_NAME);
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
|
Loading…
Reference in New Issue
Block a user