DLSS Plugin for Unreal Engine 4.27.2 causing black screen on older NVIDIA GPUs

We added the DLSS plugin to our shipped game, for most players it has been working fine but for some the game won’t start anymore and instead shows a black screen. One commonality is that they all have older NVIDIA GPUs, like a GTX 560 TI, GT 630M, GT 730 and GTX 770. Unfortunatelly it is very difficult to debug the issue since we cannot reproduce it so far, even after purchasing a 600 series GTX card.

Is anyony aware of the cause of this issue or a possible solution?

Hi @fluppisoft and welcome to the NVIDIA developer forums!

Great to hear you enabled DLSS on your game! Which game is that if I may ask?

The most straight forward way to avoid the blank screen situation would be if you patched your game to add a capabilities check before activating the DLSS features. If it is not an RTX generation GPU it will not work in any case so you can safely bypass it.

Unless what you are describing is that the game goes blank already during DLL load already? Then maybe check GPU before loading it?

The usual approach we do is to work with a person who has the issue and try to get remote access, load a debug build and check the logs at what point the app hangs, take it from there. Beyond that, really hard to tell what happens here.

Hey Markus, thank you for taking the time to help. The game is called Brick Rigs, it’s a physics sandbox game.
We are using the official UE4 DLSS plugin by NVIDIA, I’m assuming that it should work out of the box and disable itself on incompatible GPUs. Looking through the plugin source code I can see compatibility checks in FDLSSModule::StartupModule(), where I also found the handy command line parameter ‘-ngxdisable’, which prevents initialization and loading of the libraries. I asked a player with the black screen issue to add this startup paramter, and apparently it fixes the issue. So I assume the plugin fails to disable itself on some GPUs that don’t support DLSS?

Sending a player a debug build with dense logging around the DLSS initialization code is probably a good idea.

Update: After reviewing the log file of a player I noticed the last entry before the game freeze is: “DLSS model OTA update enabled”. I asked them to add ‘-ngxdisableota’ to their startup options, which fixes the back screen issue. So it seems to come down to this line of code:

NVSDK_NGX_UpdateFeature(&NGXAppIdentifier, NVSDK_NGX_Feature::NVSDK_NGX_Feature_SuperSampling);

As far as I can tell this function is supposed to download updates for DLSS and blocks the entire game while doing so. In the official documentation it says “This API should be called on its own dedicated thread. This is because the time taken to download an update can very based on factors outside of control…” Yet in the official DLSS plugin this being called on the main game thread.

I can probably fix this quite easily by disabling OTA updates by default, however since NVIDIA recommends enabling it in their documentation, is there a recommended fix for it?

Nice find, I was not aware of that command line feature.

I forwarded your question to the DLSS team, let’s see what comments can get on this.

Thanks!

Hey Markus, did you receive any feedback about this? I disabled the OTA update in DefaultEngine.ini in the last update via:

[/Script/DLSS.DLSSSettings]
bAllowOTAUpdate=False

This seems to have fixed the issues. However it would still be nice to know if a proper fix will be rolled out to the DLSS plugin for UE4/5.