From 216542c939006c3371d012b231d5607baa8bdde7 Mon Sep 17 00:00:00 2001 From: AMZN-tpeng <82184807+AMZN-tpeng@users.noreply.github.com> Date: Tue, 20 Jul 2021 11:24:35 -0700 Subject: [PATCH] =?UTF-8?q?[ATOM][RHI][Vulkan][Android]=20-=20pick=20the?= =?UTF-8?q?=20correct=20share=20mode=20based=20on=20f=E2=80=A6=20(#2166)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [ATOM][RHI][Vulkan][Android] - pick the correct share mode based on flags and size of queue families Signed-off-by: Peng --- Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp index 4e7a13444b..6d3080dce8 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp +++ b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/Device.cpp @@ -815,11 +815,12 @@ namespace AZ createInfo.size = descriptor.m_byteCount; createInfo.usage = GetBufferUsageFlagBitsUnderRestrictions(descriptor.m_bindFlags); // Trying to guess here if the buffers are going to be used as attachments. Maybe it would be better to add an explicit flag in the descriptor. - createInfo.sharingMode = - RHI::CheckBitsAny( - descriptor.m_bindFlags, - RHI::BufferBindFlags::ShaderWrite | RHI::BufferBindFlags::Predication | RHI::BufferBindFlags::Indirect) - ? VK_SHARING_MODE_EXCLUSIVE + createInfo.sharingMode = + (RHI::CheckBitsAny( + descriptor.m_bindFlags, + RHI::BufferBindFlags::ShaderWrite | RHI::BufferBindFlags::Predication | RHI::BufferBindFlags::Indirect) || + (queueFamilies.size()) <= 1) + ? VK_SHARING_MODE_EXCLUSIVE : VK_SHARING_MODE_CONCURRENT; createInfo.queueFamilyIndexCount = static_cast(queueFamilies.size()); createInfo.pQueueFamilyIndices = queueFamilies.empty() ? nullptr : queueFamilies.data();