summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/rasterizer_cache.h8
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp7
2 files changed, 13 insertions, 2 deletions
diff --git a/src/video_core/rasterizer_cache.h b/src/video_core/rasterizer_cache.h
index 4a34491a9..76743a85b 100644
--- a/src/video_core/rasterizer_cache.h
+++ b/src/video_core/rasterizer_cache.h
@@ -11,6 +11,7 @@
11 11
12#include "common/common_types.h" 12#include "common/common_types.h"
13#include "core/core.h" 13#include "core/core.h"
14#include "core/settings.h"
14#include "video_core/rasterizer_interface.h" 15#include "video_core/rasterizer_interface.h"
15#include "video_core/renderer_base.h" 16#include "video_core/renderer_base.h"
16 17
@@ -87,7 +88,12 @@ protected:
87 void Unregister(const T& object) { 88 void Unregister(const T& object) {
88 auto& rasterizer = Core::System::GetInstance().Renderer().Rasterizer(); 89 auto& rasterizer = Core::System::GetInstance().Renderer().Rasterizer();
89 rasterizer.UpdatePagesCachedCount(object->GetAddr(), object->GetSizeInBytes(), -1); 90 rasterizer.UpdatePagesCachedCount(object->GetAddr(), object->GetSizeInBytes(), -1);
90 object->Flush(); 91
92 if (Settings::values.use_accurate_framebuffers) {
93 // Only flush if use_accurate_framebuffers is enabled, as it incurs a performance hit
94 object->Flush();
95 }
96
91 object_cache.subtract({GetInterval(object), ObjectSet{object}}); 97 object_cache.subtract({GetInterval(object), ObjectSet{object}});
92 } 98 }
93 99
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 18db07217..0485dfb7a 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -637,7 +637,12 @@ void RasterizerOpenGL::FlushAll() {}
637 637
638void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) { 638void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) {
639 MICROPROFILE_SCOPE(OpenGL_CacheManagement); 639 MICROPROFILE_SCOPE(OpenGL_CacheManagement);
640 res_cache.FlushRegion(addr, size); 640
641 if (Settings::values.use_accurate_framebuffers) {
642 // Only flush if use_accurate_framebuffers is enabled, as it incurs a performance hit
643 res_cache.FlushRegion(addr, size);
644 }
645
641 shader_cache.FlushRegion(addr, size); 646 shader_cache.FlushRegion(addr, size);
642 buffer_cache.FlushRegion(addr, size); 647 buffer_cache.FlushRegion(addr, size);
643} 648}