forked from suyu/suyu
gl_rasterizer_cache: Only flush when use_accurate_framebuffers is enabled.
This commit is contained in:
parent
5f79ba04bd
commit
949d7832fa
2 changed files with 13 additions and 2 deletions
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
|
#include "core/settings.h"
|
||||||
#include "video_core/rasterizer_interface.h"
|
#include "video_core/rasterizer_interface.h"
|
||||||
#include "video_core/renderer_base.h"
|
#include "video_core/renderer_base.h"
|
||||||
|
|
||||||
|
@ -87,7 +88,12 @@ protected:
|
||||||
void Unregister(const T& object) {
|
void Unregister(const T& object) {
|
||||||
auto& rasterizer = Core::System::GetInstance().Renderer().Rasterizer();
|
auto& rasterizer = Core::System::GetInstance().Renderer().Rasterizer();
|
||||||
rasterizer.UpdatePagesCachedCount(object->GetAddr(), object->GetSizeInBytes(), -1);
|
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}});
|
object_cache.subtract({GetInterval(object), ObjectSet{object}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -637,7 +637,12 @@ void RasterizerOpenGL::FlushAll() {}
|
||||||
|
|
||||||
void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) {
|
void RasterizerOpenGL::FlushRegion(VAddr addr, u64 size) {
|
||||||
MICROPROFILE_SCOPE(OpenGL_CacheManagement);
|
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);
|
shader_cache.FlushRegion(addr, size);
|
||||||
buffer_cache.FlushRegion(addr, size);
|
buffer_cache.FlushRegion(addr, size);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue