diff options
| author | Stenzek <stenzek@gmail.com> | 2019-10-01 11:42:59 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2019-10-01 11:43:02 +1000 |
| commit | c989e5c50c432b7df78a8e6e1dc92cca1057767b (patch) | |
| tree | f13f4ff5efcdfed5d1c743ef8d6fe81e22c2cae3 /Source/Core/VideoCommon/ShaderCache.cpp | |
| parent | ee30fc9ad53742edbf4e5cdf6fa1c35cc15a359d (diff) | |
ShaderCache: Recompile shared pipelines on shader cache reload
Fixes broken stereoscopy when switching on/off at runtime.
Diffstat (limited to 'Source/Core/VideoCommon/ShaderCache.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/ShaderCache.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
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); |
