From 62a901508b1fd23eb386a3d108950ab061bbc19a Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 24 Jun 2017 19:20:34 +1000 Subject: OGL: Reload shader cache when relevant video config changes --- Source/Core/VideoBackends/OGL/Render.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Source/Core/VideoBackends/OGL/Render.cpp') diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 3282489369..50a3d366cc 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -688,6 +688,7 @@ Renderer::Renderer() s_last_stereo_mode = g_ActiveConfig.iStereoMode > 0; s_last_xfb_mode = g_ActiveConfig.bUseRealXFB; + m_last_host_config_bits = g_ActiveConfig.GetHostConfigBits(); // Handle VSync on/off s_vsync = g_ActiveConfig.IsVSync(); @@ -1469,6 +1470,15 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, UpdateActiveConfig(); g_texture_cache->OnConfigChanged(g_ActiveConfig); + // Invalidate shader cache when the host config changes. + u32 new_host_config_bits = g_ActiveConfig.GetHostConfigBits(); + if (new_host_config_bits != m_last_host_config_bits) + { + OSD::AddMessage("Video config changed, reloading shaders.", OSD::Duration::NORMAL); + ProgramShaderCache::Reload(); + m_last_host_config_bits = new_host_config_bits; + } + // For testing zbuffer targets. // Renderer::SetZBufferRender(); // SaveTexture("tex.png", GL_TEXTURE_2D, s_FakeZTarget, -- cgit v1.2.3