diff options
| author | 2018-10-14 16:09:01 -0400 | |
|---|---|---|
| committer | 2018-10-16 11:31:02 -0400 | |
| commit | 949d7832fafa33f7f553e2ca1139c1a16150984f (patch) | |
| tree | f66c2a523267d54363fac4a43176b2ff765fe19a /src | |
| parent | gl_rasterizer_cache: Separate guest and host surface size managment. (diff) | |
| download | yuzu-949d7832fafa33f7f553e2ca1139c1a16150984f.tar.gz yuzu-949d7832fafa33f7f553e2ca1139c1a16150984f.tar.xz yuzu-949d7832fafa33f7f553e2ca1139c1a16150984f.zip | |
gl_rasterizer_cache: Only flush when use_accurate_framebuffers is enabled.
Diffstat (limited to 'src')
| -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 @@ | |||
| 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 | ||
| 638 | void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) { | 638 | void 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 | } |