From c989e5c50c432b7df78a8e6e1dc92cca1057767b Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 1 Oct 2019 11:42:59 +1000 Subject: [PATCH] ShaderCache: Recompile shared pipelines on shader cache reload Fixes broken stereoscopy when switching on/off at runtime. --- Source/Core/VideoCommon/ShaderCache.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Source/Core/VideoCommon/ShaderCache.cpp b/Source/Core/VideoCommon/ShaderCache.cpp index e3066520fb..3900aaea42 100644 --- a/Source/Core/VideoCommon/ShaderCache.cpp +++ b/Source/Core/VideoCommon/ShaderCache.cpp @@ -70,6 +70,9 @@ void ShaderCache::Reload() ClosePipelineUIDCache(); ClearCaches(); + if (!CompileSharedPipelines()) + PanicAlert("Failed to compile shared pipelines after reload."); + if (g_ActiveConfig.bShaderCache) LoadCaches(); @@ -369,6 +372,23 @@ void ShaderCache::ClearCaches() ClearShaderCache(m_uber_vs_cache); ClearShaderCache(m_uber_ps_cache); + m_screen_quad_vertex_shader.reset(); + m_texture_copy_vertex_shader.reset(); + m_efb_copy_vertex_shader.reset(); + m_texcoord_geometry_shader.reset(); + m_color_geometry_shader.reset(); + m_texture_copy_pixel_shader.reset(); + m_color_pixel_shader.reset(); + + m_efb_copy_to_vram_pipelines.clear(); + m_efb_copy_to_ram_pipelines.clear(); + m_copy_rgba8_pipeline.reset(); + m_rgba8_stereo_copy_pipeline.reset(); + for (auto& pipeline : m_palette_conversion_pipelines) + pipeline.reset(); + m_texture_reinterpret_pipelines.clear(); + m_texture_decoding_shaders.clear(); + SETSTAT(g_stats.num_pixel_shaders_created, 0); SETSTAT(g_stats.num_pixel_shaders_alive, 0); SETSTAT(g_stats.num_vertex_shaders_created, 0);