Skip to content

VR (OpenXR): after minimizing/restoring the game window, DLSS stops processing the eye views (mirrors keep working) until restart #9

Closed

Description

@Romellie

Title: VR (OpenXR): after minimizing/restoring the game window, DLSS stops processing the eye views (mirrors keep working) until restart

Environment

  • Game (ETS2 / ATS) and game version: Euro Truck Simulator 2, 1.61.1.1001 (Steam)
  • Mod version: === ETS2/ATS DLAA injector v0.10.3 loaded (pid=33588) ===
  • Flat or VR: VR — launch mode: VR (from the launch options)
  • Game launch options: -openxr -nointro
  • VR headset and runtime: Meta Quest 3 via Virtual Desktop / VDXR (VirtualDesktopXR 1.0.10), 72 Hz, SSW on. The log also shows the API layer openxr-oculus-compatibility.dll in the chain.
  • GPU and driver version: NVIDIA GeForce RTX 4080 SUPER, driver 32.0.16.1714 (CPU Ryzen 7 9800X3D, Windows 11 Pro 10.0.26300)
  • nvngx_dlss.dll version: 310.9.1.0
  • Mode in use and model: DLSS (2 beeps, mode = 2, dlss_upscale = 1), preset E (from perf_profile = medium, model not changed manually). Mode key rebound to Ctrl+Q (key_mode_cycle = Ctrl+Q, the log confirms mode_cycle=Ctrl+Q).
  • Other mods / injectors in the folder: none (no ReShade, no other dinput8/dxgi DLL). Only the game's own DLLs are in bin\win_x64\. Around 250 game mods (maps, traffic, graphics), no injectors among them. OFXR Bridge not installed.
  • Steam overlay on or off: on

Attachments

  • dlaa_inject.log (debug = 1)
  • dlaa.ini
  • dlaa_trace.txt
  • dlaa_selftest\
  • dlaa_snap\
  • Screenshot / short video
  • config.cfg lines: r_scale_x "0.75", r_scale_y "0.75", r_manual_stereo_buffer_scale "1.25" → DLSS 2344x2520 → 3120x3360 per eye (Virtual Desktop recommends 2496x2688)

Non-default dlaa.ini keys: mode = 2, dlss_upscale = 1, tex_lod_bias = -0.50, tex_lod_bias_auto = 1, tex_lod_bias_cutout = -0.50, perf_profile = medium, debug = 1, key_mode_cycle = Ctrl+Q.

Steps to reproduce

  1. Start the game in VR with -openxr (Virtual Desktop), load a save, DLSS active. The eye views are anti-aliased.
  2. On the desktop, minimize the game window and restore it (Alt+Tab).
  3. Look in the headset: the eye views are now aliased ("staircase" edges), as if DLSS/DLAA were off. The mirrors are still anti-aliased.

Expected behavior

DLSS keeps processing the eye views after the window is restored, or picks them up again.

Actual behavior

From the minimize/restore on (between 23:13:50 and 23:13:54 in the attached log), the eye views are no longer processed until the game is restarted. The mod still reports dlaa=on dlaa-mode=DLSS ngx-feature=1.

In the log, passes= and dlaa frames e0= stop growing, while blits, scene depth discards seen and the mirror counters keep growing. fifo underflow grows by 600 every window (every blit), and every pass section "never reached a blit". eye-map-entries stays at 6 (no new eye RT is picked up):

[23:13:44.938] FIFO stats @blit 46800: passes=46476 blits=46800 depth snapshot used=46475 live used=0 fifo underflow=324 ... mirror views handled=44547 ... (scene depth discards seen=46477) | eye map: RT map entries=6 ... | dlaa frames e0=23294
[23:13:50.822] FIFO stats @blit 47400: passes=46685 blits=47400 depth snapshot used=46684 live used=1 fifo underflow=714 ... mirror views handled=45147 ... (scene depth discards seen=46881) | eye map: RT map entries=6 ... | dlaa frames e0=23399
[23:13:54.989] FIFO stats @blit 48000: passes=46685 blits=48000 depth snapshot used=46684 live used=1 fifo underflow=1314 ... mirror views handled=45747 ... (scene depth discards seen=47181) | eye map: RT map entries=6 ... | dlaa frames e0=23399
[23:13:59.181] FIFO stats @blit 48600: passes=46685 blits=48600 depth snapshot used=46684 live used=1 fifo underflow=1914 ... mirror views handled=46347 ... (scene depth discards seen=47481) | eye map: RT map entries=6 ... | dlaa frames e0=23399

[23:13:50.822] perf @blit 47400: 386 sections of passes that never reached a blit (not in the eye lines), 0 sections not timed
[23:13:54.989] perf @blit 48000: 600 sections of passes that never reached a blit (not in the eye lines), 0 sections not timed
[23:13:59.181] perf @blit 48600: 600 sections of passes that never reached a blit (not in the eye lines), 0 sections not timed

[23:13:44.211] Present #27770: passes=46370 blits=46694 outstanding=0 mode=VR eye-map-entries=6 | dlaa=on dlaa-mode=DLSS ngx-feature=1
[23:13:54.207] Present #28366: passes=46685 blits=47886 outstanding=0 mode=VR eye-map-entries=6 | dlaa=on dlaa-mode=DLSS ngx-feature=1
[23:14:04.204] Present #29084: passes=46685 blits=49322 outstanding=0 mode=VR eye-map-entries=6 | dlaa=on dlaa-mode=DLSS ngx-feature=1

The state stays the same until the end of the session (23:15+). It looks like after the window is restored, the scene passes are no longer matched to the eye blits (maybe the game recreates render targets on restore and the eye map keeps the old ones?).

