diff options
author | 2017-06-15 15:25:38 -0400 | |
---|---|---|
committer | 2017-06-15 19:49:18 +0000 | |
commit | 66366c697853e906d961ae691e2bc5209cdcfa62 (patch) | |
tree | f90de7fef9bd094ded9f6497c0004876694cca61 /src/gpu/vk/GrVkCommandBuffer.cpp | |
parent | 000182881a65ef4b12ca3739d47c5e21e79ca919 (diff) |
Add API for flushing surfaces with gpu semaphores
BUG=skia:
Change-Id: Ia4bfef784cd5f2516ceccafce958be18a86f91d1
Reviewed-on: https://skia-review.googlesource.com/11488
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Forrest Reiling <freiling@google.com>
Diffstat (limited to 'src/gpu/vk/GrVkCommandBuffer.cpp')
-rw-r--r-- | src/gpu/vk/GrVkCommandBuffer.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/gpu/vk/GrVkCommandBuffer.cpp b/src/gpu/vk/GrVkCommandBuffer.cpp index ea0a02cb34..63642d4ed0 100644 --- a/src/gpu/vk/GrVkCommandBuffer.cpp +++ b/src/gpu/vk/GrVkCommandBuffer.cpp @@ -402,7 +402,7 @@ void GrVkPrimaryCommandBuffer::submitToQueue( const GrVkGpu* gpu, VkQueue queue, GrVkGpu::SyncQueue sync, - const GrVkSemaphore::Resource* signalSemaphore, + SkTArray<const GrVkSemaphore::Resource*>& signalSemaphores, SkTArray<const GrVkSemaphore::Resource*>& waitSemaphores) { SkASSERT(!fIsActive); @@ -418,23 +418,20 @@ void GrVkPrimaryCommandBuffer::submitToQueue( GR_VK_CALL(gpu->vkInterface(), ResetFences(gpu->device(), 1, &fSubmitFence)); } - if (signalSemaphore) { - this->addResource(signalSemaphore); + int signalCount = signalSemaphores.count(); + SkTArray<VkSemaphore> vkSignalSem(signalCount); + for (int i = 0; i < signalCount; ++i) { + this->addResource(signalSemaphores[i]); + vkSignalSem.push_back(signalSemaphores[i]->semaphore()); } int waitCount = waitSemaphores.count(); SkTArray<VkSemaphore> vkWaitSems(waitCount); SkTArray<VkPipelineStageFlags> vkWaitStages(waitCount); - if (waitCount) { - for (int i = 0; i < waitCount; ++i) { - this->addResource(waitSemaphores[i]); - vkWaitSems.push_back(waitSemaphores[i]->semaphore()); - vkWaitStages.push_back(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); - } - } - SkTArray<VkSemaphore> vkSignalSem; - if (signalSemaphore) { - vkSignalSem.push_back(signalSemaphore->semaphore()); + for (int i = 0; i < waitCount; ++i) { + this->addResource(waitSemaphores[i]); + vkWaitSems.push_back(waitSemaphores[i]->semaphore()); + vkWaitStages.push_back(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); } VkSubmitInfo submitInfo; |