radv: handle the VRS attachment subpass

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10187>
This commit is contained in:
Samuel Pitoiset
2021-04-09 13:57:21 +02:00
committed by Marge Bot
parent bb88f73ad3
commit 513a166a7b
2 changed files with 20 additions and 1 deletions
+19 -1
View File
@@ -214,6 +214,9 @@ radv_render_pass_compile(struct radv_render_pass *pass)
subpass->ds_resolve_attachment->attachment == VK_ATTACHMENT_UNUSED)
subpass->ds_resolve_attachment = NULL;
if (subpass->vrs_attachment && subpass->vrs_attachment->attachment == VK_ATTACHMENT_UNUSED)
subpass->vrs_attachment = NULL;
for (uint32_t j = 0; j < subpass->attachment_count; j++) {
struct radv_subpass_attachment *subpass_att = &subpass->attachments[j];
if (subpass_att->attachment == VK_ATTACHMENT_UNUSED)
@@ -297,11 +300,14 @@ radv_num_subpass_attachments2(const VkSubpassDescription2 *desc)
{
const VkSubpassDescriptionDepthStencilResolve *ds_resolve =
vk_find_struct_const(desc->pNext, SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE);
const VkFragmentShadingRateAttachmentInfoKHR *vrs =
vk_find_struct_const(desc->pNext, FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR);
return desc->inputAttachmentCount + desc->colorAttachmentCount +
(desc->pResolveAttachments ? desc->colorAttachmentCount : 0) +
(desc->pDepthStencilAttachment != NULL) +
(ds_resolve && ds_resolve->pDepthStencilResolveAttachment);
(ds_resolve && ds_resolve->pDepthStencilResolveAttachment) +
(vrs && vrs->pFragmentShadingRateAttachment);
}
static bool
@@ -497,6 +503,18 @@ radv_CreateRenderPass2(VkDevice _device, const VkRenderPassCreateInfo2 *pCreateI
subpass->depth_resolve_mode = ds_resolve->depthResolveMode;
subpass->stencil_resolve_mode = ds_resolve->stencilResolveMode;
}
const VkFragmentShadingRateAttachmentInfoKHR *vrs =
vk_find_struct_const(desc->pNext, FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR);
if (vrs && vrs->pFragmentShadingRateAttachment) {
subpass->vrs_attachment = p++;
*subpass->vrs_attachment = (struct radv_subpass_attachment){
.attachment = vrs->pFragmentShadingRateAttachment->attachment,
.layout = vrs->pFragmentShadingRateAttachment->layout,
};
}
}
for (unsigned i = 0; i < pCreateInfo->dependencyCount; ++i) {
+1
View File
@@ -2283,6 +2283,7 @@ struct radv_subpass {
struct radv_subpass_attachment *resolve_attachments;
struct radv_subpass_attachment *depth_stencil_attachment;
struct radv_subpass_attachment *ds_resolve_attachment;
struct radv_subpass_attachment *vrs_attachment;
VkResolveModeFlagBits depth_resolve_mode;
VkResolveModeFlagBits stencil_resolve_mode;