diff options
author | unknown <FreddyFunk@users.noreply.github.com> | 2019-02-25 11:47:23 +0100 |
---|---|---|
committer | FreddyFunk <FreddyFunk@users.noreply.github.com> | 2019-04-23 22:24:23 +0200 |
commit | 9db2c734c95d1c5c99d6ead95673de72e9389d8d (patch) | |
tree | 665e40828ace3a4216be3956cd3ec4d617fed842 /src/video_core/renderer_opengl/gl_shader_cache.cpp | |
parent | gl_shader_disk_cache: Remove per shader compression (diff) | |
download | yuzu-9db2c734c95d1c5c99d6ead95673de72e9389d8d.tar yuzu-9db2c734c95d1c5c99d6ead95673de72e9389d8d.tar.gz yuzu-9db2c734c95d1c5c99d6ead95673de72e9389d8d.tar.bz2 yuzu-9db2c734c95d1c5c99d6ead95673de72e9389d8d.tar.lz yuzu-9db2c734c95d1c5c99d6ead95673de72e9389d8d.tar.xz yuzu-9db2c734c95d1c5c99d6ead95673de72e9389d8d.tar.zst yuzu-9db2c734c95d1c5c99d6ead95673de72e9389d8d.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shader_cache.cpp')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index 2a81b1169..dd18052db 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -363,6 +363,10 @@ void ShaderCacheOpenGL::LoadDiskCache(const std::atomic_bool& stop_loading, if (stop_loading) return; + // Track if precompiled cache was altered during loading to know if we have to serialize the + // virtual precompiled cache file back to the hard drive + bool precompiled_cache_altered = false; + // Build shaders if (callback) callback(VideoCore::LoadCallbackStage::Build, 0, usages.size()); @@ -384,6 +388,7 @@ void ShaderCacheOpenGL::LoadDiskCache(const std::atomic_bool& stop_loading, if (!shader) { // Invalidate the precompiled cache if a shader dumped shader was rejected disk_cache.InvalidatePrecompiled(); + precompiled_cache_altered = true; dumps.clear(); } } @@ -405,8 +410,13 @@ void ShaderCacheOpenGL::LoadDiskCache(const std::atomic_bool& stop_loading, if (dumps.find(usage) == dumps.end()) { const auto& program = precompiled_programs.at(usage); disk_cache.SaveDump(usage, program->handle); + precompiled_cache_altered = true; } } + + if (precompiled_cache_altered) { + disk_cache.SaveVirtualPrecompiledFile(); + } } CachedProgram ShaderCacheOpenGL::GeneratePrecompiledProgram( @@ -524,4 +534,4 @@ Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) { return last_shaders[static_cast<u32>(program)] = shader; } -} // namespace OpenGL +} // namespace OpenGL
\ No newline at end of file |