diff --git a/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp b/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp index 6d06a816..f9278e04 100644 --- a/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp +++ b/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp @@ -1553,6 +1553,10 @@ void FSRFG_Dx12::EvaluateState(ID3D12Device* device, FG_Constants& fgConstants) Hudfix_Dx11::ResetCounters(); } + // The change flags are cleared below, so a pending recreation (e.g. FFX FG version) must happen now + if (State::Instance().scChanged) + DestroyFGContext(); + ReleaseResourceCopies(); } diff --git a/OptiScaler/framegen/ffx/FSRFG_Vk.cpp b/OptiScaler/framegen/ffx/FSRFG_Vk.cpp index bc0222d9..15d97798 100644 --- a/OptiScaler/framegen/ffx/FSRFG_Vk.cpp +++ b/OptiScaler/framegen/ffx/FSRFG_Vk.cpp @@ -691,9 +691,14 @@ void FSRFG_Vk::EvaluateState(FG_Constants& fgConstants) DestroyFGContext(); } } - else if (IsActive()) + else { - Deactivate(); + if (IsActive()) + Deactivate(); + + // The change flags are cleared below, so a pending recreation (e.g. FFX FG version) must happen now + if (state.scChanged) + DestroyFGContext(); } if (state.fgChanged)