diff options
-rw-r--r-- | src/libANGLE/renderer/vulkan/vk_utils.cpp | 3 | ||||
-rw-r--r-- | src/libANGLE/renderer/vulkan/vk_utils.h | 8 |
2 files changed, 4 insertions, 7 deletions
diff --git a/src/libANGLE/renderer/vulkan/vk_utils.cpp b/src/libANGLE/renderer/vulkan/vk_utils.cpp index 7285841ad3..0a2fb137f1 100644 --- a/src/libANGLE/renderer/vulkan/vk_utils.cpp +++ b/src/libANGLE/renderer/vulkan/vk_utils.cpp @@ -1618,7 +1618,6 @@ angle::Result BufferBlock::init(Context *context, ASSERT(!mBuffer.valid()); ASSERT(!mDeviceMemory.valid()); - mVirtualBlockMutex.init(renderer->isAsyncCommandQueueEnabled()); ANGLE_VK_TRY(context, mVirtualBlock.init(renderer->getDevice(), flags, size)); mBuffer = std::move(buffer); @@ -1664,7 +1663,7 @@ void BufferBlock::unmap(const VkDevice device) void BufferBlock::free(VkDeviceSize offset) { - std::lock_guard<ConditionalMutex> lock(mVirtualBlockMutex); + std::unique_lock<std::mutex> lock(mVirtualBlockMutex); mVirtualBlock.free(offset); } diff --git a/src/libANGLE/renderer/vulkan/vk_utils.h b/src/libANGLE/renderer/vulkan/vk_utils.h index a53c8a462f..37f07acc36 100644 --- a/src/libANGLE/renderer/vulkan/vk_utils.h +++ b/src/libANGLE/renderer/vulkan/vk_utils.h @@ -945,9 +945,7 @@ class BufferBlock final : angle::NonCopyable int32_t getAndIncrementEmptyCounter(); private: - // Protect multi-thread access to mVirtualBlock, which could be possible when asyncCommandQueue - // is enabled. - ConditionalMutex mVirtualBlockMutex; + mutable std::mutex mVirtualBlockMutex; VirtualBlock mVirtualBlock; Buffer mBuffer; @@ -1025,7 +1023,7 @@ ANGLE_INLINE VkDeviceSize BufferBlock::getMemorySize() const ANGLE_INLINE VkBool32 BufferBlock::isEmpty() { - std::lock_guard<ConditionalMutex> lock(mVirtualBlockMutex); + std::unique_lock<std::mutex> lock(mVirtualBlockMutex); return vma::IsVirtualBlockEmpty(mVirtualBlock.getHandle()); } @@ -1054,7 +1052,7 @@ ANGLE_INLINE VkResult BufferBlock::allocate(VkDeviceSize size, VkDeviceSize alignment, VkDeviceSize *offsetOut) { - std::lock_guard<ConditionalMutex> lock(mVirtualBlockMutex); + std::unique_lock<std::mutex> lock(mVirtualBlockMutex); mCountRemainsEmpty = 0; return mVirtualBlock.allocate(size, alignment, offsetOut); } |