From b4d55713cbde01529cb4701bd4458cfabca902f1 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 19 Apr 2023 23:40:10 -0700 Subject: [PATCH] GPU: Always update size when shrinking. Previously, we only updated size when we didn't need to recreate. This would sometimes cause it to recreate over and over, hurting perf. --- GPU/Common/FramebufferManagerCommon.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/GPU/Common/FramebufferManagerCommon.cpp b/GPU/Common/FramebufferManagerCommon.cpp index 6f4687efdd..b55ad1bf39 100644 --- a/GPU/Common/FramebufferManagerCommon.cpp +++ b/GPU/Common/FramebufferManagerCommon.cpp @@ -470,16 +470,18 @@ VirtualFramebuffer *FramebufferManagerCommon::DoSetRenderFrameBuffer(Framebuffer bool needsRecreate = vfb->bufferWidth > params.fb_stride; needsRecreate = needsRecreate || vfb->newWidth > vfb->bufferWidth || vfb->newWidth * 2 < vfb->bufferWidth; needsRecreate = needsRecreate || vfb->newHeight > vfb->bufferHeight || vfb->newHeight * 2 < vfb->bufferHeight; + + // Whether we resize or not, change the size parameters so we stop detecting a resize. + // It might be larger if all drawing has been in throughmode. + vfb->width = drawing_width; + vfb->height = drawing_height; + if (needsRecreate) { ResizeFramebufFBO(vfb, vfb->width, vfb->height, true); resized = true; // Let's discard this information, might be wrong now. vfb->safeWidth = 0; vfb->safeHeight = 0; - } else { - // Even though we won't resize it, let's at least change the size params. - vfb->width = drawing_width; - vfb->height = drawing_height; } } } else {