On Fri, Feb 1, 2019 at 8:52 AM Samuel Pitoiset
<samuel.pitoi...@gmail.com> wrote:
>
>
> On 1/31/19 11:16 AM, Bas Nieuwenhuizen wrote:
> > On Tue, Jan 29, 2019 at 10:16 PM Samuel Pitoiset
> > <samuel.pitoi...@gmail.com> wrote:
> >> That shouldn't change anything as we check if the last
> >> subpass id is the final subpass.
> >>
> >> Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
> >> ---
> >>   src/amd/vulkan/radv_cmd_buffer.c | 16 +++++++++++++---
> >>   1 file changed, 13 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/src/amd/vulkan/radv_cmd_buffer.c 
> >> b/src/amd/vulkan/radv_cmd_buffer.c
> >> index 914ff0055d9..b0b453d76e9 100644
> >> --- a/src/amd/vulkan/radv_cmd_buffer.c
> >> +++ b/src/amd/vulkan/radv_cmd_buffer.c
> >> @@ -4333,15 +4333,25 @@ void radv_CmdEndRenderPass(
> >>          VkCommandBuffer                             commandBuffer)
> >>   {
> >>          RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
> >> +       struct radv_cmd_state *state = &cmd_buffer->state;
> >> +       const struct radv_subpass *subpass = state->subpass;
> >> +       uint32_t subpass_id = radv_get_subpass_id(cmd_buffer);
> >>
> >>          radv_subpass_barrier(cmd_buffer, 
> >> &cmd_buffer->state.pass->end_barrier);
> >>
> >>          radv_cmd_buffer_resolve_subpass(cmd_buffer);
> >>
> >> -       for (unsigned i = 0; i < 
> >> cmd_buffer->state.framebuffer->attachment_count; ++i) {
> >> -               VkImageLayout layout = 
> >> cmd_buffer->state.pass->attachments[i].final_layout;
> >> +       for (uint32_t i = 0; i < subpass->attachment_count; ++i) {
> >> +               const uint32_t a = subpass->attachments[i].attachment;
> >> +               if (a == VK_ATTACHMENT_UNUSED)
> >> +                       continue;
> >> +
> >> +               if (state->pass->attachments[a].last_subpass_idx != 
> >> subpass_id)
> >> +                       continue;
> > I don't think we can add this without adding logic that if the
> > attachment is not in the final subpass, we transition it to the final
> > layout earlier?
>
> I don't see the problem. If the attachment isn't in the final subpass,
> the transition should happen in the previous subpass?

It should if we did the right thing, but we did not implement doing
the final transition before the final subpass yet right?

>
> >
> >> +
> >> +               VkImageLayout layout = 
> >> state->pass->attachments[a].final_layout;
> >>                  radv_handle_subpass_image_transition(cmd_buffer,
> >> -                                     (struct radv_subpass_attachment){i, 
> >> layout});
> >> +                                     (struct radv_subpass_attachment){a, 
> >> layout});
> >>          }
> >>
> >>          vk_free(&cmd_buffer->pool->alloc, cmd_buffer->state.attachments);
> >> --
> >> 2.20.1
> >>
> >> _______________________________________________
> >> 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

Reply via email to