summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/VulkanManager.cpp
diff options
context:
space:
mode:
authorStan Iliev <stani@google.com>2019-03-21 11:20:29 -0400
committerStan Iliev <stani@google.com>2019-03-21 12:21:08 -0400
commit3e99fa7a272efe3a1c70fd96cb6444f75790811e (patch)
treef19315be0f95c0018c8a0f2fb77b09ee1c46198e /libs/hwui/renderthread/VulkanManager.cpp
parent3be2db9bbf33f56efb92c97c0a91ad8ab670f0e0 (diff)
Block GPU on release fence from dequeueBuffer earlier
If dequeueBuffer fence has not fired yet, then submit to the queue and block GPU on VkSemaphore immediatelly. It is not clear why this CL makes a difference, because semaphore was already waited on. Fixes: 128805387 Fixes: 128806388 Fixes: 128807485 Fixes: 128879779 Fixes: 128417453 Bug: 128998567 Test: Ran SelfieCity, Camera360, Settings app Change-Id: I880ba6fa65509ba4c6faca0dc933551efcee423b
Diffstat (limited to 'libs/hwui/renderthread/VulkanManager.cpp')
-rw-r--r--libs/hwui/renderthread/VulkanManager.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp
index 9916da5d9f10..7f979d6c3e53 100644
--- a/libs/hwui/renderthread/VulkanManager.cpp
+++ b/libs/hwui/renderthread/VulkanManager.cpp
@@ -467,6 +467,10 @@ Frame VulkanManager::dequeueNextBuffer(VulkanSurface* surface) {
GrBackendSemaphore backendSemaphore;
backendSemaphore.initVulkan(semaphore);
bufferInfo->skSurface->wait(1, &backendSemaphore);
+ // The following flush blocks the GPU immediately instead of waiting for other
+ // drawing ops. It seems dequeue_fence is not respected otherwise.
+ //TODO: remove the flush after finding why backendSemaphore is not working.
+ bufferInfo->skSurface->flush();
}
}