diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 34afc97f9..1546808e2 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -924,7 +924,8 @@ void DescriptorSetBindingElement::AddBindRefs(VkResourceRecord *record, FrameRef if(texelBufferView != VK_NULL_HANDLE) { VkResourceRecord *bufView = GetRecord(texelBufferView); - record->AddBindFrameRef(bufView->GetResourceID(), eFrameRef_Read, bufView->resInfo != NULL); + record->AddBindFrameRef(bufView->GetResourceID(), eFrameRef_Read, + bufView->resInfo && bufView->resInfo->IsSparse()); if(bufView->baseResource != ResourceId()) record->AddBindFrameRef(bufView->baseResource, eFrameRef_Read); if(bufView->baseResourceMem != ResourceId()) @@ -945,7 +946,8 @@ void DescriptorSetBindingElement::AddBindRefs(VkResourceRecord *record, FrameRef if(bufferInfo.buffer != VK_NULL_HANDLE) { VkResourceRecord *buf = GetRecord(bufferInfo.buffer); - record->AddBindFrameRef(GetResID(bufferInfo.buffer), eFrameRef_Read, buf->resInfo != NULL); + record->AddBindFrameRef(GetResID(bufferInfo.buffer), eFrameRef_Read, + buf->resInfo && buf->resInfo->IsSparse()); if(buf->baseResource != ResourceId()) record->AddMemFrameRef(buf->baseResource, buf->memOffset, buf->memSize, ref); } diff --git a/renderdoc/driver/vulkan/vk_resources.cpp b/renderdoc/driver/vulkan/vk_resources.cpp index 519133a5d..687ac97aa 100644 --- a/renderdoc/driver/vulkan/vk_resources.cpp +++ b/renderdoc/driver/vulkan/vk_resources.cpp @@ -3069,7 +3069,7 @@ void VkResourceRecord::MarkBufferFrameReferenced(VkResourceRecord *buf, VkDevice { size = buf->memSize; } - if(buf->resInfo) + if(buf->resInfo && buf->resInfo->IsSparse()) cmdInfo->sparse.insert(buf->resInfo); if(buf->baseResource != ResourceId()) MarkMemoryFrameReferenced(buf->baseResource, buf->memOffset + offset, size, refType); @@ -3179,7 +3179,7 @@ void VkResourceRecord::MarkBufferViewFrameReferenced(VkResourceRecord *bufView, if(bufView->baseResource != ResourceId()) MarkResourceFrameReferenced(bufView->baseResource, eFrameRef_Read); - if(bufView->resInfo) + if(bufView->resInfo && bufView->resInfo->IsSparse()) cmdInfo->sparse.insert(bufView->resInfo); if(bufView->baseResourceMem != ResourceId()) MarkMemoryFrameReferenced(bufView->baseResourceMem, bufView->memOffset, bufView->memSize, diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 8e217122b..2a2fe05f5 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -1597,7 +1597,7 @@ void WrappedVulkan::vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer, record->MarkResourceFrameReferenced(att->baseResource, eFrameRef_ReadBeforeWrite); if(att->baseResourceMem != ResourceId()) record->MarkResourceFrameReferenced(att->baseResourceMem, eFrameRef_Read); - if(att->resInfo) + if(att->resInfo && att->resInfo->IsSparse()) record->cmdInfo->sparse.insert(att->resInfo); record->cmdInfo->dirtied.insert(att->baseResource); } diff --git a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp index f19707d12..eaf080ee3 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_draw_funcs.cpp @@ -2099,8 +2099,9 @@ void WrappedVulkan::vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage record->MarkResourceFrameReferenced(GetResID(image), eFrameRef_PartialWrite); record->MarkResourceFrameReferenced(GetRecord(image)->baseResource, eFrameRef_Read); record->cmdInfo->dirtied.insert(GetResID(image)); - if(GetRecord(image)->resInfo) - record->cmdInfo->sparse.insert(GetRecord(image)->resInfo); + VkResourceRecord *imageRecord = GetRecord(image); + if(imageRecord->resInfo && imageRecord->resInfo->IsSparse()) + record->cmdInfo->sparse.insert(imageRecord->resInfo); } } @@ -2207,8 +2208,9 @@ void WrappedVulkan::vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, V record->MarkResourceFrameReferenced(GetResID(image), eFrameRef_PartialWrite); record->MarkResourceFrameReferenced(GetRecord(image)->baseResource, eFrameRef_Read); record->cmdInfo->dirtied.insert(GetResID(image)); - if(GetRecord(image)->resInfo) - record->cmdInfo->sparse.insert(GetRecord(image)->resInfo); + VkResourceRecord *imageRecord = GetRecord(image); + if(imageRecord->resInfo && imageRecord->resInfo->IsSparse()) + record->cmdInfo->sparse.insert(imageRecord->resInfo); } }