summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-01-07 06:09:39 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-01-07 20:22:28 +0100
commitb683e41fca8f88bf21085ccb3eee1dd6a91e293e (patch)
tree3b33a50ecc5725c4d42bf4adb2526352dc901629 /src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
parentgl_rasterizer_cache: Use dirty flags for color buffers (diff)
downloadyuzu-b683e41fca8f88bf21085ccb3eee1dd6a91e293e.tar
yuzu-b683e41fca8f88bf21085ccb3eee1dd6a91e293e.tar.gz
yuzu-b683e41fca8f88bf21085ccb3eee1dd6a91e293e.tar.bz2
yuzu-b683e41fca8f88bf21085ccb3eee1dd6a91e293e.tar.lz
yuzu-b683e41fca8f88bf21085ccb3eee1dd6a91e293e.tar.xz
yuzu-b683e41fca8f88bf21085ccb3eee1dd6a91e293e.tar.zst
yuzu-b683e41fca8f88bf21085ccb3eee1dd6a91e293e.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
index 0059b336a..d26a5f4de 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
@@ -919,9 +919,16 @@ Surface RasterizerCacheOpenGL::GetTextureSurface(const Tegra::Texture::FullTextu
}
Surface RasterizerCacheOpenGL::GetDepthBufferSurface(bool preserve_contents) {
- const auto& regs{Core::System::GetInstance().GPU().Maxwell3D().regs};
+ auto& gpu{Core::System::GetInstance().GPU().Maxwell3D()};
+ const auto& regs{gpu.regs};
+
+ if (!gpu.dirty_flags.zeta_buffer) {
+ return last_depth_buffer;
+ }
+ gpu.dirty_flags.zeta_buffer = false;
+
if (!regs.zeta.Address() || !regs.zeta_enable) {
- return {};
+ return last_depth_buffer = {};
}
SurfaceParams depth_params{SurfaceParams::CreateForDepthBuffer(
@@ -929,7 +936,7 @@ Surface RasterizerCacheOpenGL::GetDepthBufferSurface(bool preserve_contents) {
regs.zeta.memory_layout.block_width, regs.zeta.memory_layout.block_height,
regs.zeta.memory_layout.block_depth, regs.zeta.memory_layout.type)};
- return GetSurface(depth_params, preserve_contents);
+ return last_depth_buffer = GetSurface(depth_params, preserve_contents);
}
Surface RasterizerCacheOpenGL::GetColorBufferSurface(std::size_t index, bool preserve_contents) {