Pass through names from capture when EXT_debug_* is supported

This commit is contained in:
baldurk
2022-02-09 18:01:40 +00:00
parent 544e6dbf18
commit d5e6a735fb
2 changed files with 128 additions and 0 deletions
@@ -2161,6 +2161,72 @@ bool WrappedVulkan::Serialise_vkDebugMarkerSetObjectNameEXT(
else
m_CreationInfo.m_Names[GetResourceManager()->GetLiveID(Object)] = ObjectName;
VkDebugMarkerObjectNameInfoEXT name = {VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT};
name.pObjectName = ObjectName;
WrappedVkRes *res = GetResourceManager()->GetLiveResource(Object);
if(res)
{
if(IsDispatchableRes(res))
{
WrappedVkDispRes *disp = (WrappedVkDispRes *)res;
name.object = disp->real.handle;
}
else
{
WrappedVkNonDispRes *nondisp = (WrappedVkNonDispRes *)res;
name.object = nondisp->real.handle;
}
VkDebugReportObjectTypeEXT type = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;
switch(IdentifyTypeByPtr(res))
{
case eResUnknown: type = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT; break;
case eResPhysicalDevice: type = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT; break;
case eResInstance: type = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT; break;
case eResDevice: type = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT; break;
case eResQueue: type = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT; break;
case eResDeviceMemory: type = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT; break;
case eResBuffer: type = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT; break;
case eResBufferView: type = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT; break;
case eResImage: type = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT; break;
case eResImageView: type = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT; break;
case eResFramebuffer: type = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT; break;
case eResRenderPass: type = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT; break;
case eResShaderModule: type = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT; break;
case eResPipelineCache: type = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT; break;
case eResPipelineLayout: type = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT; break;
case eResPipeline: type = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT; break;
case eResSampler: type = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT; break;
case eResDescriptorPool: type = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT; break;
case eResDescriptorSetLayout:
type = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT;
break;
case eResDescriptorSet: type = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT; break;
case eResCommandPool: type = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT; break;
case eResCommandBuffer: type = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT; break;
case eResFence: type = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT; break;
case eResEvent: type = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT; break;
case eResQueryPool: type = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT; break;
case eResSemaphore: type = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT; break;
case eResSwapchain: type = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT; break;
case eResSurface: type = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT; break;
case eResDescUpdateTemplate:
type = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT;
break;
case eResSamplerConversion:
type = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT;
break;
}
if(ObjDisp(m_Device)->DebugMarkerSetObjectNameEXT && type != VK_OBJECT_TYPE_UNKNOWN)
{
name.objectType = type;
ObjDisp(m_Device)->DebugMarkerSetObjectNameEXT(Unwrap(m_Device), &name);
}
}
ResourceDescription &descr = GetResourceDesc(Object);
AddResourceCurChunk(descr);
@@ -2279,6 +2345,66 @@ bool WrappedVulkan::Serialise_vkSetDebugUtilsObjectNameEXT(
else
m_CreationInfo.m_Names[GetResourceManager()->GetLiveID(Object)] = ObjectName;
VkDebugUtilsObjectNameInfoEXT name = {VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT};
name.pObjectName = ObjectName;
WrappedVkRes *res = GetResourceManager()->GetLiveResource(Object);
if(res)
{
if(IsDispatchableRes(res))
{
WrappedVkDispRes *disp = (WrappedVkDispRes *)res;
name.objectHandle = disp->real.handle;
}
else
{
WrappedVkNonDispRes *nondisp = (WrappedVkNonDispRes *)res;
name.objectHandle = nondisp->real.handle;
}
VkObjectType type = VK_OBJECT_TYPE_UNKNOWN;
switch(IdentifyTypeByPtr(res))
{
case eResUnknown: type = VK_OBJECT_TYPE_UNKNOWN; break;
case eResPhysicalDevice: type = VK_OBJECT_TYPE_PHYSICAL_DEVICE; break;
case eResInstance: type = VK_OBJECT_TYPE_INSTANCE; break;
case eResDevice: type = VK_OBJECT_TYPE_DEVICE; break;
case eResQueue: type = VK_OBJECT_TYPE_QUEUE; break;
case eResDeviceMemory: type = VK_OBJECT_TYPE_DEVICE_MEMORY; break;
case eResBuffer: type = VK_OBJECT_TYPE_BUFFER; break;
case eResBufferView: type = VK_OBJECT_TYPE_BUFFER_VIEW; break;
case eResImage: type = VK_OBJECT_TYPE_IMAGE; break;
case eResImageView: type = VK_OBJECT_TYPE_IMAGE_VIEW; break;
case eResFramebuffer: type = VK_OBJECT_TYPE_FRAMEBUFFER; break;
case eResRenderPass: type = VK_OBJECT_TYPE_RENDER_PASS; break;
case eResShaderModule: type = VK_OBJECT_TYPE_SHADER_MODULE; break;
case eResPipelineCache: type = VK_OBJECT_TYPE_PIPELINE_CACHE; break;
case eResPipelineLayout: type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; break;
case eResPipeline: type = VK_OBJECT_TYPE_PIPELINE; break;
case eResSampler: type = VK_OBJECT_TYPE_SAMPLER; break;
case eResDescriptorPool: type = VK_OBJECT_TYPE_DESCRIPTOR_POOL; break;
case eResDescriptorSetLayout: type = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT; break;
case eResDescriptorSet: type = VK_OBJECT_TYPE_DESCRIPTOR_SET; break;
case eResCommandPool: type = VK_OBJECT_TYPE_COMMAND_POOL; break;
case eResCommandBuffer: type = VK_OBJECT_TYPE_COMMAND_BUFFER; break;
case eResFence: type = VK_OBJECT_TYPE_FENCE; break;
case eResEvent: type = VK_OBJECT_TYPE_EVENT; break;
case eResQueryPool: type = VK_OBJECT_TYPE_QUERY_POOL; break;
case eResSemaphore: type = VK_OBJECT_TYPE_SEMAPHORE; break;
case eResSwapchain: type = VK_OBJECT_TYPE_SWAPCHAIN_KHR; break;
case eResSurface: type = VK_OBJECT_TYPE_SURFACE_KHR; break;
case eResDescUpdateTemplate: type = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE; break;
case eResSamplerConversion: type = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION; break;
}
if(ObjDisp(m_Device)->SetDebugUtilsObjectNameEXT && type != VK_OBJECT_TYPE_UNKNOWN)
{
name.objectType = type;
ObjDisp(m_Device)->SetDebugUtilsObjectNameEXT(Unwrap(m_Device), &name);
}
}
ResourceDescription &descr = GetResourceDesc(Object);
AddResourceCurChunk(descr);
@@ -2095,6 +2095,8 @@ bool WrappedVulkan::Serialise_vkCreateImage(SerialiserType &ser, VkDevice device
ResourceId live = GetResourceManager()->WrapResource(Unwrap(device), img);
GetResourceManager()->AddLiveResource(Image, img);
NameVulkanObject(img, StringFormat::Fmt("Image %s", ToStr(Image).c_str()));
m_CreationInfo.m_Image[live].Init(GetResourceManager(), m_CreationInfo, &CreateInfo);
bool inserted = false;