Бранимир Караџић 4 ani în urmă
părinte
comite
9ecd462538
4 a modificat fișierele cu 12 adăugiri și 12 ștergeri
  1. 1 1
      src/dxgi.cpp
  2. 1 1
      src/dxgi.h
  3. 4 1
      src/renderer_d3d11.cpp
  4. 6 9
      src/renderer_d3d12.cpp

+ 1 - 1
src/dxgi.cpp

@@ -788,7 +788,7 @@ namespace bgfx
 #endif // BX_PLATFORM_WINDOWS || BX_PLATFORM_WINRT
 #endif // BX_PLATFORM_WINDOWS || BX_PLATFORM_WINRT
 	}
 	}
 
 
-	bool Dxgi::tearingSupported()
+	bool Dxgi::tearingSupported() const
 	{
 	{
 		return m_tearingSupported;
 		return m_tearingSupported;
 	}
 	}

+ 1 - 1
src/dxgi.h

@@ -100,7 +100,7 @@ namespace bgfx
 		void trim();
 		void trim();
 
 
 		///
 		///
-		bool tearingSupported();
+		bool tearingSupported() const;
 
 
 		///
 		///
 		void* m_dxgiDll;
 		void* m_dxgiDll;

+ 4 - 1
src/renderer_d3d11.cpp

@@ -2288,10 +2288,13 @@ namespace bgfx { namespace d3d11
 					&&  m_needPresent)
 					&&  m_needPresent)
 					{
 					{
 						uint32_t presentFlags = 0;
 						uint32_t presentFlags = 0;
-						if (!syncInterval && (m_dxgi.tearingSupported()))
+
+						if (!syncInterval
+						&&  m_dxgi.tearingSupported() )
 						{
 						{
 							presentFlags |= DXGI_PRESENT_ALLOW_TEARING;
 							presentFlags |= DXGI_PRESENT_ALLOW_TEARING;
 						}
 						}
+
 						hr = m_swapChain->Present(syncInterval, presentFlags);
 						hr = m_swapChain->Present(syncInterval, presentFlags);
 
 
 						m_needPresent = false;
 						m_needPresent = false;

+ 6 - 9
src/renderer_d3d12.cpp

@@ -1508,29 +1508,26 @@ namespace bgfx { namespace d3d12
 
 
 				HRESULT hr = S_OK;
 				HRESULT hr = S_OK;
 				uint32_t syncInterval = !!(m_resolution.reset & BGFX_RESET_VSYNC);
 				uint32_t syncInterval = !!(m_resolution.reset & BGFX_RESET_VSYNC);
-				uint32_t flags = 0;
+				uint32_t presentFlags = 0;
 				if (syncInterval)
 				if (syncInterval)
 				{
 				{
-					flags |= DXGI_PRESENT_RESTART;
+					presentFlags |= DXGI_PRESENT_RESTART;
 				}
 				}
-				else
+				else if (m_dxgi.tearingSupported() )
 				{
 				{
-					if (m_dxgi.tearingSupported())
-					{
-						flags |= DXGI_PRESENT_ALLOW_TEARING;
-					}
+					presentFlags |= DXGI_PRESENT_ALLOW_TEARING;
 				}
 				}
 
 
 				for (uint32_t ii = 1, num = m_numWindows; ii < num && SUCCEEDED(hr); ++ii)
 				for (uint32_t ii = 1, num = m_numWindows; ii < num && SUCCEEDED(hr); ++ii)
 				{
 				{
 					FrameBufferD3D12& frameBuffer = m_frameBuffers[m_windows[ii].idx];
 					FrameBufferD3D12& frameBuffer = m_frameBuffers[m_windows[ii].idx];
-					hr = frameBuffer.present(syncInterval, flags);
+					hr = frameBuffer.present(syncInterval, presentFlags);
 				}
 				}
 
 
 				if (SUCCEEDED(hr)
 				if (SUCCEEDED(hr)
 				&&  NULL != m_swapChain)
 				&&  NULL != m_swapChain)
 				{
 				{
-					hr = m_swapChain->Present(syncInterval, flags);
+					hr = m_swapChain->Present(syncInterval, presentFlags);
 				}
 				}
 
 
 				int64_t now = bx::getHPCounter();
 				int64_t now = bx::getHPCounter();