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-20 00:03:27 +0300
committerDaria Volvenkova <d.volvenkova@corp.mail.ru>2019-03-01 10:45:24 +0300
commit8203055211962d6d383dd2738f08456be9266229 (patch)
tree29e47130b441ecdd06c41295b3096594d7d865df /drape
parentc68749eccf8492671a5f9432fcb2c9af95c04111 (diff)
[vulkan] Fixed surface changing
Diffstat (limited to 'drape')
-rw-r--r--drape/render_state.cpp6
-rw-r--r--drape/vulkan/vulkan_base_context.cpp16
-rw-r--r--drape/vulkan/vulkan_base_context.hpp5
-rw-r--r--drape/vulkan/vulkan_mesh_object_impl.cpp2
4 files changed, 15 insertions, 14 deletions
diff --git a/drape/render_state.cpp b/drape/render_state.cpp
index a945368bae..3e5174090d 100644
--- a/drape/render_state.cpp
+++ b/drape/render_state.cpp
@@ -238,6 +238,12 @@ void TextureState::ApplyTextures(ref_ptr<GraphicsContext> context, RenderState c
CHECK(it != bindings.end(), ("Texture bindings inconsistency."));
ref_ptr<dp::vulkan::VulkanTexture> t = texture.second->GetHardwareTexture();
+ if (t == nullptr)
+ {
+ texture.second->UpdateState(context);
+ t = texture.second->GetHardwareTexture();
+ CHECK(t != nullptr, ());
+ }
t->Bind(context);
t->SetFilter(state.GetTextureFilter());
diff --git a/drape/vulkan/vulkan_base_context.cpp b/drape/vulkan/vulkan_base_context.cpp
index 0947797245..f1612bf094 100644
--- a/drape/vulkan/vulkan_base_context.cpp
+++ b/drape/vulkan/vulkan_base_context.cpp
@@ -105,7 +105,7 @@ void VulkanBaseContext::Init(ApiVersion apiVersion)
}
void VulkanBaseContext::SetSurface(VkSurfaceKHR surface, VkSurfaceFormatKHR surfaceFormat,
- VkSurfaceCapabilitiesKHR surfaceCapabilities, int width, int height)
+ VkSurfaceCapabilitiesKHR const & surfaceCapabilities)
{
m_surface = surface;
m_surfaceFormat = surfaceFormat;
@@ -115,7 +115,7 @@ void VulkanBaseContext::SetSurface(VkSurfaceKHR surface, VkSurfaceFormatKHR surf
RecreateSwapchain();
}
-void VulkanBaseContext::ResetSurface()
+void VulkanBaseContext::ResetSurface(bool allowPipelineDump)
{
vkDeviceWaitIdle(m_device);
@@ -130,13 +130,14 @@ void VulkanBaseContext::ResetSurface()
m_surface.reset();
- if (m_pipeline)
+ if (m_pipeline && allowPipelineDump)
m_pipeline->Dump(m_device);
}
void VulkanBaseContext::Resize(int w, int h)
{
- if (m_depthTexture != nullptr && m_surfaceCapabilities.currentExtent.width == w &&
+ if (m_depthTexture != nullptr &&
+ m_surfaceCapabilities.currentExtent.width == w &&
m_surfaceCapabilities.currentExtent.height == h)
{
return;
@@ -305,7 +306,7 @@ void VulkanBaseContext::ApplyFramebuffer(std::string const & framebufferLabel)
VkClearValue clearValues[2];
clearValues[0].color = {{m_clearColor.GetRedF(), m_clearColor.GetGreenF(), m_clearColor.GetBlueF(),
m_clearColor.GetAlphaF()}};
- clearValues[1].depthStencil = {1.0f, m_stencilReferenceValue};
+ clearValues[1].depthStencil = {1.0f, 0};
VkRenderPassBeginInfo renderPassBeginInfo = {};
renderPassBeginInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
@@ -808,11 +809,6 @@ void VulkanBaseContext::RecreateDepthTexture()
m_depthTexture = make_unique_dp<VulkanTexture>(params.m_allocator);
m_depthTexture->Create(this, params, nullptr);
-
- //m_depthTexture = m_objectManager->CreateImage(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
- // UnpackFormat(TextureFormat::Depth), VK_IMAGE_ASPECT_DEPTH_BIT,
- // m_surfaceCapabilities.currentExtent.width,
- // m_surfaceCapabilities.currentExtent.height);
}
VkRenderPass VulkanBaseContext::CreateRenderPass(uint32_t attachmentsCount, AttachmentsOperations const & attachmentsOp,
diff --git a/drape/vulkan/vulkan_base_context.hpp b/drape/vulkan/vulkan_base_context.hpp
index e6877a2d0a..a487addcde 100644
--- a/drape/vulkan/vulkan_base_context.hpp
+++ b/drape/vulkan/vulkan_base_context.hpp
@@ -9,7 +9,6 @@
#include "drape/vulkan/vulkan_utils.hpp"
#include "geometry/point2d.hpp"
-#include "vulkan_texture.hpp"
#include <vulkan_wrapper.h>
#include <vulkan/vulkan.h>
@@ -76,8 +75,8 @@ public:
void ClearParamDescriptors();
void SetSurface(VkSurfaceKHR surface, VkSurfaceFormatKHR surfaceFormat,
- VkSurfaceCapabilitiesKHR surfaceCapabilities, int width, int height);
- void ResetSurface();
+ VkSurfaceCapabilitiesKHR const & surfaceCapabilities);
+ void ResetSurface(bool allowPipelineDump);
VkPhysicalDevice const GetPhysicalDevice() const { return m_gpu; }
VkDevice GetDevice() const { return m_device; }
diff --git a/drape/vulkan/vulkan_mesh_object_impl.cpp b/drape/vulkan/vulkan_mesh_object_impl.cpp
index 09f161ac38..f02baf9b10 100644
--- a/drape/vulkan/vulkan_mesh_object_impl.cpp
+++ b/drape/vulkan/vulkan_mesh_object_impl.cpp
@@ -86,7 +86,7 @@ public:
{
if (state.GetColorTexture() != m_lastColorTexture)
{
- m_lastColorTexture == state.GetColorTexture();
+ m_lastColorTexture = state.GetColorTexture();
ResetDescriptorSetGroup();
}
}