[Mesa-dev] [PATCH v2 2/9] radv: record if a render pass has depth/stencil resolve attachments
Bas Nieuwenhuizen
bas at basnieuwenhuizen.nl
Thu Jun 20 09:02:24 UTC 2019
R-b
On Wed, Jun 12, 2019, 11:44 AM Samuel Pitoiset <samuel.pitoiset at gmail.com>
wrote:
> Only supported with vkCreateRenderPass2().
>
> v2: - do not set has_resolve (now has_color_resolve) for ds resolves
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
> src/amd/vulkan/radv_pass.c | 27 ++++++++++++++++++++++++++-
> src/amd/vulkan/radv_private.h | 3 +++
> 2 files changed, 29 insertions(+), 1 deletion(-)
>
> diff --git a/src/amd/vulkan/radv_pass.c b/src/amd/vulkan/radv_pass.c
> index 728b6113206..688a17919bd 100644
> --- a/src/amd/vulkan/radv_pass.c
> +++ b/src/amd/vulkan/radv_pass.c
> @@ -91,6 +91,10 @@ radv_render_pass_compile(struct radv_render_pass *pass)
> subpass->depth_stencil_attachment->attachment ==
> VK_ATTACHMENT_UNUSED)
> subpass->depth_stencil_attachment = NULL;
>
> + if (subpass->ds_resolve_attachment &&
> + subpass->ds_resolve_attachment->attachment ==
> VK_ATTACHMENT_UNUSED)
> + subpass->ds_resolve_attachment = NULL;
> +
> for (uint32_t j = 0; j < subpass->attachment_count; j++) {
> struct radv_subpass_attachment *subpass_att =
> &subpass->attachments[j];
> @@ -309,10 +313,15 @@ VkResult radv_CreateRenderPass(
> static unsigned
> radv_num_subpass_attachments2(const VkSubpassDescription2KHR *desc)
> {
> + const VkSubpassDescriptionDepthStencilResolveKHR *ds_resolve =
> + vk_find_struct_const(desc->pNext,
> +
> SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR);
> +
> return desc->inputAttachmentCount +
> desc->colorAttachmentCount +
> (desc->pResolveAttachments ? desc->colorAttachmentCount :
> 0) +
> - (desc->pDepthStencilAttachment != NULL);
> + (desc->pDepthStencilAttachment != NULL) +
> + (ds_resolve && ds_resolve->pDepthStencilResolveAttachment);
> }
>
> VkResult radv_CreateRenderPass2KHR(
> @@ -429,6 +438,22 @@ VkResult radv_CreateRenderPass2KHR(
> .layout =
> desc->pDepthStencilAttachment->layout,
> };
> }
> +
> + const VkSubpassDescriptionDepthStencilResolveKHR
> *ds_resolve =
> + vk_find_struct_const(desc->pNext,
> +
> SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR);
> +
> + if (ds_resolve &&
> ds_resolve->pDepthStencilResolveAttachment) {
> + subpass->ds_resolve_attachment = p++;
> +
> + *subpass->ds_resolve_attachment = (struct
> radv_subpass_attachment) {
> + .attachment =
> ds_resolve->pDepthStencilResolveAttachment->attachment,
> + .layout =
> ds_resolve->pDepthStencilResolveAttachment->layout,
> + };
> +
> + subpass->depth_resolve_mode =
> ds_resolve->depthResolveMode;
> + subpass->stencil_resolve_mode =
> ds_resolve->stencilResolveMode;
> + }
> }
>
> for (unsigned i = 0; i < pCreateInfo->dependencyCount; ++i) {
> diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
> index 848fd427ef0..af7e90140a4 100644
> --- a/src/amd/vulkan/radv_private.h
> +++ b/src/amd/vulkan/radv_private.h
> @@ -1909,6 +1909,9 @@ struct radv_subpass {
> struct radv_subpass_attachment * color_attachments;
> struct radv_subpass_attachment * resolve_attachments;
> struct radv_subpass_attachment *
> depth_stencil_attachment;
> + struct radv_subpass_attachment * ds_resolve_attachment;
> + VkResolveModeFlagBitsKHR depth_resolve_mode;
> + VkResolveModeFlagBitsKHR stencil_resolve_mode;
>
> /** Subpass has at least one color resolve attachment */
> bool has_color_resolve;
> --
> 2.22.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190620/078e9720/attachment.html>
More information about the mesa-dev
mailing list