2
0
Эх сурвалжийг харах

Improves handling of window resizes on vulkan (avoids crashes) (#2123)

* Improves handling of window resizes on vulkan (avoids crashes)

* Change to previous commit as requested.
Rebased and added refresh swapchain check inside updateResolution(),
similar to renderer_d3d12.cpp.
kingscallop 5 жил өмнө
parent
commit
ff9f624b9b
1 өөрчлөгдсөн 13 нэмэгдсэн , 3 устгасан
  1. 13 3
      src/renderer_vk.cpp

+ 13 - 3
src/renderer_vk.cpp

@@ -2898,7 +2898,7 @@ VK_IMPORT_DEVICE
 			return idx;
 		}
 
-		void updateResolution(const Resolution& _resolution)
+		bool updateResolution(const Resolution& _resolution)
 		{
 			if (!!(_resolution.reset & BGFX_RESET_MAXANISOTROPY) )
 			{
@@ -2982,7 +2982,7 @@ VK_IMPORT_DEVICE
 					{
 						m_resolution.width = 0;
 						m_resolution.height = 0;
-						return;
+						return true;
 					}
 
 					VK_CHECK(createSwapchain() );
@@ -3009,6 +3009,13 @@ VK_IMPORT_DEVICE
 						);
 				}
 			}
+
+			if (m_needToRefreshSwapchain)
+			{
+				return true;
+			}
+
+			return false;
 		}
 
 		void setShaderUniform(uint8_t _flags, uint32_t _regIndex, const void* _val, uint32_t _numRegs)
@@ -5870,7 +5877,10 @@ VK_DESTROY
 		submitCommandAndWait(m_commandBuffer);
 		m_commandBuffer = VK_NULL_HANDLE;
 
-		updateResolution(_render->m_resolution);
+		if (updateResolution(_render->m_resolution) )
+		{
+			return;
+		}
 
 		if (m_swapchain == VK_NULL_HANDLE)
 			return;