Fix handling of dynamic rendering shading rate attachments. Closes #2877

This commit is contained in:
baldurk
2023-03-06 14:42:00 +00:00
parent 5d90500530
commit 4439d50aeb
2 changed files with 22 additions and 2 deletions
+2 -2
View File
@@ -96,7 +96,7 @@ void setupRenderingInfo(const VulkanRenderState::DynamicRendering &dynamicRender
structs->fragmentDensity = {
VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT, NULL,
dynamicRendering.fragmentDensityView, dynamicRendering.fragmentDensityLayout,
Unwrap(dynamicRendering.fragmentDensityView), dynamicRendering.fragmentDensityLayout,
};
if(dynamicRendering.fragmentDensityView != VK_NULL_HANDLE)
@@ -108,7 +108,7 @@ void setupRenderingInfo(const VulkanRenderState::DynamicRendering &dynamicRender
structs->shadingRate = {
VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
NULL,
dynamicRendering.shadingRateView,
Unwrap(dynamicRendering.shadingRateView),
dynamicRendering.shadingRateLayout,
dynamicRendering.shadingRateTexelSize,
};
@@ -7155,6 +7155,26 @@ void WrappedVulkan::vkCmdBeginRendering(VkCommandBuffer commandBuffer,
record->AddChunk(scope.Get(&record->cmdInfo->alloc));
VkRenderingFragmentDensityMapAttachmentInfoEXT *densityMap =
(VkRenderingFragmentDensityMapAttachmentInfoEXT *)FindNextStruct(
pRenderingInfo, VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT);
if(densityMap)
{
VkResourceRecord *viewRecord = GetRecord(densityMap->imageView);
record->MarkImageViewFrameReferenced(viewRecord, ImageRange(), eFrameRef_Read);
}
VkRenderingFragmentShadingRateAttachmentInfoKHR *shadingRate =
(VkRenderingFragmentShadingRateAttachmentInfoKHR *)FindNextStruct(
pRenderingInfo, VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR);
if(shadingRate)
{
VkResourceRecord *viewRecord = GetRecord(shadingRate->imageView);
record->MarkImageViewFrameReferenced(viewRecord, ImageRange(), eFrameRef_Read);
}
for(uint32_t i = 0; i < pRenderingInfo->colorAttachmentCount + 2; i++)
{
const VkRenderingAttachmentInfo *att = pRenderingInfo->pColorAttachments + i;