summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-09-17 17:51:49 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-09-17 17:51:49 +0000
commit4d291ac4a902fbdae476a83dc11a9995189fb52a (patch)
treed9668de9b3032a0949fdfb58dde7763b713d0a5f /Graphics/GraphicsEngineVulkan
parentFixed strncpy_s errors (diff)
downloadDiligentCore-4d291ac4a902fbdae476a83dc11a9995189fb52a.tar.gz
DiligentCore-4d291ac4a902fbdae476a83dc11a9995189fb52a.zip
Updated unified buffers logic: removed implicit decay to DEFAULT bufers
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp33
1 files changed, 10 insertions, 23 deletions
diff --git a/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp
index 3e3419b6..8edb3472 100644
--- a/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp
@@ -182,25 +182,6 @@ BufferVkImpl::BufferVkImpl(IReferenceCounters* pRefCounters,
VkMemoryRequirements MemReqs = LogicalDevice.GetBufferMemoryRequirements(m_VulkanBuffer);
uint32_t MemoryTypeIndex = VulkanUtilities::VulkanPhysicalDevice::InvalidMemoryTypeIndex;
- if (m_Desc.Usage == USAGE_UNIFIED)
- {
- // Attempt to find device-local and CPU-visible memory type
- // clang-format off
- MemoryTypeIndex = PhysicalDevice.GetMemoryTypeIndex(
- MemReqs.memoryTypeBits,
- VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT |
- VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
- (((m_Desc.CPUAccessFlags & CPU_ACCESS_READ) != 0) ? VK_MEMORY_PROPERTY_HOST_CACHED_BIT : 0) |
- (((m_Desc.CPUAccessFlags & CPU_ACCESS_WRITE) != 0) ? VK_MEMORY_PROPERTY_HOST_COHERENT_BIT : 0)
- );
- // clang-format on
- if (MemoryTypeIndex == VulkanUtilities::VulkanPhysicalDevice::InvalidMemoryTypeIndex)
- {
- DecayUnifiedBuffer();
- }
- }
-
- if (MemoryTypeIndex == VulkanUtilities::VulkanPhysicalDevice::InvalidMemoryTypeIndex)
{
VkMemoryPropertyFlags vkMemoryFlags = 0;
switch (m_Desc.Usage)
@@ -212,12 +193,18 @@ BufferVkImpl::BufferVkImpl(IReferenceCounters* pRefCounters,
break;
case USAGE_STAGING:
- // clang-format off
- vkMemoryFlags =
+ vkMemoryFlags =
+ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
+ (((m_Desc.CPUAccessFlags & CPU_ACCESS_READ) != 0) ? VK_MEMORY_PROPERTY_HOST_CACHED_BIT : 0) |
+ (((m_Desc.CPUAccessFlags & CPU_ACCESS_WRITE) != 0) ? VK_MEMORY_PROPERTY_HOST_COHERENT_BIT : 0);
+ break;
+
+ case USAGE_UNIFIED:
+ vkMemoryFlags =
+ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT |
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
- (((m_Desc.CPUAccessFlags & CPU_ACCESS_READ) != 0) ? VK_MEMORY_PROPERTY_HOST_CACHED_BIT : 0) |
+ (((m_Desc.CPUAccessFlags & CPU_ACCESS_READ) != 0) ? VK_MEMORY_PROPERTY_HOST_CACHED_BIT : 0) |
(((m_Desc.CPUAccessFlags & CPU_ACCESS_WRITE) != 0) ? VK_MEMORY_PROPERTY_HOST_COHERENT_BIT : 0);
- // clang-format on
break;
default: