XeSSUnrealPlugin icon indicating copy to clipboard operation
XeSSUnrealPlugin copied to clipboard

XeSS FG Flickering Issue

Open KrakenFuego opened this issue 5 months ago • 13 comments

I'm not sure if this is a "bug", "feature" or general feedback.

When using XeSS + FG on non intel hardware (specifically RTX 2060 and 3070 were the test cards, with lumen (software rt rather than hw rt)), we noticed in motion we got a lot of texture artifacts in dark scenes, where black areas would flicker in and out of existence. It was present on most graphics settings and resolutions.

This didnt happen on a 5090 or on those cards if FG was not selected.

KrakenFuego avatar Aug 26 '25 06:08 KrakenFuego

Would you please help to dump files with XeSS Inspector? https://github.com/GameTechDev/XeSSInspector/releases/tag/release%2Fv2.1.0

xessgamedev avatar Aug 26 '25 06:08 xessgamedev

I'll have a word with our QA and see, is there a way to send you them over email if they can.

Regards

KrakenFuego avatar Aug 26 '25 06:08 KrakenFuego

Normally, the dump file size will be much larger than our email limitation. You could share the files via any network storage service you're using.

xessgamedev avatar Aug 26 '25 07:08 xessgamedev

Another one we ran into on the same vein:

If you set XeSS FG and then Try to Swap to DLSS FG, You get a crash.

the Blueprint UXeFGBlueprintLibrary::SetXeFGMode - appears to leave something running that causes reflex to barf when using the NV DLSS Plugin.

KrakenFuego avatar Aug 26 '25 13:08 KrakenFuego

Which version of the plugin you're using? Please share the log file if any.

Please note that: switching one FG to another in Unreal requires a restart to make it work, for all FG techniques use the same swap chain provider API, only one could take effect. It will be like:

  1. Set XeSS-FG off
  2. Disable swap chain overriding via saving following context in Engine.ini
[SystemSettings]
r.XeFG.OverrideSwapChain=0
  1. Enable DLSS-FG
  2. Restart the game

There's a Blueprint API IfRelaunchRequiredByXeFG() used to check if a restart is required to make XeSS-FG take effect (XeSS-FG is on but no swap chain created by XeSS-FG)

xessgamedev avatar Aug 26 '25 14:08 xessgamedev

XeSS 2.1.1 FSR 3.1.4a DLSS4 (plugin ver "VersionName": "8.1.0-NGX310.2.1.0",) - its the one from early July when they first added 5.6 support with a bunch of fixes to make it work for us.

interestingly the AMD plugin seems to coexist correctly,we can seemingly swap between XeSS FG And FSR FG but as soon as XeFG touches DLSSG it blows up.

This is the error part of the log: Its actually showing issues on Reflex, but reflex shows as enabled (And DLSSG works as expected on reboot - per the swap chain) - We were having a go at trying to make it work without restarting to see if its possible (as it appears to work with AMD/Nvidia)

[2025.08.26-13.46.58:696][235]LogStreamlineAPI: [Info]: [14-46-58][streamline][info][tid:163376][60s:537ms:177us]dlfgPresent.cpp:1964[operator ()] Engaging WAR4639162
[2025.08.26-13.46.58:697][235]LogStreamlineAPI: Error: [Error]: [14-46-58][streamline][error][tid:163376][60s:537ms:214us]dlfgPresent.cpp:126[updateStatus] eDLSSGStatusFailReflexNotDetectedAtRuntime - sl.reflex must be enabled and active 13848 != 14236
[2025.08.26-13.46.58:697][235]LogStreamlineAPI: Warning: [Warn]: [14-46-58][streamline][warn][tid:163376][60s:538ms:120us]thread.h:87[getContext] Thread id over 65536 detected, switching to thread map
[2025.08.26-13.46.58:708][235]LogWindows: Error: appError called: Assertion failed: State.status == sl::DLSSGStatus::eOk [File:W:\Engine\Engine\Plugins\Marketplace\Nvidia\StreamlineCore\Source\StreamlineCore\Private\StreamlineDLSSG.cpp] [Line: 622]
DLSS-FG failed at runtime with DLSSGStatus::eFailReflexNotDetectedAtRuntime (2). This runtime check can be disabled with the r.Streamline.DLSSG.CheckStatusPerFrame console variable

KrakenFuego avatar Aug 26 '25 14:08 KrakenFuego

FSR may work without overriding swap chain (not 100% sure), for it offers 2 modes, one relies on swap chain overriding, while the other doesn't.

To make it simple, you need to restart the game after switching FG techniques before Epic supports non-restart switching.

xessgamedev avatar Aug 26 '25 14:08 xessgamedev

Roger that,

We just did some quick testing, FSR and DLSS Seem to work without restart (as does swapping from DLSS/FSR FG -> XeSS FG), but then to switch away from XeSS FG to either FSR FG or DLSS FG Seems to need a restart

KrakenFuego avatar Aug 26 '25 15:08 KrakenFuego

You'd better check the log for which swap chain provider is taking effect.

xessgamedev avatar Aug 26 '25 15:08 xessgamedev

We will do, thank you for confirming the issue is indeed swap chain, even if the log sends you in a different direction.

KrakenFuego avatar Aug 26 '25 15:08 KrakenFuego

No problem, feedbacks are always welcome here.

xessgamedev avatar Aug 26 '25 15:08 xessgamedev

Do you have an email I can share the logs/dumps with you?

KrakenFuego avatar Aug 27 '25 11:08 KrakenFuego