From 1d9de71ed9b346e2f7ca1817a116b9111788081b Mon Sep 17 00:00:00 2001 From: Greg Daniel Date: Fri, 14 May 2021 09:28:34 -0400 Subject: Add a mutex to VulkanManager::initialize. The initialize call can be made from both an GrallocUploadThread and the RenderThread. So we need a mutex to make sure both threads don't try to initialize in parallel. Bug: 187218890 Test: manual running of device, guessing this could fix bug. Change-Id: I203afd91fad5eacc131c839dff1a1065864b76f8 --- libs/hwui/renderthread/VulkanManager.cpp | 2 ++ libs/hwui/renderthread/VulkanManager.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp index 01126860b3ba..07146e845714 100644 --- a/libs/hwui/renderthread/VulkanManager.cpp +++ b/libs/hwui/renderthread/VulkanManager.cpp @@ -340,6 +340,8 @@ void VulkanManager::setupDevice(GrVkExtensions& grExtensions, VkPhysicalDeviceFe } void VulkanManager::initialize() { + std::lock_guard _lock{mInitializeLock}; + if (mDevice != VK_NULL_HANDLE) { return; } diff --git a/libs/hwui/renderthread/VulkanManager.h b/libs/hwui/renderthread/VulkanManager.h index 7b5fe19c64f5..b816649edf6e 100644 --- a/libs/hwui/renderthread/VulkanManager.h +++ b/libs/hwui/renderthread/VulkanManager.h @@ -220,6 +220,8 @@ private: VkSemaphore mSwapSemaphore = VK_NULL_HANDLE; void* mDestroySemaphoreContext = nullptr; + + std::mutex mInitializeLock; }; } /* namespace renderthread */ -- cgit v1.2.3-59-g8ed1b