Commit Graph

3724 Commits

Author SHA1 Message Date
TheRazerMD fafbacddac Some overlay changes
* Slight change to no upscaler detected text
* Added FSR3.1-FG debug view descriptions
2026-03-24 19:35:48 +01:00
TheRazerMD ca9870dc41 Added more game quirks
* REF PDUpscaler games - DisableDxgiSpoofing
* Lies of P - DisableDxgiSpoofing
* Assetto Corsa EVO - DisableDxgiSpoofing
* Assetto Corsa Rally - DisableFSR2Inputs, DisableFSR3Inputs - stops crashing for FFX inputs (still needs Engine.ini tweak)
2026-03-24 19:35:02 +01:00
TheRazerMD e03a3408d7 Added Crimson Desert quirk
* DisableDxgiSpoofing - due to crash
2026-03-24 19:34:55 +01:00
cdozdil 0b49519969 Fixed overlooked context check at configure 2026-03-24 17:38:45 +03:00
cdozdil d90b986d3f Added extra logging for DXGI_DEVICE_REMOVED situations 2026-03-24 17:34:35 +03:00
cdozdil c08a30db8d Release some unreleased objects 2026-03-24 17:33:29 +03:00
cdozdil 4d14e2969d Fix FFX crash on DestroyContext by using real context ptr 2026-03-24 16:07:42 +03:00
TheRazerMD ddd7dada05 More funny 2026-03-24 13:44:49 +01:00
FakeMichau a15810bd34 XeLL on non-Intel GPUs without needing to use FG
Requires the usage for the XeFG swapchain but FG itself is not active.
2026-03-23 19:15:54 +01:00
FakeMichau a0a9cc6816 Align with AMD's new naming scheme
April Fools' really came early this year
2026-03-23 15:23:24 +01:00
FakeMichau e2ad11709a Remove Vulkan from IdentifyGpu
My disappointment is immeasurable, and my day is ruined
2026-03-23 14:12:02 +01:00
FakeMichau c3337177d1 Passthrough Radiance Cache calls 2026-03-23 01:24:59 +01:00
FakeMichau 6e42b96001 Add logging strings for new ffx features 2026-03-23 01:03:16 +01:00
FakeMichau 48b41d12de Fix a crash with FSR FG 2026-03-23 00:08:15 +01:00
FakeMichau 2e870d648c Fix a typo 2026-03-22 23:18:25 +01:00
FakeMichau cbf7025ed8 Add support for the FSR 3 MFG mod
Download the mod, rename it to fsr3fg_mfg.asi and place next to Opti. Select Nukem's as FG input as it works in the same way.
2026-03-22 21:54:29 +01:00
FakeMichau 099da43ade Adding Vulkan support to the reflex markers graph
It behaves a bit differently than with D3D
2026-03-22 19:45:24 +01:00
FakeMichau 899cd37cb8 Apply UI extraction to Death Stranding 2 for FSR FG 2026-03-22 18:10:27 +01:00
FakeMichau 8a1c782e08 Bump version 2026-03-22 16:52:28 +01:00
FakeMichau d9a8ff8fe4 Passthrough FSRD calls 2026-03-22 16:41:08 +01:00
FakeMichau 5cd6907d96 Prevent getAllGpus from calling itself
Last resort as wrong data will be given
2026-03-22 16:41:08 +01:00
FakeMichau 8e50f8eb50 Correct a menu warning about FSR FG + Reflex 2026-03-22 14:04:13 +01:00
FakeMichau f5788be121 Fixes around loading of nvapi
@cdozdil figured out the issue
2026-03-22 13:35:54 +01:00
FakeMichau ec9707e73a Change active fg in/out mode when an incompatible one is selected
This does also make the warning silent which might not be ideal. This needs to be moved out of menu code
2026-03-22 01:22:11 +01:00
FakeMichau fe68e62b0f Remove an unnecessary winevulkan workaround 2026-03-22 01:11:19 +01:00
FakeMichau d3fb0c3e92 Prevent a loop where getPrimaryGpuVulkan calls itself 2026-03-21 20:34:32 +01:00
FakeMichau 500369e23d Fixes around DXVK on Windows + general clean up 2026-03-21 20:20:26 +01:00
FakeMichau faa0b7b34b Read OverlayMenu's default value
as per #905
2026-03-21 01:11:57 +01:00
FakeMichau 95ae2f2942 Go back to using nvapi's presence to check for Nvidia early 2026-03-21 01:04:20 +01:00
FakeMichau 92d7e79ede Correct a few more function signatures 2026-03-20 19:19:59 +01:00
FakeMichau 786b28da67 Correct display name for FSR 3 on Vulkan 2026-03-20 17:14:27 +01:00
FakeMichau bd9f396e17 Enforce more function signatures
On the vulkan side I took the easy route and used Gemini, in case of issues please visit https://support.gemini.com/
2026-03-20 17:12:00 +01:00
FakeMichau 758c3e3683 Add hooking helpers for catching function signature mismatches
Only used in d3d12 hooks for now
2026-03-20 01:20:08 +01:00
FakeMichau 68278bcf73 Convert internal string code into enums 2026-03-19 19:53:57 +01:00
FakeMichau aa9923bc33 Enable FSR4 on capable GPUs by default 2026-03-19 17:02:47 +01:00
FakeMichau 7a85a5ef2d When enabled, prioritize internal fakenvapi over other nvapi64 dlls 2026-03-19 15:02:43 +01:00
FakeMichau a500ef1b90 Improve DXVK compatibility 2026-03-19 14:44:09 +01:00
FakeMichau ca8b4bb690 Fix early vulkan calls on Linux 2026-03-19 01:49:44 +01:00
FakeMichau 0c43f74ce0 Merge branch 'notifications' into HEAD 2026-03-19 00:59:04 +01:00
FakeMichau 1a76902a7b Remove done TODO 2026-03-18 13:52:37 +01:00
FakeMichau 0d1f8df0f0 Merge branch 'identify-gpu' into HEAD 2026-03-18 13:48:05 +01:00
Zach Hembree 8d00d9e581 Fix NGX Lifetime Management and Manual FSR FOV Conversion (#875)
* Clean up DLSS DX12 inputs

- Refactored CreateFeature() and EvaluateFeature() into smaller functions with shared utilities and distinct code paths for internal OptiScaler and passthrough features.

- Added documentation to clarify internal implementation details and behavior required by the NGX API.

- Added more descriptive error messages.

- Fixed a potential memory leak in GetParameters(). Per the DLSS Programming Guide (310.5.0), this deprecated API requires the SDK to manage the lifetime of the returned parameter table, as legacy applications do not free this memory.

- Identified a memory management issue: NVNGX_Parameter tables are incorrectly handled in Allocate/Destroy and FeatureProvider. C-style free() is being used on tables allocated with 'new' and on native NGX tables, leading to memory leaks and undefined behavior. Using free() here is actually worse than just willfully leaking memory. This needs fixing.

* Fix: Correct NGX Parameter table lifetime and deallocation

Problem:

The previous implementation incorrectly used C-style free() on NVSDK_NGX_Parameter objects within the DLSS feature providers. This was unsafe for several reasons:

- Non-trivial types: These structs often contain internal data/tables that free() does not account for, bypassing necessary destructors.
- Ambiguous ownership: Tables were inconsistently sourced from internal allocations (OptiScaler), external NGX API calls, or legacy persistent pointers.
- Heap/Stack corruption: Using free() on memory managed by the NGX API or on stack-allocated memory from legacy GetParameters() calls. This risked immediate crashes or heap instability.

Solution:

Introduced a tagging system to explicitly track memory ownership and determine the correct deallocation strategy. When a destruction request is made, the system now checks the table's tag and acts accordingly:

1. InternPersistent: Internal OptiScaler tables for legacy APIs. Lifetime is managed by the SDK; these persist until process exit.
2. InternDynamic: Internal tables explicitly created/destroyed by the client. Now correctly freed using delete with a static_cast to the implementation type.
3. NVPersistent: Native NGX legacy tables. These are ignored as the native SDK manages their lifetime.
4. NVDynamic: Native NGX modern tables. These are now properly forwarded to the native NGX DestroyParameters() function.

* Start gathering unique string literals in header

- Started organizing string literals being used as unique identifiers for things like feature selection and parameter lookup into a dedicated header. Less error prone and actually works with intellisense.
- The actual usages of these strings have yet to be replaced, but I am using them for new code.

* Fix incorrect configurable FOV conversion in FSR

- The conversions for manually configured horizontal FOV to vertical FOV used in upscaling have been corrected to use the following formula: vFov = 2 * arctan( tan( hFov / 2 ) * ( h / w ) )
- Added convenience variables for global singletons to Eval functions to help readability
- Streamlined ffxResolveTypelessFormat usages. More readable.

* Update ffxResolveTypelessFormat usage

* Run clang formatting

* Fix potential NGX handle memory leak if device couldn't be acquired

Fixed a preexisting edge case that could cause the NGX handle to be leaked if the D3D12 device could not be acquired.

* Fix Vulkan upscaler typo and DX11 init error

- Vulkan: Correct default upscaler key from FSR 2.1 to FSR 2.2.
- DX11: Removed redundant table initialization in DLSS inputs caused by copy-paste error.

* Add NGX table reset check and remove old DLSSD check

- Added extra check in NGX table to preserve usage keys for custom tables.
- Fixed incorrect feature release log error
- Reran clang-format
- Removed old DLSSD check for root signature restore
- Removed GetIsDlssModuleInited() helper utility
2026-03-18 15:11:05 +03:00
FakeMichau ec46e0ea9c Merge branch 'fakenvapi-merge' into HEAD 2026-03-18 13:08:33 +01:00
FakeMichau 0d4e14378f Make use of enums for fakenvapi + expend enum support in the config 2026-03-18 12:51:06 +01:00
FakeMichau bac7700473 Expose XeFGWithoutXeLL in the menu
Mainly for people that hate themselves
2026-03-18 12:23:45 +01:00
FakeMichau 1c9a7dbc18 Remove the fakenvapi-specific calls from the query interface 2026-03-18 11:41:17 +01:00
FakeMichau def8b868b2 Wait for sleep to finish before deiniting low latency tech 2026-03-18 11:36:51 +01:00
FakeMichau f872159235 Allow for Reflex -> XeLL conversion to be skipped when using XeFG 2026-03-18 02:04:55 +01:00
TheRazerMD f6d2e0c0e6 Added DEATH STRANDING 2: ON THE BEACH quirk
* DisableDxgiSpoofing
2026-03-18 02:02:25 +01:00
FakeMichau c2b3840346 Fix FG present reporting to fakenvapi 2026-03-18 00:33:53 +01:00