Chromium Code Reviews| Index: src/gpu/vk/GrVkGpuCommandBuffer.cpp |
| diff --git a/src/gpu/vk/GrVkGpuCommandBuffer.cpp b/src/gpu/vk/GrVkGpuCommandBuffer.cpp |
| index dc553e03772329aa4f03e9d75970a4acfd34ef4c..52fb55bf064618124268fcc5d566dc1ce13a729b 100644 |
| --- a/src/gpu/vk/GrVkGpuCommandBuffer.cpp |
| +++ b/src/gpu/vk/GrVkGpuCommandBuffer.cpp |
| @@ -130,6 +130,38 @@ void GrVkGpuCommandBuffer::onSubmit(const SkIRect& bounds) { |
| fRenderTarget, bounds); |
| } |
| +void GrVkGpuCommandBuffer::discard(GrRenderTarget* target) { |
| + if (fIsEmpty) { |
| + // We will change the render pass to do a clear load instead |
| + GrVkRenderPass::LoadStoreOps vkColorOps(VK_ATTACHMENT_LOAD_OP_DONT_CARE, |
| + VK_ATTACHMENT_STORE_OP_STORE); |
| + GrVkRenderPass::LoadStoreOps vkStencilOps(VK_ATTACHMENT_LOAD_OP_LOAD, |
|
jvanverth1
2016/06/29 16:00:30
Shouldn't this and the resolve be LOAD_OP_DONT_CAR
egdaniel
2016/06/29 16:11:30
In general, when we call discard on a RT do we mea
bsalomon
2016/06/29 17:45:24
both, I guess? The current discard stuff is not us
|
| + VK_ATTACHMENT_STORE_OP_STORE); |
| + GrVkRenderPass::LoadStoreOps vkResolveOps(VK_ATTACHMENT_LOAD_OP_LOAD, |
| + VK_ATTACHMENT_STORE_OP_STORE); |
| + |
| + const GrVkRenderPass* oldRP = fRenderPass; |
| + |
| + GrVkRenderTarget* vkRT = static_cast<GrVkRenderTarget*>(target); |
| + const GrVkResourceProvider::CompatibleRPHandle& rpHandle = |
| + vkRT->compatibleRenderPassHandle(); |
| + if (rpHandle.isValid()) { |
| + fRenderPass = fGpu->resourceProvider().findRenderPass(rpHandle, |
| + vkColorOps, |
| + vkResolveOps, |
| + vkStencilOps); |
| + } else { |
| + fRenderPass = fGpu->resourceProvider().findRenderPass(*vkRT, |
| + vkColorOps, |
| + vkResolveOps, |
| + vkStencilOps); |
| + } |
| + |
| + SkASSERT(fRenderPass->isCompatible(*oldRP)); |
| + oldRP->unref(fGpu); |
| + } |
| +} |
| + |
| void GrVkGpuCommandBuffer::onClearStencilClip(GrRenderTarget* target, |
| const SkIRect& rect, |
| bool insideClip) { |