From cc5a88a86438668874063f44e2e30f499c415ffd Mon Sep 17 00:00:00 2001 From: GPUCode <47210458+GPUCode@users.noreply.github.com> Date: Sun, 21 Aug 2022 22:24:26 +0300 Subject: [PATCH] rasterizer_cache: Make cache reset on resolution/filter change more explicit --- src/video_core/rasterizer_cache/rasterizer_cache.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/video_core/rasterizer_cache/rasterizer_cache.cpp b/src/video_core/rasterizer_cache/rasterizer_cache.cpp index d2ae5aef9c..f9eb4be633 100644 --- a/src/video_core/rasterizer_cache/rasterizer_cache.cpp +++ b/src/video_core/rasterizer_cache/rasterizer_cache.cpp @@ -584,10 +584,12 @@ SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces( const auto& regs = Pica::g_state.regs; const auto& config = regs.framebuffer.framebuffer; - // update resolution_scale_factor and reset cache if changed - if ((resolution_scale_factor != VideoCore::GetResolutionScaleFactor()) || - (VideoCore::g_texture_filter_update_requested.exchange(false) && - texture_filterer->Reset(Settings::values.texture_filter_name, resolution_scale_factor))) { + // Update resolution_scale_factor and reset cache if changed + const bool resolution_scale_changed = resolution_scale_factor != VideoCore::GetResolutionScaleFactor(); + const bool texture_filter_changed = VideoCore::g_texture_filter_update_requested.exchange(false) + && texture_filterer->Reset(Settings::values.texture_filter_name, VideoCore::GetResolutionScaleFactor()); + + if (resolution_scale_changed || texture_filter_changed) { resolution_scale_factor = VideoCore::GetResolutionScaleFactor(); FlushAll(); while (!surface_cache.empty())