summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp8
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.cpp7
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer_cache.h8
3 files changed, 11 insertions, 12 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 822739088..ca8247b86 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -135,7 +135,7 @@ void RasterizerOpenGL::Reset() {
135 135
136 SetShader(); 136 SetShader();
137 137
138 res_cache.FullFlush(); 138 res_cache.InvalidateAll();
139} 139}
140 140
141void RasterizerOpenGL::AddTriangle(const Pica::Shader::OutputVertex& v0, 141void RasterizerOpenGL::AddTriangle(const Pica::Shader::OutputVertex& v0,
@@ -176,8 +176,8 @@ void RasterizerOpenGL::DrawTriangles() {
176 u32 cur_fb_depth_size = Pica::Regs::BytesPerDepthPixel(regs.framebuffer.depth_format) 176 u32 cur_fb_depth_size = Pica::Regs::BytesPerDepthPixel(regs.framebuffer.depth_format)
177 * regs.framebuffer.GetWidth() * regs.framebuffer.GetHeight(); 177 * regs.framebuffer.GetWidth() * regs.framebuffer.GetHeight();
178 178
179 res_cache.NotifyFlush(cur_fb_color_addr, cur_fb_color_size, true); 179 res_cache.InvalidateInRange(cur_fb_color_addr, cur_fb_color_size, true);
180 res_cache.NotifyFlush(cur_fb_depth_addr, cur_fb_depth_size, true); 180 res_cache.InvalidateInRange(cur_fb_depth_addr, cur_fb_depth_size, true);
181} 181}
182 182
183void RasterizerOpenGL::CommitFramebuffer() { 183void RasterizerOpenGL::CommitFramebuffer() {
@@ -328,7 +328,7 @@ void RasterizerOpenGL::NotifyFlush(PAddr addr, u32 size) {
328 ReloadDepthBuffer(); 328 ReloadDepthBuffer();
329 329
330 // Notify cache of flush in case the region touches a cached resource 330 // Notify cache of flush in case the region touches a cached resource
331 res_cache.NotifyFlush(addr, size); 331 res_cache.InvalidateInRange(addr, size);
332} 332}
333 333
334void RasterizerOpenGL::SamplerInfo::Create() { 334void RasterizerOpenGL::SamplerInfo::Create() {
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
index 10d4ab0b6..a9ad46fe0 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
@@ -15,7 +15,7 @@
15#include "video_core/renderer_opengl/pica_to_gl.h" 15#include "video_core/renderer_opengl/pica_to_gl.h"
16 16
17RasterizerCacheOpenGL::~RasterizerCacheOpenGL() { 17RasterizerCacheOpenGL::~RasterizerCacheOpenGL() {
18 FullFlush(); 18 InvalidateAll();
19} 19}
20 20
21MICROPROFILE_DEFINE(OpenGL_TextureUpload, "OpenGL", "Texture Upload", MP_RGB(128, 64, 192)); 21MICROPROFILE_DEFINE(OpenGL_TextureUpload, "OpenGL", "Texture Upload", MP_RGB(128, 64, 192));
@@ -58,8 +58,7 @@ void RasterizerCacheOpenGL::LoadAndBindTexture(OpenGLState &state, unsigned text
58 } 58 }
59} 59}
60 60
61void RasterizerCacheOpenGL::NotifyFlush(PAddr addr, u32 size, bool ignore_hash) { 61void RasterizerCacheOpenGL::InvalidateInRange(PAddr addr, u32 size, bool ignore_hash) {
62 // Flush any texture that falls in the flushed region
63 // TODO: Optimize by also inserting upper bound (addr + size) of each texture into the same map and also narrow using lower_bound 62 // TODO: Optimize by also inserting upper bound (addr + size) of each texture into the same map and also narrow using lower_bound
64 auto cache_upper_bound = texture_cache.upper_bound(addr + size); 63 auto cache_upper_bound = texture_cache.upper_bound(addr + size);
65 64
@@ -77,6 +76,6 @@ void RasterizerCacheOpenGL::NotifyFlush(PAddr addr, u32 size, bool ignore_hash)
77 } 76 }
78} 77}
79 78
80void RasterizerCacheOpenGL::FullFlush() { 79void RasterizerCacheOpenGL::InvalidateAll() {
81 texture_cache.clear(); 80 texture_cache.clear();
82} 81}
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h
index 98a48ffbe..b69651427 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer_cache.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h
@@ -23,11 +23,11 @@ public:
23 LoadAndBindTexture(state, texture_unit, Pica::DebugUtils::TextureInfo::FromPicaRegister(config.config, config.format)); 23 LoadAndBindTexture(state, texture_unit, Pica::DebugUtils::TextureInfo::FromPicaRegister(config.config, config.format));
24 } 24 }
25 25
26 /// Flush any cached resource that touches the flushed region 26 /// Invalidate any cached resource intersecting the specified region.
27 void NotifyFlush(PAddr addr, u32 size, bool ignore_hash = false); 27 void InvalidateInRange(PAddr addr, u32 size, bool ignore_hash = false);
28 28
29 /// Flush all cached OpenGL resources tracked by this cache manager 29 /// Invalidate all cached OpenGL resources tracked by this cache manager
30 void FullFlush(); 30 void InvalidateAll();
31 31
32private: 32private:
33 struct CachedTexture { 33 struct CachedTexture {