diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-12-29 06:03:05 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-02-28 21:56:42 +0100 |
commit | f7ec078592468fa22ff377b996a720c8be82c2dc (patch) | |
tree | 9326105d022b9e939f036c46d028f7f7ef8f9e5e /src/video_core/renderer_opengl/gl_shader_cache.cpp | |
parent | gl_state_tracker: Add dirty flags for buffers and divisors (diff) | |
download | yuzu-f7ec078592468fa22ff377b996a720c8be82c2dc.tar yuzu-f7ec078592468fa22ff377b996a720c8be82c2dc.tar.gz yuzu-f7ec078592468fa22ff377b996a720c8be82c2dc.tar.bz2 yuzu-f7ec078592468fa22ff377b996a720c8be82c2dc.tar.lz yuzu-f7ec078592468fa22ff377b996a720c8be82c2dc.tar.xz yuzu-f7ec078592468fa22ff377b996a720c8be82c2dc.tar.zst yuzu-f7ec078592468fa22ff377b996a720c8be82c2dc.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 | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp index bef141f63..4cb89db8c 100644 --- a/src/video_core/renderer_opengl/gl_shader_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp @@ -22,6 +22,7 @@ #include "video_core/renderer_opengl/gl_shader_cache.h" #include "video_core/renderer_opengl/gl_shader_decompiler.h" #include "video_core/renderer_opengl/gl_shader_disk_cache.h" +#include "video_core/renderer_opengl/gl_state_tracker.h" #include "video_core/renderer_opengl/utils.h" #include "video_core/shader/shader_ir.h" @@ -623,6 +624,10 @@ bool ShaderCacheOpenGL::GenerateUnspecializedShaders( } Shader ShaderCacheOpenGL::GetStageProgram(Maxwell::ShaderProgram program) { + if (!system.GPU().Maxwell3D().dirty.flags[Dirty::Shaders]) { + return last_shaders[static_cast<std::size_t>(program)]; + } + auto& memory_manager{system.GPU().MemoryManager()}; const GPUVAddr address{GetShaderAddress(system, program)}; |