ishitatsuyuki / LatencyFleX

Vendor agnostic latency reduction middleware. An alternative to NVIDIA Reflex.
Apache License 2.0
810 stars 22 forks source link

Issue with Latency Graphs in DLSS Enabler - Request for Assistance #50

Closed artur-graniszewski closed 1 month ago

artur-graniszewski commented 2 months ago

Hi Tatsuyuki Ishi,

I hope you're doing well. My name is Artur Graniszewski, and I'm currently working on a project called DLSS Enabler. The goal of the project is to enable FSR3 frame generation in games that support DLSS3, while also simulating the DLSS Frame Generation capability and NVIDIA Reflex features on any DX12 capable GPU (AMD and INTEL included) under Windows, Linux and SteamOS.

I wanted to reach out because we've integrated your [module/library] into the project, as it provides the kind of emulation needed for our implementation. However, during testing, we've encountered some anomalies—specifically, in certain games and on specific GPUs, the latency graphs seem off.

Given your expertise and the fact that your code is already integral to our project, I would love to know if you'd be interested in contributing to help improve the implementation. Your insights could be invaluable in refining the experience and ensuring better performance across different setups.

If you're open to discussing this further, I’d be happy to provide more details about our testing and any specific issues we’ve encountered.

I'm also sending you few links to get a grasp on the project I'm working on: Nexus pages: https://www.nexusmods.com/site/mods/757 https://www.nexusmods.com/cyberpunk2077/mods/14726

Github page: https://github.com/artur-graniszewski/DLSS-Enabler

Some videos showing how it works: https://www.youtube.com/results?search_query=dlss+enabler

NVAPI64 proxy (used by DLSS Enabler, but is reusable for other mods), which implements your code: https://github.com/FakeMichau/nvapi-dummy

OptiScaler module (used by DLSS Enabler, but also working in standalone mode): https://github.com/cdozdil/OptiScaler

Our Discord channel used for development, support and testing: https://discord.com/invite/2JDHx6kcXB

Thank you for your time, and I look forward to hearing from you!

Best regards, Artur Graniszewski DLSS Enabler Project

ishitatsuyuki commented 2 months ago

I haven't had much time to spare on this project recently, though if you can leave more details on what issues you are seeing with the graphs I could comment on whether I've seen similar symptoms before.

artur-graniszewski commented 2 months ago

Thanks. I will compose the necessary documentation and will post it tomorrow EOD.

artur-graniszewski commented 2 months ago

Hi @ishitatsuyuki

I hope you're well and have a great day:)

Sorry for late reply, we were all quite busy in preparing for the next release of DLSS Enabler and other mods used by it: https://github.com/artur-graniszewski/DLSS-Enabler/releases/tag/3.02.000.0-beta7

I'm writing to you to thank you for writing such great piece of software, provide some update and (hopefully) interesting feedback and ask you few minor questions if you don't mind.

When it comes to LatencyFlex, it has been integrated successfully into the package and... provided a lot of unexpected benefits.

As I already explained, DLSS Enabler supports all DX11 and DX12 capable GPUs, so in order to reduce the system latency, it relies on different, sometimes vendor specific solutions:

image

DLSS Enabler enables all of the above by simulating proper NVIDIA driver and transforms Reflex calls to be compatible with either AntiLag2 or LatencyFlex functions.

Our tests show that LatencyFlex indeed reduces the latency in many different games like Cyberpunk, Jedi Survivor, etc... (usually shaving off the promised 10ms off the regular latency where Reflex nor AntiLag2 is available).

image

The mentioned benefit of using LFX that we didn't predict, is as follows: we use Reflex, AntiLag2 and LFX also for FPS limiting purposes, and AL2 code is... broken by AMD (doesn't limit the FPS if the user enables Frame Generation), so FakeMichau (an author of the code responsible for this integration) combined AL2 with LFX for this specific purpose, and it works:

image

(top part - AL2 + LFX used as FPS limiter, bottom part - LFX alone, used as FPS limiter and latency reducer, FPS cap is set to 150FPS)

For comparison, here is the result of capping the FPS without LFX nor AL2 present:

image

To summarize, we successfully tested LFX in quite a few different titles and can now use your solution in virtually any game supporting NVIDIA Reflex, under any OS that can run the Windows application (we're not limited to Linux) and on any DX12 capable GPU.

During the implementation and testing phase, we found out two things we would like to clarify with you:

Looking forward to your reaction and hoping you could help us with some answers:)

Cheers Artur

artur-graniszewski commented 1 month ago

Hi,

I just wanted to let you know that DLSS Enabler has been released to the general public and based on the tests, and after some tweaking, LatencyFlex proved to be on par with native Reflex and AntiLag2 features.

Thank you for making this possible.

Cheers, Artur

artur-graniszewski commented 1 month ago

Closing the issue:)