Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/drape
diff options
context:
space:
mode:
authorRoman Kuznetsov <r.kuznetsow@gmail.com>2019-02-17 21:22:29 +0300
committerDaria Volvenkova <d.volvenkova@corp.mail.ru>2019-03-01 10:45:24 +0300
commit9556ebaa46532643b0970dfba9604a40649fbbd9 (patch)
tree7b9f0bf48d07649dc448eda93f3898bb61725a13 /drape
parent050a56a4abc730079f9e63372ec062404642dd95 (diff)
[vulkan] Fixed shaders and staging buffer
Diffstat (limited to 'drape')
-rw-r--r--drape/utils/vertex_decl.cpp2
-rw-r--r--drape/vulkan/vulkan_memory_manager.cpp3
-rw-r--r--drape/vulkan/vulkan_memory_manager.hpp2
-rw-r--r--drape/vulkan/vulkan_pipeline.cpp2
-rw-r--r--drape/vulkan/vulkan_staging_buffer.cpp6
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);
}