OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "GrVkCommandBuffer.h" | 8 #include "GrVkCommandBuffer.h" |
9 | 9 |
10 #include "GrVkFramebuffer.h" | 10 #include "GrVkFramebuffer.h" |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 } | 304 } |
305 | 305 |
306 void GrVkPrimaryCommandBuffer::executeCommands(const GrVkGpu* gpu, | 306 void GrVkPrimaryCommandBuffer::executeCommands(const GrVkGpu* gpu, |
307 const GrVkSecondaryCommandBuffer*
buffer) { | 307 const GrVkSecondaryCommandBuffer*
buffer) { |
308 SkASSERT(fIsActive); | 308 SkASSERT(fIsActive); |
309 SkASSERT(fActiveRenderPass); | 309 SkASSERT(fActiveRenderPass); |
310 SkASSERT(fActiveRenderPass->isCompatible(*buffer->fActiveRenderPass)); | 310 SkASSERT(fActiveRenderPass->isCompatible(*buffer->fActiveRenderPass)); |
311 | 311 |
312 GR_VK_CALL(gpu->vkInterface(), CmdExecuteCommands(fCmdBuffer, 1, &buffer->fC
mdBuffer)); | 312 GR_VK_CALL(gpu->vkInterface(), CmdExecuteCommands(fCmdBuffer, 1, &buffer->fC
mdBuffer)); |
313 this->addResource(buffer); | 313 this->addResource(buffer); |
| 314 // When executing a secondary command buffer all state (besides render pass
state) becomes |
| 315 // invalidated and must be reset. This includes bound buffers, pipelines, dy
namic state, etc. |
| 316 this->invalidateState(); |
314 } | 317 } |
315 | 318 |
316 void GrVkPrimaryCommandBuffer::submitToQueue(const GrVkGpu* gpu, | 319 void GrVkPrimaryCommandBuffer::submitToQueue(const GrVkGpu* gpu, |
317 VkQueue queue, | 320 VkQueue queue, |
318 GrVkGpu::SyncQueue sync) { | 321 GrVkGpu::SyncQueue sync) { |
319 SkASSERT(!fIsActive); | 322 SkASSERT(!fIsActive); |
320 | 323 |
321 VkResult err; | 324 VkResult err; |
322 VkFenceCreateInfo fenceInfo; | 325 VkFenceCreateInfo fenceInfo; |
323 memset(&fenceInfo, 0, sizeof(VkFenceCreateInfo)); | 326 memset(&fenceInfo, 0, sizeof(VkFenceCreateInfo)); |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 fIsActive = true; | 546 fIsActive = true; |
544 } | 547 } |
545 | 548 |
546 void GrVkSecondaryCommandBuffer::end(const GrVkGpu* gpu) { | 549 void GrVkSecondaryCommandBuffer::end(const GrVkGpu* gpu) { |
547 SkASSERT(fIsActive); | 550 SkASSERT(fIsActive); |
548 GR_VK_CALL_ERRCHECK(gpu->vkInterface(), EndCommandBuffer(fCmdBuffer)); | 551 GR_VK_CALL_ERRCHECK(gpu->vkInterface(), EndCommandBuffer(fCmdBuffer)); |
549 this->invalidateState(); | 552 this->invalidateState(); |
550 fIsActive = false; | 553 fIsActive = false; |
551 } | 554 } |
552 | 555 |
OLD | NEW |