diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-09-17 17:51:49 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-09-17 17:51:49 +0000 |
| commit | 4d291ac4a902fbdae476a83dc11a9995189fb52a (patch) | |
| tree | d9668de9b3032a0949fdfb58dde7763b713d0a5f /Graphics/GraphicsEngineVulkan | |
| parent | Fixed strncpy_s errors (diff) | |
| download | DiligentCore-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.cpp | 33 |
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: |
