summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_cache.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-01-06 07:58:43 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-01-07 20:13:12 +0100
commit0ab17ab4062278ceed3a3dc28796493280e6d0a1 (patch)
tree26c4be1650fd1f554047f6179f31d3f2f8ddf528 /src/video_core/renderer_opengl/gl_shader_cache.cpp
parentMerge pull request #1988 from lioncash/res (diff)
downloadyuzu-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.cpp6
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