Chromium Code Reviews| 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 |