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();