diff options
Diffstat (limited to 'src/gpu/vk/GrVkGpuCommandBuffer.cpp')
-rw-r--r-- | src/gpu/vk/GrVkGpuCommandBuffer.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/src/gpu/vk/GrVkGpuCommandBuffer.cpp b/src/gpu/vk/GrVkGpuCommandBuffer.cpp index 77a038a957..f49b180e38 100644 --- a/src/gpu/vk/GrVkGpuCommandBuffer.cpp +++ b/src/gpu/vk/GrVkGpuCommandBuffer.cpp @@ -100,12 +100,15 @@ void GrVkGpuCommandBuffer::end() { } void GrVkGpuCommandBuffer::onSubmit(const SkIRect& bounds) { - // Change layout of our render target so it can be used as the color attachment - fRenderTarget->setImageLayout(fGpu, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - false); + // Change layout of our render target so it can be used as the color attachment. Currently + // we don't attach the resolve to the framebuffer so no need to change its layout. + GrVkImage* targetImage = fRenderTarget->msaaImage() ? fRenderTarget->msaaImage() + : fRenderTarget; + targetImage->setImageLayout(fGpu, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, + false); // If we are using a stencil attachment we also need to update its layout if (GrStencilAttachment* stencil = fRenderTarget->renderTargetPriv().getStencilAttachment()) { @@ -118,14 +121,6 @@ void GrVkGpuCommandBuffer::onSubmit(const SkIRect& bounds) { false); } - if (GrVkImage* msaaImage = fRenderTarget->msaaImage()) { - msaaImage->setImageLayout(fGpu, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, - VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, - false); - } - for (int i = 0; i < fSampledImages.count(); ++i) { fSampledImages[i]->setImageLayout(fGpu, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, |