summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/VulkanManager.cpp
diff options
context:
space:
mode:
authorStan Iliev <stani@google.com>2019-03-26 15:14:34 -0400
committerStan Iliev <stani@google.com>2019-03-26 15:14:34 -0400
commitbc5f06bdaa95da7e2a94d8827fffbadad7bc813d (patch)
treef1504301fc81b3680363f719e8d3903b27740181 /libs/hwui/renderthread/VulkanManager.cpp
parentdece92b28744012f6db87f5100b511cd459218a1 (diff)
Fix crash after dequeueNativeBuffer fails
Anytime dequeueNativeBuffer fails, it sets mDequeuedIndex to -1. This is causing a crash latter, when getCurrentSkSurface tries to index mNativeBuffers[mDequeuedIndex]. This CL removes mDequeuedIndex and improves Vulkan swapchain error handling. Test: Ran Camera app Bug: 129024275 Change-Id: Ieeb685c3a1b33f23ce2334d286199a44ace53165
Diffstat (limited to 'libs/hwui/renderthread/VulkanManager.cpp')
-rw-r--r--libs/hwui/renderthread/VulkanManager.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp
index b8ebf3bb0ca9..c92909898652 100644
--- a/libs/hwui/renderthread/VulkanManager.cpp
+++ b/libs/hwui/renderthread/VulkanManager.cpp
@@ -493,6 +493,12 @@ void VulkanManager::swapBuffers(VulkanSurface* surface, const SkRect& dirtyRect)
mDeviceWaitIdle(mDevice);
}
+ VulkanSurface::NativeBufferInfo* bufferInfo = surface->getCurrentBufferInfo();
+ if (!bufferInfo) {
+ // If VulkanSurface::dequeueNativeBuffer failed earlier, then swapBuffers is a no-op.
+ return;
+ }
+
VkExportSemaphoreCreateInfo exportInfo;
exportInfo.sType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO;
exportInfo.pNext = nullptr;
@@ -509,8 +515,6 @@ void VulkanManager::swapBuffers(VulkanSurface* surface, const SkRect& dirtyRect)
GrBackendSemaphore backendSemaphore;
backendSemaphore.initVulkan(semaphore);
- VulkanSurface::NativeBufferInfo* bufferInfo = surface->getCurrentBufferInfo();
-
int fenceFd = -1;
GrSemaphoresSubmitted submitted =
bufferInfo->skSurface->flush(SkSurface::BackendSurfaceAccess::kPresent,