On Sun, Jul 8, 2018 at 5:47 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > Needed for VK_KHR_create_renderpass2. > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/amd/vulkan/radv_cmd_buffer.c | 4 ++-- > src/amd/vulkan/radv_meta_clear.c | 4 ++-- > src/amd/vulkan/radv_meta_resolve.c | 14 +++++++------- > src/amd/vulkan/radv_meta_resolve_cs.c | 4 ++-- > src/amd/vulkan/radv_meta_resolve_fs.c | 6 +++--- > src/amd/vulkan/radv_pass.c | 28 +++++++++++++++++---------- > src/amd/vulkan/radv_private.h | 15 +++++++++----- > 7 files changed, 44 insertions(+), 31 deletions(-) > > diff --git a/src/amd/vulkan/radv_cmd_buffer.c > b/src/amd/vulkan/radv_cmd_buffer.c > index 1ea023a811..0ddddf50f6 100644 > --- a/src/amd/vulkan/radv_cmd_buffer.c > +++ b/src/amd/vulkan/radv_cmd_buffer.c > @@ -2054,7 +2054,7 @@ static void radv_subpass_barrier(struct radv_cmd_buffer > *cmd_buffer, const struc > } > > static void radv_handle_subpass_image_transition(struct radv_cmd_buffer > *cmd_buffer, > - VkAttachmentReference att) > + struct > radv_subpass_attachment att) > { > unsigned idx = att.attachment; > struct radv_image_view *view = > cmd_buffer->state.framebuffer->attachments[idx].attachment; > @@ -3944,7 +3944,7 @@ void radv_CmdEndRenderPass( > for (unsigned i = 0; i < > cmd_buffer->state.framebuffer->attachment_count; ++i) { > VkImageLayout layout = > cmd_buffer->state.pass->attachments[i].final_layout; > radv_handle_subpass_image_transition(cmd_buffer, > - (VkAttachmentReference){i, layout}); > + (struct radv_subpass_attachment){i, > layout}); > } > > vk_free(&cmd_buffer->pool->alloc, cmd_buffer->state.attachments); > diff --git a/src/amd/vulkan/radv_meta_clear.c > b/src/amd/vulkan/radv_meta_clear.c > index 2c0bb37387..d7c9849734 100644 > --- a/src/amd/vulkan/radv_meta_clear.c > +++ b/src/amd/vulkan/radv_meta_clear.c > @@ -366,10 +366,10 @@ emit_color_clear(struct radv_cmd_buffer *cmd_buffer, > > struct radv_subpass clear_subpass = { > .color_count = 1, > - .color_attachments = (VkAttachmentReference[]) { > + .color_attachments = (struct radv_subpass_attachment[]) { > subpass->color_attachments[clear_att->colorAttachment] > }, > - .depth_stencil_attachment = (VkAttachmentReference) { > VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_UNDEFINED } > + .depth_stencil_attachment = (struct radv_subpass_attachment) > { VK_ATTACHMENT_UNUSED, VK_IMAGE_LAYOUT_UNDEFINED } > }; > > radv_cmd_buffer_set_subpass(cmd_buffer, &clear_subpass, false); > diff --git a/src/amd/vulkan/radv_meta_resolve.c > b/src/amd/vulkan/radv_meta_resolve.c > index d4d3552f31..b049237ba6 100644 > --- a/src/amd/vulkan/radv_meta_resolve.c > +++ b/src/amd/vulkan/radv_meta_resolve.c > @@ -613,8 +613,8 @@ radv_cmd_buffer_resolve_subpass(struct radv_cmd_buffer > *cmd_buffer) > return; > > for (uint32_t i = 0; i < subpass->color_count; ++i) { > - VkAttachmentReference src_att = subpass->color_attachments[i]; > - VkAttachmentReference dest_att = > subpass->resolve_attachments[i]; > + struct radv_subpass_attachment src_att = > subpass->color_attachments[i]; > + struct radv_subpass_attachment dest_att = > subpass->resolve_attachments[i]; > > if (src_att.attachment == VK_ATTACHMENT_UNUSED || > dest_att.attachment == VK_ATTACHMENT_UNUSED) > @@ -641,8 +641,8 @@ radv_cmd_buffer_resolve_subpass(struct radv_cmd_buffer > *cmd_buffer) > RADV_META_SAVE_GRAPHICS_PIPELINE); > > for (uint32_t i = 0; i < subpass->color_count; ++i) { > - VkAttachmentReference src_att = subpass->color_attachments[i]; > - VkAttachmentReference dest_att = > subpass->resolve_attachments[i]; > + struct radv_subpass_attachment src_att = > subpass->color_attachments[i]; > + struct radv_subpass_attachment dest_att = > subpass->resolve_attachments[i]; > > if (src_att.attachment == VK_ATTACHMENT_UNUSED || > dest_att.attachment == VK_ATTACHMENT_UNUSED) > @@ -657,7 +657,7 @@ radv_cmd_buffer_resolve_subpass(struct radv_cmd_buffer > *cmd_buffer) > > struct radv_subpass resolve_subpass = { > .color_count = 2, > - .color_attachments = (VkAttachmentReference[]) { > src_att, dest_att }, > + .color_attachments = (struct > radv_subpass_attachment[]) { src_att, dest_att }, > .depth_stencil_attachment = { .attachment = > VK_ATTACHMENT_UNUSED }, > }; > > @@ -684,8 +684,8 @@ radv_decompress_resolve_subpass_src(struct > radv_cmd_buffer *cmd_buffer) > struct radv_framebuffer *fb = cmd_buffer->state.framebuffer; > > for (uint32_t i = 0; i < subpass->color_count; ++i) { > - VkAttachmentReference src_att = subpass->color_attachments[i]; > - VkAttachmentReference dest_att = > subpass->resolve_attachments[i]; > + struct radv_subpass_attachment src_att = > subpass->color_attachments[i]; > + struct radv_subpass_attachment dest_att = > subpass->resolve_attachments[i]; > > if (src_att.attachment == VK_ATTACHMENT_UNUSED || > dest_att.attachment == VK_ATTACHMENT_UNUSED) > diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c > b/src/amd/vulkan/radv_meta_resolve_cs.c > index 4a37892b86..daf11e0576 100644 > --- a/src/amd/vulkan/radv_meta_resolve_cs.c > +++ b/src/amd/vulkan/radv_meta_resolve_cs.c > @@ -501,8 +501,8 @@ radv_cmd_buffer_resolve_subpass_cs(struct radv_cmd_buffer > *cmd_buffer) > RADV_META_SAVE_DESCRIPTORS); > > for (uint32_t i = 0; i < subpass->color_count; ++i) { > - VkAttachmentReference src_att = subpass->color_attachments[i]; > - VkAttachmentReference dest_att = > subpass->resolve_attachments[i]; > + struct radv_subpass_attachment src_att = > subpass->color_attachments[i]; > + struct radv_subpass_attachment dest_att = > subpass->resolve_attachments[i]; > struct radv_image_view *src_iview = > cmd_buffer->state.framebuffer->attachments[src_att.attachment].attachment; > struct radv_image_view *dst_iview = > cmd_buffer->state.framebuffer->attachments[dest_att.attachment].attachment; > if (dest_att.attachment == VK_ATTACHMENT_UNUSED) > diff --git a/src/amd/vulkan/radv_meta_resolve_fs.c > b/src/amd/vulkan/radv_meta_resolve_fs.c > index ef8c1d8b1d..5f4f241893 100644 > --- a/src/amd/vulkan/radv_meta_resolve_fs.c > +++ b/src/amd/vulkan/radv_meta_resolve_fs.c > @@ -611,8 +611,8 @@ radv_cmd_buffer_resolve_subpass_fs(struct radv_cmd_buffer > *cmd_buffer) > radv_decompress_resolve_subpass_src(cmd_buffer); > > for (uint32_t i = 0; i < subpass->color_count; ++i) { > - VkAttachmentReference src_att = subpass->color_attachments[i]; > - VkAttachmentReference dest_att = > subpass->resolve_attachments[i]; > + struct radv_subpass_attachment src_att = > subpass->color_attachments[i]; > + struct radv_subpass_attachment dest_att = > subpass->resolve_attachments[i]; > > if (src_att.attachment == VK_ATTACHMENT_UNUSED || > dest_att.attachment == VK_ATTACHMENT_UNUSED) > @@ -623,7 +623,7 @@ radv_cmd_buffer_resolve_subpass_fs(struct radv_cmd_buffer > *cmd_buffer) > > struct radv_subpass resolve_subpass = { > .color_count = 1, > - .color_attachments = (VkAttachmentReference[]) { > dest_att }, > + .color_attachments = (struct > radv_subpass_attachment[]) { dest_att }, > .depth_stencil_attachment = { .attachment = > VK_ATTACHMENT_UNUSED }, > }; > > diff --git a/src/amd/vulkan/radv_pass.c b/src/amd/vulkan/radv_pass.c > index 15fee444cd..0e0f767751 100644 > --- a/src/amd/vulkan/radv_pass.c > +++ b/src/amd/vulkan/radv_pass.c > @@ -80,7 +80,7 @@ VkResult radv_CreateRenderPass( > // att->stencil_store_op = > pCreateInfo->pAttachments[i].stencilStoreOp; > } > uint32_t subpass_attachment_count = 0; > - VkAttachmentReference *p; > + struct radv_subpass_attachment *p; > for (uint32_t i = 0; i < pCreateInfo->subpassCount; i++) { > const VkSubpassDescription *desc = > &pCreateInfo->pSubpasses[i]; > > @@ -94,7 +94,7 @@ VkResult radv_CreateRenderPass( > if (subpass_attachment_count) { > pass->subpass_attachments = > vk_alloc2(&device->alloc, pAllocator, > - subpass_attachment_count * > sizeof(VkAttachmentReference), 8, > + subpass_attachment_count * sizeof(struct > radv_subpass_attachment), 8, > VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); > if (pass->subpass_attachments == NULL) { > vk_free2(&device->alloc, pAllocator, pass); > @@ -119,8 +119,10 @@ VkResult radv_CreateRenderPass( > p += desc->inputAttachmentCount; > > for (uint32_t j = 0; j < desc->inputAttachmentCount; > j++) { > - subpass->input_attachments[j] > - = desc->pInputAttachments[j]; > + subpass->input_attachments[j] = (struct > radv_subpass_attachment) { > + .attachment = > desc->pInputAttachments[j].attachment, > + .layout = > desc->pInputAttachments[j].layout, > + }; > if (desc->pInputAttachments[j].attachment != > VK_ATTACHMENT_UNUSED) > > pass->attachments[desc->pInputAttachments[j].attachment].view_mask |= > subpass->view_mask; > } > @@ -131,8 +133,10 @@ VkResult radv_CreateRenderPass( > p += desc->colorAttachmentCount; > > for (uint32_t j = 0; j < desc->colorAttachmentCount; > j++) { > - subpass->color_attachments[j] > - = desc->pColorAttachments[j]; > + subpass->color_attachments[j] = (struct > radv_subpass_attachment) { > + .attachment = > desc->pColorAttachments[j].attachment, > + .layout = > desc->pColorAttachments[j].layout, > + }; > if (desc->pColorAttachments[j].attachment != > VK_ATTACHMENT_UNUSED) { > > pass->attachments[desc->pColorAttachments[j].attachment].view_mask |= > subpass->view_mask; > color_sample_count = > pCreateInfo->pAttachments[desc->pColorAttachments[j].attachment].samples; > @@ -147,8 +151,10 @@ VkResult radv_CreateRenderPass( > > for (uint32_t j = 0; j < desc->colorAttachmentCount; > j++) { > uint32_t a = > desc->pResolveAttachments[j].attachment; > - subpass->resolve_attachments[j] > - = desc->pResolveAttachments[j]; > + subpass->resolve_attachments[j] = (struct > radv_subpass_attachment) { > + .attachment = > desc->pResolveAttachments[j].attachment, > + .layout = > desc->pResolveAttachments[j].layout, > + }; > if (a != VK_ATTACHMENT_UNUSED) { > subpass->has_resolve = true; > > pass->attachments[desc->pResolveAttachments[j].attachment].view_mask |= > subpass->view_mask; > @@ -157,8 +163,10 @@ VkResult radv_CreateRenderPass( > } > > if (desc->pDepthStencilAttachment) { > - subpass->depth_stencil_attachment = > - *desc->pDepthStencilAttachment; > + subpass->depth_stencil_attachment = (struct > radv_subpass_attachment) { > + .attachment = > desc->pDepthStencilAttachment->attachment, > + .layout = > desc->pDepthStencilAttachment->layout, > + }; > if (desc->pDepthStencilAttachment->attachment != > VK_ATTACHMENT_UNUSED) { > > pass->attachments[desc->pDepthStencilAttachment->attachment].view_mask |= > subpass->view_mask; > depth_sample_count = > pCreateInfo->pAttachments[desc->pDepthStencilAttachment->attachment].samples; > diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h > index 4e4b3a6037..106e38a755 100644 > --- a/src/amd/vulkan/radv_private.h > +++ b/src/amd/vulkan/radv_private.h > @@ -1706,13 +1706,18 @@ struct radv_subpass_barrier { > VkAccessFlags dst_access_mask; > }; > > +struct radv_subpass_attachment { > + uint32_t attachment; > + VkImageLayout layout; > +};
This is exactly the same as VkAttachmentReference, right? I also don't see you extending the struct in the next patch. What is the goal of this refactoring? > + > struct radv_subpass { > uint32_t input_count; > uint32_t color_count; > - VkAttachmentReference * input_attachments; > - VkAttachmentReference * color_attachments; > - VkAttachmentReference * resolve_attachments; > - VkAttachmentReference depth_stencil_attachment; > + struct radv_subpass_attachment * input_attachments; > + struct radv_subpass_attachment * color_attachments; > + struct radv_subpass_attachment * resolve_attachments; > + struct radv_subpass_attachment depth_stencil_attachment; > > /** Subpass has at least one resolve attachment */ > bool has_resolve; > @@ -1736,7 +1741,7 @@ struct radv_render_pass_attachment { > struct radv_render_pass { > uint32_t attachment_count; > uint32_t subpass_count; > - VkAttachmentReference * subpass_attachments; > + struct radv_subpass_attachment * subpass_attachments; > struct radv_render_pass_attachment * attachments; > struct radv_subpass_barrier end_barrier; > struct radv_subpass subpasses[0]; > -- > 2.18.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev