aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-01-10 00:04:05 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-01-10 00:04:05 +0000
commit0eeadc6c44149dd2891eacdf33a942f29d0970cb (patch)
tree73123f27053dde80c33634cc8a2053e07af5403c
parentf8a0c05f918c5c25880dfc567e3f184cddf0980f (diff)
parent6a93b8c817d5f91635d0f264f90d7129bb2806fd (diff)
downloadangle-0eeadc6c44149dd2891eacdf33a942f29d0970cb.tar.gz
Snap for 9470583 from 6a93b8c817d5f91635d0f264f90d7129bb2806fd to tm-qpr3-release
Change-Id: Icdd4055854a7bf0f8e4ec0895d4f920496d1a85f
-rw-r--r--src/libANGLE/renderer/vulkan/RendererVk.cpp5
-rw-r--r--src/libANGLE/renderer/vulkan/vk_utils.cpp3
-rw-r--r--src/libANGLE/renderer/vulkan/vk_utils.h8
3 files changed, 7 insertions, 9 deletions
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp
index 5ca545e07a..db519f072b 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -3089,8 +3089,9 @@ void RendererVk::initFeatures(DisplayVk *displayVk,
ANGLE_FEATURE_CONDITION(&mFeatures, bindEmptyForUnusedDescriptorSets,
IsAndroid() && isQualcomm);
- ANGLE_FEATURE_CONDITION(&mFeatures, perFrameWindowSizeQuery,
- isIntel || (IsWindows() && isAMD) || IsFuchsia() || isSamsung);
+ ANGLE_FEATURE_CONDITION(
+ &mFeatures, perFrameWindowSizeQuery,
+ IsAndroid() || isIntel || (IsWindows() && isAMD) || IsFuchsia() || isSamsung);
// Disabled on AMD/windows due to buggy behavior.
ANGLE_FEATURE_CONDITION(&mFeatures, disallowSeamfulCubeMapEmulation, IsWindows() && isAMD);
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);
}