diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2021-01-21 00:09:57 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2021-01-21 04:41:03 +0100 |
commit | 51512d01d8e956b2afada91e51dfd7c0a6444ad6 (patch) | |
tree | 920ed6ec21b438894b7caeef0a946dbfc2ead10a /src/video_core/renderer_opengl/gl_shader_cache.cpp | |
parent | Merge pull request #5755 from FearlessTobi/port-5344 (diff) | |
download | yuzu-51512d01d8e956b2afada91e51dfd7c0a6444ad6.tar yuzu-51512d01d8e956b2afada91e51dfd7c0a6444ad6.tar.gz yuzu-51512d01d8e956b2afada91e51dfd7c0a6444ad6.tar.bz2 yuzu-51512d01d8e956b2afada91e51dfd7c0a6444ad6.tar.lz yuzu-51512d01d8e956b2afada91e51dfd7c0a6444ad6.tar.xz yuzu-51512d01d8e956b2afada91e51dfd7c0a6444ad6.tar.zst yuzu-51512d01d8e956b2afada91e51dfd7c0a6444ad6.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index d4841fdb7..529570ff0 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -159,6 +159,10 @@ std::unordered_set<GLenum> GetSupportedFormats() { ProgramSharedPtr BuildShader(const Device& device, ShaderType shader_type, u64 unique_identifier, const ShaderIR& ir, const Registry& registry, bool hint_retrievable) { + if (device.UseDriverCache()) { + // Ignore hint retrievable if we are using the driver cache + hint_retrievable = false; + } const std::string shader_id = MakeShaderID(unique_identifier, shader_type); LOG_INFO(Render_OpenGL, "{}", shader_id); @@ -336,7 +340,7 @@ void ShaderCacheOpenGL::LoadDiskCache(u64 title_id, const std::atomic_bool& stop } std::vector<ShaderDiskCachePrecompiled> gl_cache; - if (!device.UseAssemblyShaders()) { + if (!device.UseAssemblyShaders() && !device.UseDriverCache()) { // Only load precompiled cache when we are not using assembly shaders gl_cache = disk_cache.LoadPrecompiled(); } @@ -356,8 +360,7 @@ void ShaderCacheOpenGL::LoadDiskCache(u64 title_id, const std::atomic_bool& stop std::atomic_bool gl_cache_failed = false; const auto find_precompiled = [&gl_cache](u64 id) { - return std::find_if(gl_cache.begin(), gl_cache.end(), - [id](const auto& entry) { return entry.unique_identifier == id; }); + return std::ranges::find(gl_cache, id, &ShaderDiskCachePrecompiled::unique_identifier); }; const auto worker = [&](Core::Frontend::GraphicsContext* context, std::size_t begin, @@ -432,8 +435,8 @@ void ShaderCacheOpenGL::LoadDiskCache(u64 title_id, const std::atomic_bool& stop return; } - if (device.UseAssemblyShaders()) { - // Don't store precompiled binaries for assembly shaders. + if (device.UseAssemblyShaders() || device.UseDriverCache()) { + // Don't store precompiled binaries for assembly shaders or when using the driver cache return; } |