From 73f125dcc7b02ed5feca6ac32a7d9a2ca5631dc9 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Wed, 11 Aug 2021 20:02:29 +1000 Subject: [PATCH] [client] egl: make FSR detect an input size change and activate if valid --- client/renderers/EGL/filter_ffx_fsr1.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/client/renderers/EGL/filter_ffx_fsr1.c b/client/renderers/EGL/filter_ffx_fsr1.c index 8d5e8dfb..0a314f8b 100644 --- a/client/renderers/EGL/filter_ffx_fsr1.c +++ b/client/renderers/EGL/filter_ffx_fsr1.c @@ -40,6 +40,7 @@ typedef struct EGL_FilterFFXFSR1 enum EGL_PixelFormat pixFmt; unsigned int width, height; + unsigned int inWidth, inHeight; bool sizeChanged; bool prepared; @@ -231,19 +232,28 @@ static bool egl_filterFFXFSR1Setup(EGL_Filter * filter, { EGL_FilterFFXFSR1 * this = UPCAST(EGL_FilterFFXFSR1, filter); - if (pixFmt == this->pixFmt && !this->sizeChanged) + const bool inSizeChanged = this->width != width || this->height != height; + + if (pixFmt == this->pixFmt && !this->sizeChanged && !inSizeChanged) return true; - if (!egl_framebufferSetup(this->easuFb, pixFmt, this->width, this->height)) - return false; + if (this->sizeChanged) + { + if (!egl_framebufferSetup(this->easuFb, pixFmt, this->width, this->height)) + return false; - if (!egl_framebufferSetup(this->rcasFb, pixFmt, this->width, this->height)) - return false; + if (!egl_framebufferSetup(this->rcasFb, pixFmt, this->width, this->height)) + return false; + } + this->inWidth = width; + this->inHeight = height; this->active = this->width > width && this->height > height; this->sizeChanged = false; this->pixFmt = pixFmt; this->prepared = false; + + DEBUG_INFO("%d %d %d", width, height, this->active); return true; }