diff options
author | Roman Kuznetsov <r.kuznetsow@gmail.com> | 2019-02-17 21:22:29 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2019-03-01 10:45:24 +0300 |
commit | 9556ebaa46532643b0970dfba9604a40649fbbd9 (patch) | |
tree | 7b9f0bf48d07649dc448eda93f3898bb61725a13 /drape | |
parent | 050a56a4abc730079f9e63372ec062404642dd95 (diff) |
[vulkan] Fixed shaders and staging buffer
Diffstat (limited to 'drape')
-rw-r--r-- | drape/utils/vertex_decl.cpp | 2 | ||||
-rw-r--r-- | drape/vulkan/vulkan_memory_manager.cpp | 3 | ||||
-rw-r--r-- | drape/vulkan/vulkan_memory_manager.hpp | 2 | ||||
-rw-r--r-- | drape/vulkan/vulkan_pipeline.cpp | 2 | ||||
-rw-r--r-- | drape/vulkan/vulkan_staging_buffer.cpp | 6 |
5 files changed, 10 insertions, 5 deletions
diff --git a/drape/utils/vertex_decl.cpp b/drape/utils/vertex_decl.cpp index d2700eca5b..0821250465 100644 --- a/drape/utils/vertex_decl.cpp +++ b/drape/utils/vertex_decl.cpp @@ -128,7 +128,7 @@ dp::BindingInfo TextDynamicBindingInit() sizeof(TextDynamicVertex::TNormal)), ""); dp::BindingFiller<TextDynamicVertex> filler(2, TextDynamicVertex::GetDynamicStreamID()); - filler.FillDecl<TextStaticVertex::TPosition3d>("a_position"); + filler.FillDecl<TextDynamicVertex::TPosition3d>("a_position"); filler.FillDecl<TextDynamicVertex::TNormal>("a_normal"); return filler.m_info; diff --git a/drape/vulkan/vulkan_memory_manager.cpp b/drape/vulkan/vulkan_memory_manager.cpp index 3fc797a61e..15f8e2a248 100644 --- a/drape/vulkan/vulkan_memory_manager.cpp +++ b/drape/vulkan/vulkan_memory_manager.cpp @@ -123,7 +123,8 @@ uint32_t VulkanMemoryManager::GetSizeAlignment(VkMemoryRequirements const & memR static_cast<uint32_t>(m_deviceLimits.nonCoherentAtomSize)); } -uint32_t VulkanMemoryManager::GetAligned(uint32_t value, uint32_t alignment) const +// static +uint32_t VulkanMemoryManager::GetAligned(uint32_t value, uint32_t alignment) { if (alignment == 0) return value; diff --git a/drape/vulkan/vulkan_memory_manager.hpp b/drape/vulkan/vulkan_memory_manager.hpp index 3cc333c578..574663b44d 100644 --- a/drape/vulkan/vulkan_memory_manager.hpp +++ b/drape/vulkan/vulkan_memory_manager.hpp @@ -76,7 +76,7 @@ public: uint32_t GetOffsetAlignment(ResourceType resourceType) const; uint32_t GetSizeAlignment(VkMemoryRequirements const & memReqs) const; - uint32_t GetAligned(uint32_t value, uint32_t alignment) const; + static uint32_t GetAligned(uint32_t value, uint32_t alignment); private: boost::optional<uint32_t> GetMemoryTypeIndex(uint32_t typeBits, diff --git a/drape/vulkan/vulkan_pipeline.cpp b/drape/vulkan/vulkan_pipeline.cpp index 05db6d34cc..f126dc2946 100644 --- a/drape/vulkan/vulkan_pipeline.cpp +++ b/drape/vulkan/vulkan_pipeline.cpp @@ -191,7 +191,7 @@ void VulkanPipeline::Dump(VkDevice device) if (!m_isChanged) return; - size_t constexpr kMaxCacheSizeInBytes = 100 * 1024; + size_t constexpr kMaxCacheSizeInBytes = 200 * 1024; size_t cacheSize; VkResult statusCode; diff --git a/drape/vulkan/vulkan_staging_buffer.cpp b/drape/vulkan/vulkan_staging_buffer.cpp index 17d9580f80..010c16fc79 100644 --- a/drape/vulkan/vulkan_staging_buffer.cpp +++ b/drape/vulkan/vulkan_staging_buffer.cpp @@ -13,7 +13,7 @@ namespace vulkan VulkanStagingBuffer::VulkanStagingBuffer(ref_ptr<VulkanObjectManager> objectManager, uint32_t sizeInBytes) : m_objectManager(objectManager) - , m_sizeInBytes(sizeInBytes) + , m_sizeInBytes(VulkanMemoryManager::GetAligned(sizeInBytes, 64)) { auto constexpr kStagingBuffer = VulkanMemoryManager::ResourceType::Staging; VkDevice device = m_objectManager->GetDevice(); @@ -22,7 +22,11 @@ VulkanStagingBuffer::VulkanStagingBuffer(ref_ptr<VulkanObjectManager> objectMana m_object = m_objectManager->CreateBuffer(kStagingBuffer, sizeInBytes, 0 /* batcherHash */); VkMemoryRequirements memReqs = {}; vkGetBufferMemoryRequirements(device, m_object.m_buffer, &memReqs); + + // We must be able to map the whole range. m_sizeAlignment = mm.GetSizeAlignment(memReqs); + CHECK(HasEnoughSpace(m_sizeInBytes), ()); + m_offsetAlignment = mm.GetOffsetAlignment(kStagingBuffer); m_pointer = m_objectManager->MapUnsafe(m_object); } |