| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2 * Copyright 2016 Google Inc. | 
|  | 3 * | 
|  | 4 * Use of this source code is governed by a BSD-style license that can be | 
|  | 5 * found in the LICENSE file. | 
|  | 6 */ | 
|  | 7 | 
|  | 8 #include "GrVkGpuCommandBuffer.h" | 
|  | 9 | 
|  | 10 #include "GrVkCommandBuffer.h" | 
|  | 11 #include "GrVkGpu.h" | 
|  | 12 #include "GrVkRenderPass.h" | 
|  | 13 #include "GrVkRenderTarget.h" | 
|  | 14 #include "GrVkResourceProvider.h" | 
|  | 15 | 
|  | 16 void get_vk_load_store_ops(GrGpuCommandBuffer::LoadAndStoreOp op, | 
|  | 17                            VkAttachmentLoadOp* loadOp, VkAttachmentStoreOp* stor
    eOp) { | 
|  | 18     switch (op) { | 
|  | 19         case GrGpuCommandBuffer::kLoadAndStore_LoadAndStoreOp: | 
|  | 20             *loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; | 
|  | 21             *storeOp = VK_ATTACHMENT_STORE_OP_STORE; | 
|  | 22             break; | 
|  | 23         case GrGpuCommandBuffer::kLoadAndDiscard_LoadAndStoreOp: | 
|  | 24             *loadOp = VK_ATTACHMENT_LOAD_OP_LOAD; | 
|  | 25             *storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; | 
|  | 26             break; | 
|  | 27         case GrGpuCommandBuffer::kClearAndStore_LoadAndStoreOp: | 
|  | 28             *loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; | 
|  | 29             *storeOp = VK_ATTACHMENT_STORE_OP_STORE; | 
|  | 30             break; | 
|  | 31         case GrGpuCommandBuffer::kClearAndDiscard_LoadAndStoreOp: | 
|  | 32             *loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; | 
|  | 33             *storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; | 
|  | 34             break; | 
|  | 35         case GrGpuCommandBuffer::kDiscardAndStore_LoadAndStoreOp: | 
|  | 36             *loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; | 
|  | 37             *storeOp = VK_ATTACHMENT_STORE_OP_STORE; | 
|  | 38             break; | 
|  | 39         case GrGpuCommandBuffer::kDiscardAndDiscard_LoadAndStoreOp: | 
|  | 40             *loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; | 
|  | 41             *storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; | 
|  | 42             break; | 
|  | 43     } | 
|  | 44 } | 
|  | 45 | 
|  | 46 GrVkGpuCommandBuffer::GrVkGpuCommandBuffer(GrVkGpu* gpu, | 
|  | 47                                            const GrVkRenderTarget& target, | 
|  | 48                                            LoadAndStoreOp colorOp, GrColor color
    Clear, | 
|  | 49                                            LoadAndStoreOp stencilOp, GrColor ste
    ncilClear) | 
|  | 50     : fGpu(gpu) { | 
|  | 51     VkAttachmentLoadOp vkLoadOp; | 
|  | 52     VkAttachmentStoreOp vkStoreOp; | 
|  | 53 | 
|  | 54     get_vk_load_store_ops(colorOp, &vkLoadOp, &vkStoreOp); | 
|  | 55     GrVkRenderPass::LoadStoreOps vkColorOps(vkLoadOp, vkStoreOp); | 
|  | 56 | 
|  | 57     get_vk_load_store_ops(stencilOp, &vkLoadOp, &vkStoreOp); | 
|  | 58     GrVkRenderPass::LoadStoreOps vkStencilOps(vkLoadOp, vkStoreOp); | 
|  | 59 | 
|  | 60     GrVkRenderPass::LoadStoreOps vkResolveOps(VK_ATTACHMENT_LOAD_OP_LOAD, | 
|  | 61                                               VK_ATTACHMENT_STORE_OP_STORE); | 
|  | 62 | 
|  | 63     const GrVkResourceProvider::CompatibleRPHandle& rpHandle = target.compatible
    RenderPassHandle(); | 
|  | 64     if (rpHandle.isValid()) { | 
|  | 65         fRenderPass = fGpu->resourceProvider().findRenderPass(rpHandle, | 
|  | 66                                                               vkColorOps, | 
|  | 67                                                               vkResolveOps, | 
|  | 68                                                               vkStencilOps); | 
|  | 69     } else { | 
|  | 70         fRenderPass = fGpu->resourceProvider().findRenderPass(target, | 
|  | 71                                                               vkColorOps, | 
|  | 72                                                               vkResolveOps, | 
|  | 73                                                               vkStencilOps); | 
|  | 74     } | 
|  | 75 | 
|  | 76     fCommandBuffer = GrVkSecondaryCommandBuffer::Create(gpu, gpu->cmdPool(), fRe
    nderPass); | 
|  | 77     fCommandBuffer->begin(gpu, target.framebuffer()); | 
|  | 78 } | 
|  | 79 | 
|  | 80 GrVkGpuCommandBuffer::~GrVkGpuCommandBuffer() { | 
|  | 81     fCommandBuffer->unref(fGpu); | 
|  | 82     fRenderPass->unref(fGpu); | 
|  | 83 } | 
|  | 84 | 
|  | 85 void GrVkGpuCommandBuffer::end() { | 
|  | 86     fCommandBuffer->end(fGpu); | 
|  | 87 } | 
|  | 88 | 
|  | 89 void GrVkGpuCommandBuffer::submit() { | 
|  | 90     fGpu->submitSecondaryCommandBuffer(fCommandBuffer); | 
|  | 91 } | 
|  | 92 | 
| OLD | NEW | 
|---|