diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-06 07:58:43 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-07 20:13:12 +0100 |
commit | 0ab17ab4062278ceed3a3dc28796493280e6d0a1 (patch) | |
tree | 26c4be1650fd1f554047f6179f31d3f2f8ddf528 /src/video_core/renderer_opengl/gl_shader_cache.cpp | |
parent | Merge pull request #1988 from lioncash/res (diff) | |
download | yuzu-0ab17ab4062278ceed3a3dc28796493280e6d0a1.tar yuzu-0ab17ab4062278ceed3a3dc28796493280e6d0a1.tar.gz yuzu-0ab17ab4062278ceed3a3dc28796493280e6d0a1.tar.bz2 yuzu-0ab17ab4062278ceed3a3dc28796493280e6d0a1.tar.lz yuzu-0ab17ab4062278ceed3a3dc28796493280e6d0a1.tar.xz yuzu-0ab17ab4062278ceed3a3dc28796493280e6d0a1.tar.zst yuzu-0ab17ab4062278ceed3a3dc28796493280e6d0a1.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_cache.cpp | 6 |
1 files changed, 5 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 aea6bf1af..c785fffa3 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -188,6 +188,10 @@ void CachedShader::CalculateProperties() { ShaderCacheOpenGL::ShaderCacheOpenGL(RasterizerOpenGL& rasterizer) : RasterizerCache{rasterizer} {} Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) { + if (!Core::System::GetInstance().GPU().Maxwell3D().dirty_flags.shaders) { + return last_shaders[static_cast<u32>(program)]; + } + const VAddr program_addr{GetShaderAddress(program)}; // Look up shader in the cache based on address @@ -199,7 +203,7 @@ Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) { Register(shader); } - return shader; + return last_shaders[static_cast<u32>(program)] = shader; } } // namespace OpenGL |