Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(193)

Side by Side Diff: src/gpu/vk/GrVkGpuCommandBuffer.cpp

Issue 2256843002: Don't add the resolve attachment to vulkan render passes. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrVkGpuCommandBuffer.h" 8 #include "GrVkGpuCommandBuffer.h"
9 9
10 #include "GrMesh.h" 10 #include "GrMesh.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 fRenderPass->unref(fGpu); 93 fRenderPass->unref(fGpu);
94 } 94 }
95 95
96 GrGpu* GrVkGpuCommandBuffer::gpu() { return fGpu; } 96 GrGpu* GrVkGpuCommandBuffer::gpu() { return fGpu; }
97 97
98 void GrVkGpuCommandBuffer::end() { 98 void GrVkGpuCommandBuffer::end() {
99 fCommandBuffer->end(fGpu); 99 fCommandBuffer->end(fGpu);
100 } 100 }
101 101
102 void GrVkGpuCommandBuffer::onSubmit(const SkIRect& bounds) { 102 void GrVkGpuCommandBuffer::onSubmit(const SkIRect& bounds) {
103 // Change layout of our render target so it can be used as the color attachm ent 103 // Change layout of our render target so it can be used as the color attachm ent. Currently
104 fRenderTarget->setImageLayout(fGpu, 104 // we dont' attach the resolve to the framebuffer so no need to change its l ayout.
jvanverth1 2016/08/26 15:03:19 don't
egdaniel 2016/08/26 15:48:45 Done.
105 if (GrVkImage* msaaImage = fRenderTarget->msaaImage()) {
jvanverth1 2016/08/26 15:03:19 How about GrVkImage* layoutImage = fRenderTarget-
egdaniel 2016/08/26 15:48:45 Done.
106 msaaImage->setImageLayout(fGpu,
105 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, 107 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
106 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, 108 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
107 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, 109 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
108 false); 110 false);
111 } else {
112 fRenderTarget->setImageLayout(fGpu,
113 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
114 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
115 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
116 false);
117 }
109 118
110 // If we are using a stencil attachment we also need to update its layout 119 // If we are using a stencil attachment we also need to update its layout
111 if (GrStencilAttachment* stencil = fRenderTarget->renderTargetPriv().getSten cilAttachment()) { 120 if (GrStencilAttachment* stencil = fRenderTarget->renderTargetPriv().getSten cilAttachment()) {
112 GrVkStencilAttachment* vkStencil = (GrVkStencilAttachment*)stencil; 121 GrVkStencilAttachment* vkStencil = (GrVkStencilAttachment*)stencil;
113 vkStencil->setImageLayout(fGpu, 122 vkStencil->setImageLayout(fGpu,
114 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIM AL, 123 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIM AL,
115 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | 124 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT |
116 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, 125 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
117 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, 126 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
118 false); 127 false);
119 } 128 }
120 129
121 if (GrVkImage* msaaImage = fRenderTarget->msaaImage()) {
122 msaaImage->setImageLayout(fGpu,
123 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
124 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
125 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
126 false);
127 }
128
129 for (int i = 0; i < fSampledImages.count(); ++i) { 130 for (int i = 0; i < fSampledImages.count(); ++i) {
130 fSampledImages[i]->setImageLayout(fGpu, 131 fSampledImages[i]->setImageLayout(fGpu,
131 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIM AL, 132 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIM AL,
132 VK_ACCESS_SHADER_READ_BIT, 133 VK_ACCESS_SHADER_READ_BIT,
133 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, 134 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
134 false); 135 false);
135 } 136 }
136 137
137 fGpu->submitSecondaryCommandBuffer(fCommandBuffer, fRenderPass, &fColorClear Value, 138 fGpu->submitSecondaryCommandBuffer(fCommandBuffer, fRenderPass, &fColorClear Value,
138 fRenderTarget, bounds); 139 fRenderTarget, bounds);
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 fGpu->stats()->incNumDraws(); 438 fGpu->stats()->incNumDraws();
438 } while ((nonIdxMesh = iter.next())); 439 } while ((nonIdxMesh = iter.next()));
439 } 440 }
440 441
441 // Technically we don't have to call this here (since there is a safety chec k in 442 // Technically we don't have to call this here (since there is a safety chec k in
442 // pipelineState:setData but this will allow for quicker freeing of resource s if the 443 // pipelineState:setData but this will allow for quicker freeing of resource s if the
443 // pipelineState sits in a cache for a while. 444 // pipelineState sits in a cache for a while.
444 pipelineState->freeTempResources(fGpu); 445 pipelineState->freeTempResources(fGpu);
445 } 446 }
446 447
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698