anv/pass: Store subpass attachment reference list

We'll loop through this array when performing automatic layout
transitions.

v2: Adjust formatting of an assignment (Jason Ekstrand)

Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Nanley Chery
2017-02-25 15:57:32 -08:00
parent 8f6a17c8e7
commit c0223d052b
2 changed files with 13 additions and 2 deletions

View File

@@ -86,9 +86,11 @@ VkResult anv_CreateRenderPass(
const VkSubpassDescription *desc = &pCreateInfo->pSubpasses[i];
subpass_attachment_count +=
pass->subpasses[i].attachment_count =
desc->inputAttachmentCount +
desc->colorAttachmentCount +
(desc->pResolveAttachments ? desc->colorAttachmentCount : 0);
(desc->pResolveAttachments ? desc->colorAttachmentCount : 0) +
(desc->pDepthStencilAttachment != NULL);
}
pass->subpass_attachments =
@@ -108,6 +110,7 @@ VkResult anv_CreateRenderPass(
subpass->input_count = desc->inputAttachmentCount;
subpass->color_count = desc->colorAttachmentCount;
subpass->attachments = p;
if (desc->inputAttachmentCount > 0) {
subpass->input_attachments = p;
@@ -169,7 +172,8 @@ VkResult anv_CreateRenderPass(
if (desc->pDepthStencilAttachment) {
uint32_t a = desc->pDepthStencilAttachment->attachment;
subpass->depth_stencil_attachment = *desc->pDepthStencilAttachment;
*p++ = subpass->depth_stencil_attachment =
*desc->pDepthStencilAttachment;
if (a != VK_ATTACHMENT_UNUSED) {
pass->attachments[a].usage |=
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;

View File

@@ -1921,6 +1921,13 @@ struct anv_framebuffer {
};
struct anv_subpass {
uint32_t attachment_count;
/**
* A pointer to all attachment references used in this subpass.
* Only valid if ::attachment_count > 0.
*/
VkAttachmentReference * attachments;
uint32_t input_count;
VkAttachmentReference * input_attachments;
uint32_t color_count;