summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-04-01 05:46:12 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-04-01 05:46:13 +0000
commitfc812651f819cce3c88f5cc7d8d5dcbc49d195f2 (patch)
tree75f891d0f1b921fba1665162c15bd7472cb9e290
parenta396414e0574b70037da11c015440266d9fca573 (diff)
parentc88409c2b8e99be8d5f134e260c4c29b1e632b3c (diff)
Merge "vulkan: Don't dequeue in AcquireNextImageKHR if in shared mode" into oc-dev
-rw-r--r--vulkan/libvulkan/swapchain.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp
index e2e733e0a3..a4f968a7b2 100644
--- a/vulkan/libvulkan/swapchain.cpp
+++ b/vulkan/libvulkan/swapchain.cpp
@@ -1210,6 +1210,16 @@ VkResult AcquireNextImageKHR(VkDevice device,
timeout != UINT64_MAX,
"vkAcquireNextImageKHR: non-infinite timeouts not yet implemented");
+ if (swapchain.shared) {
+ // In shared mode, we keep the buffer dequeued all the time, so we don't
+ // want to dequeue a buffer here. Instead, just ask the driver to ensure
+ // the semaphore and fence passed to us will be signalled.
+ *image_index = 0;
+ result = GetData(device).driver.AcquireImageANDROID(
+ device, swapchain.images[*image_index].image, -1, semaphore, vk_fence);
+ return result;
+ }
+
ANativeWindowBuffer* buffer;
int fence_fd;
err = window->dequeueBuffer(window, &buffer, &fence_fd);