Summary
When an nDisplay viewport uses DLSS as its upscaling method, the render resolution is computed as ViewportSize * ResolutionFraction / (r.ScreenPercentage / 100). With r.ScreenPercentage below 100 this makes the render resolution larger than the viewport, and once ResolutionFraction exceeds r.ScreenPercentage / 100 the DLSS input exceeds its output, NGX rejects the parameters, and every render node in the cluster crashes at the same moment. Selecting TSR instead, with nothing else changed, applies the same r.ScreenPercentage correctly as a multiplier.
What Type of Bug are you experiencing?
Virtual Production
Steps to Reproduce
- Set r.ScreenPercentage below 100. Ours came from Scalability — selecting Medium in Viewport Scalability sets sg.ResolutionQuality=71, which maps directly to r.ScreenPercentage=71.
- Launch an nDisplay cluster from Switchboard and join a Multi-User session.
- On the nDisplay Root Actor, set Viewports > Upscaler Settings > Upscaling Method to NVIDIA DLSS Super Resolution.
- Set Quality to DLAA.
- Every render node crashes immediately. The same happens when the setting is applied to the ICVFXCamera inner frustum instead of the outer viewports.
Expected Result
r.ScreenPercentage does not affect the DLSS render resolution; the quality mode’s resolution fraction determines it on its own. For DLAA (fraction 1.0) the render resolution equals the viewport resolution, and no quality mode can produce a DLSS input larger than its output.
Observed Result
The viewport is 2816 x 5120. DLSS receives 3967 x 7212, which is 2816 / 0.71 by 5120 / 0.71.
[NGXDLAA::CreateDlssInstance:2064] Error: Application passed invalid creation dimensions.
Input dimensions (3967 x 7212) must be <= output dimensions (2816 x 5120).
stat unit RenderRes on that viewport, with r.ScreenPercentage = 71. Every value matches ResolutionFraction / 0.71:
With the upscaling method set to TSR and nothing else changed, RenderRes is 71.0% on every node, i.e. viewport x 0.71, which is correct. Verified on four nodes with different viewport sizes and aspect ratios (2816x5120, 1536x5120, 1536x1536, 1536x768) — the factor is identical, so it is not derived from the projection geometry.
Affects Versions
5.8
Platform(s)
Windows
Upload an image
For crash reports, include your callstack
Assertion failed: (((ResultCreate) & 0xFFF00000) != NVSDK_NGX_Result_Fail)
[File: …\Plugins\DLSS\Source\NGXD3D12RHI\Private\NGXD3D12RHI.cpp] [Line: 367]
NGX_D3D12_CREATE_DLSS_EXT (CreationNodeMask=0x1 VisibilityNodeMask=0x1) failed!
(3134193669 NVSDK_NGX_Result_FAIL_InvalidParameter),
SrcRect=[0x0->3967x7212], DestRect=[0x0->2816x5120],
ScaleX=1.408736, ScaleY=1.408594, NGXDLSSPreset=Preset K(11),
NGXPerfQuality=DLAA(5), DenoiseMode=Off
[Callstack] UnrealEditor-Core.dll!UnknownFunction
[Callstack] UnrealEditor-NGXD3D12RHI.dll!FNGXD3D12RHI::ExecuteDLSS()
[NGXD3D12RHI.cpp:367]
[Callstack] UnrealEditor-DLSS.dll!FDLSSSceneViewFamilyUpscaler::AddDLSSPass’::::operator()()
[DLSSUpscaler.cpp:1196]
[Callstack] UnrealEditor-DLSS.dll!TRHILambdaCommand<FRHICommandListImmediate, …>::ExecuteAndDestruct()
[Engine\Source\Runtime\RHI\Public\RHICommandList.h:371]
[Callstack] UnrealEditor-RHI.dll!UnknownFunction
[Callstack] UnrealEditor-RHI.dll!UnknownFunction
[Callstack] UnrealEditor-RHI.dll!UnknownFunction
[Callstack] UnrealEditor-RHI.dll!UnknownFunction
[Callstack] UnrealEditor-Core.dll!UnknownFunction
[Callstack] UnrealEditor-Core.dll!UnknownFunction
[Callstack] UnrealEditor-Core.dll!UnknownFunction
[Callstack] UnrealEditor-RenderCore.dll!UnknownFunction
[Callstack] UnrealEditor-Core.dll!UnknownFunction
[Callstack] UnrealEditor-Core.dll!UnknownFunction
[Callstack] KERNEL32.DLL!UnknownFunction
Crash in runnable thread RHIThread
Additional Notes
Changing Viewport Scalability in the editor during a Multi-User session propagates to the running render nodes. We confirmed this by reading r.ScreenPercentage on a node before and after changing the quality level in the editor — the Scalability slot changed from 71 to 50 immediately. An artist lowering the scalability preset can therefore crash the whole cluster without touching any DLSS setting, and lower values make more quality modes fail, not only DLAA. Each node also writes the value into its own Saved/Config/WindowsEditor/GameUserSettings.ini on shutdown, so it persists into later sessions.
Workaround. r.ScreenPercentage=100 under [SystemSettings] in DefaultEngine.ini, which outranks SetByScalability. No quality mode crashes after that.
Environment. UE 5.8.2 (CL-56702186), Development. DLSS plugin 8.7.2-NGX310.6.0, driver 580.97, RTX 6000 Ada Generation, Windows 11 23H2. nDisplay cluster with Mesh projection policy, launched from Switchboard, Multi-User enabled.
Related. The assertion itself is in the NVIDIA DLSS plugin, and the failure handling has been reported to NVIDIA separately: . This report is about the resolution calculation on the nDisplay side.
