diff options
| author | bunnei <bunneidev@gmail.com> | 2018-10-14 16:09:01 -0400 | 
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2018-10-16 11:31:02 -0400 | 
| commit | 949d7832fafa33f7f553e2ca1139c1a16150984f (patch) | |
| tree | f66c2a523267d54363fac4a43176b2ff765fe19a /src/video_core | |
| parent | 5f79ba04bd617254f47e1d707479ab2468f8aaf9 (diff) | |
gl_rasterizer_cache: Only flush when use_accurate_framebuffers is enabled.
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/rasterizer_cache.h | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 7 | 
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 @@  #include "common/common_types.h"  #include "core/core.h" +#include "core/settings.h"  #include "video_core/rasterizer_interface.h"  #include "video_core/renderer_base.h" @@ -87,7 +88,12 @@ protected:      void Unregister(const T& object) {          auto& rasterizer = Core::System::GetInstance().Renderer().Rasterizer();          rasterizer.UpdatePagesCachedCount(object->GetAddr(), object->GetSizeInBytes(), -1); -        object->Flush(); + +        if (Settings::values.use_accurate_framebuffers) { +            // Only flush if use_accurate_framebuffers is enabled, as it incurs a performance hit +            object->Flush(); +        } +          object_cache.subtract({GetInterval(object), ObjectSet{object}});      } 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() {}  void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) {      MICROPROFILE_SCOPE(OpenGL_CacheManagement); -    res_cache.FlushRegion(addr, size); + +    if (Settings::values.use_accurate_framebuffers) { +        // Only flush if use_accurate_framebuffers is enabled, as it incurs a performance hit +        res_cache.FlushRegion(addr, size); +    } +      shader_cache.FlushRegion(addr, size);      buffer_cache.FlushRegion(addr, size);  } | 
