diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 2c58c3486..2664606d5 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,4 +1,11 @@ -24.11.11 +24.11.13 +======== + + Replace attempts by games to set DLSS Presets A-D with E, when DLSS version + is >= 3.8.10. + * Needed for Nixxes games, since they explicitly request Preset C instead of + DLSS default. + +24.11.11 ======== + Reinstate background render mode as default policy in Metaphor: ReFantazio. + Allow Steam Input to hook and override WinMM Joystick APIs by default; diff --git a/include/SpecialK/DLL_VERSION.H b/include/SpecialK/DLL_VERSION.H index 137baabc6..67b917449 100644 --- a/include/SpecialK/DLL_VERSION.H +++ b/include/SpecialK/DLL_VERSION.H @@ -2,7 +2,7 @@ #define SK_YEAR 24 #define SK_MONTH 11 -#define SK_DATE 11 +#define SK_DATE 13 #define SK_REV_N 0 #define SK_REV 0 diff --git a/include/SpecialK/render/ngx/ngx.h b/include/SpecialK/render/ngx/ngx.h index e0ab5c814..7b3abab88 100644 --- a/include/SpecialK/render/ngx/ngx.h +++ b/include/SpecialK/render/ngx/ngx.h @@ -60,6 +60,7 @@ struct SK_DLSS_Context static bool hasDLAAQualityLevel (void) { return ( Version.major > 3 || ( Version.major == 3 && ( Version.minor > 1 || ( Version.minor == 1 && Version.build >= 13 ) ) ) ); }; static bool hasAlphaUpscaling (void) { return ( Version.major > 3 || ( Version.major == 3 && ( Version.minor > 6 ) ) ); }; static bool hasPresetE (void) { return ( Version.major > 3 || ( Version.major == 3 && ( Version.minor > 6 ) ) ); }; + static bool hasPresetsAThroughD (void) { return ( Version.major < 3 || ( Version.major == 3 && ( Version.minor < 8 || ( Version.minor == 8 && Version.build <= 9 ) ) ) ); }; static void showIndicator (bool show); static bool isIndicatorShown (void); diff --git a/src/render/ngx/ngx.cpp b/src/render/ngx/ngx.cpp index 023e08b3d..2dc096c17 100644 --- a/src/render/ngx/ngx.cpp +++ b/src/render/ngx/ngx.cpp @@ -318,6 +318,19 @@ NVSDK_NGX_Parameter_SetI_Detour (NVSDK_NGX_Parameter* InParameter, const char* I { InValue = config.nvidia.dlss.forced_preset; } + + if (! SK_DLSS_Context::dlss_s::hasPresetsAThroughD ()) + { + if (InValue > NVSDK_NGX_DLSS_Hint_Render_Preset_Default && + InValue <= NVSDK_NGX_DLSS_Hint_Render_Preset_D) + { + SK_RunOnce ( + SK_LOGi0 (L"Replacing Non-Existent DLSS 3.8.10+ Preset With E") + ); + + InValue = NVSDK_NGX_DLSS_Hint_Render_Preset_E; + } + } } NVSDK_NGX_Parameter_SetI_Original (InParameter, InName, InValue); @@ -364,6 +377,19 @@ NVSDK_NGX_Parameter_SetUI_Detour (NVSDK_NGX_Parameter* InParameter, const char* { InValue = config.nvidia.dlss.forced_preset; } + + if (! SK_DLSS_Context::dlss_s::hasPresetsAThroughD ()) + { + if (InValue > NVSDK_NGX_DLSS_Hint_Render_Preset_Default && + InValue <= NVSDK_NGX_DLSS_Hint_Render_Preset_D) + { + SK_RunOnce ( + SK_LOGi0 (L"Replacing Non-Existent DLSS 3.8.10+ Preset With E") + ); + + InValue = NVSDK_NGX_DLSS_Hint_Render_Preset_E; + } + } } NVSDK_NGX_Parameter_SetUI_Original (InParameter, InName, InValue); @@ -410,6 +436,19 @@ NVSDK_NGX_Parameter_SetULL_Detour (NVSDK_NGX_Parameter* InParameter, const char* { InValue = config.nvidia.dlss.forced_preset; } + + if (! SK_DLSS_Context::dlss_s::hasPresetsAThroughD ()) + { + if (InValue > NVSDK_NGX_DLSS_Hint_Render_Preset_Default && + InValue <= NVSDK_NGX_DLSS_Hint_Render_Preset_D) + { + SK_RunOnce ( + SK_LOGi0 (L"Replacing Non-Existent DLSS 3.8.10+ Preset With E") + ); + + InValue = NVSDK_NGX_DLSS_Hint_Render_Preset_E; + } + } } NVSDK_NGX_Parameter_SetULL_Original (InParameter, InName, InValue);