dlaa_inject.log
config_excerpt.txt

Activity

  1. Romellie commented on Oct 11, 2026

    @Romellie
    Author

    Update: the trigger is not the window minimize.

    A second session (game restarted, driving only, no minimize/Alt+Tab) shows the same failure with the same signature. In both sessions, in the same millisecond as a scene depth G-buffer pass change, the pre-tonemap stage logs a forward-colour re-entry warning. Right after that passes= / dlaa frames e0= freeze for the rest of the session, while mirrors keep being processed.

    Session 1 (the log attached to the issue):

    [23:13:46.928] scene depth G-buffer pass: 2344x2520 fmt=20 (change #4)
    [23:13:46.929] DLAA pre-tonemap: pass s=46684 left its forward binding BEFORE the scene depth discard (leave #1) -- next binding: 4 RTV(s), RTV0 fmt 10 2344x2520, DSV the scene depth (Present #27928); its stage decision runs at this forward leave ...
    [23:13:46.929] DLAA pre-tonemap: WARNING pass s=46684 bound its forward colour again after its stage decision at the forward leave (the blit unit takes it) -- forward draws after this are not in the anti-aliased picture (re-entry #1, Present #27928)
    [23:13:46.944] scene depth G-buffer pass: 2344x2520 fmt=20 (change #5) ... (change #10 at 23:13:46.985)
    -> passes stays at 46685, dlaa frames e0 stays at 23399 until the game is closed
    

    Session 2 (driving, no minimize):

    [23:36:43.036] scene depth G-buffer pass: 2344x2520 fmt=20 (change #5)
    [23:36:43.036] DLAA pre-tonemap: pass s=11305 left its forward binding BEFORE the scene depth discard (leave #1) -- next binding: 4 RTV(s), RTV0 fmt 10 2344x2520, DSV the scene depth (Present #9542); its stage decision runs at this forward leave ...
    [23:36:43.036] DLAA pre-tonemap: WARNING pass s=11305 bound its forward colour again after its stage decision at the forward leave (the blit unit takes it) -- forward draws after this are not in the anti-aliased picture (re-entry #1, Present #9542)
    [23:36:43.052] scene depth G-buffer pass: 2344x2520 fmt=20 (change #6) ... (change #10 at 23:36:43.096)
    [23:36:45.739] perf @blit 12000: 240 sections of passes that never reached a blit
    [23:36:49.906] FIFO stats @blit 12600: passes=11306 ... fifo underflow=1293 ... dlaa frames e0=5269 e1=5266   (frozen from here on)
    

    So the pass that hits the forward-leave / re-entry path (s=46684 / s=11305) seems to be the last one ever matched to a blit. Every later pass "never reached a blit". Both failures happened 4–7 minutes after game start. Settings: dlaa_pre_tonemap = 1 (default), DLSS upscaling in VR.

    Pressing Alt+F7 after the failure does not recover it. The log shows [23:40:02.575] DLAA pre-tonemap OFF (Alt+F7, Present #23785) and stage=post-tonemap, but passes=11306 / dlaa frames e0=5269 stay frozen until the game is closed.

    Next I'm testing dlaa_pre_tonemap = 0 in dlaa.ini from game start and will report back. I can attach the session 2 log too (debug = 1).

  2. JRDevo commented on Oct 11, 2026

    @JRDevo
    Owner

    yes please, as many logs as possible

  3. added 2 commits that reference this issue on Oct 11, 2026
  4. JRDevo commented on Oct 11, 2026

    @JRDevo
    Owner
  5. added
    needs-infoWaiting for the reporter; closes after 14 days without an answer
    on Oct 11, 2026
  6. Romellie commented on Oct 11, 2026

    @Romellie
    Author

    Tested v0.11.0-rc1: it works, the bug is fixed. Thank you for the quick fix!

    Same setup as before: VR, -openxr via Virtual Desktop (VDXR), Quest 3, DLSS 2344x2520 → 3120x3360 per eye, perf_profile = medium, log_level = 4. I played ~25 minutes, including the situations that used to break it. The eye views stayed anti-aliased the whole time.

    From the log (=== ETS2/ATS DLAA injector v0.11.0 loaded ===):

    • dlaa frames e0 kept growing for the whole drive, from 00:34:53 to 00:58:16 (e0=92756, e1=90431 at the end). It never froze.
    • 0 re-entry warnings. 13 scene depth G-buffer pass changes, none of them broke anything.
    • The new depth-alias tracking kicks in where it used to break, e.g.:
      [00:38:00.355] WARN  scene depth: a second 2344x2520 depth texture is in use (per-eye depths / recreated after a window restore) -- both are tracked as the scene depth (2 alias(es) ...
      [00:39:01.476] scene depth: alias 000001A1EA4F0D20 released (not cleared / bound / discarded for 800 game frames; 0 alias(es) left)
      
    • Mirrors were fine the whole time.

    Minor thing: with log_level = 4, a few normal messages at startup are tagged as ERROR, for example:

    [00:33:37.327] ERROR Present #0 oPresent returned hr=0x0
    [00:33:37.382] ERROR preview depth snapshot slot 0: captured (before the DS_P discard)
    [00:33:37.437] ERROR preview depth assembly: tile slot 0 of target order 0 reduced into the picture depth
    

    There are 9 such lines in total, all at startup. Looks like a log-level tag mix-up, nothing functional.

  7. removed
    needs-infoWaiting for the reporter; closes after 14 days without an answer
    on Oct 11, 2026
  8. JRDevo commented on Oct 12, 2026

    @JRDevo
    Owner

    Log bug in the next release, thanks for the feedback!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions