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(); | |
jvanverth1
2016/06/06 20:47:43
All of it must be reset? That's unfortunate.
egdaniel
2016/06/07 15:22:37
Yes. But in general this shouldn't hurt us because
| |
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 |