From cb154ad3d4be4a4e69fb6e22654c6027050427a6 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 15 Jul 2018 00:43:10 -0700 Subject: [PATCH] Fix tearing with DXVA2 in full screen mode --- app/streaming/renderers/dxva2.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/streaming/renderers/dxva2.cpp b/app/streaming/renderers/dxva2.cpp index 189d8ceb..d1408a44 100644 --- a/app/streaming/renderers/dxva2.cpp +++ b/app/streaming/renderers/dxva2.cpp @@ -349,7 +349,13 @@ bool DXVA2Renderer::initialize(SDL_Window* window, int videoFormat, int width, i // D3DCREATE_MULTITHREADED to IDirect3D9::CreateDevice(). SDL_SetHint(SDL_HINT_RENDER_DIRECT3D_THREADSAFE, "1"); - m_SdlRenderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + // We want VSYNC when running in full-screen. DWM will give us + // tear-free video when running composited (windowed) without any + // extra latency waiting for VSYNC. + m_SdlRenderer = SDL_CreateRenderer(window, -1, + SDL_RENDERER_ACCELERATED | + ((SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN) ? + SDL_RENDERER_PRESENTVSYNC : 0)); if (!m_SdlRenderer) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_CreateRenderer() failed: %s",