github elliotttate/OFXR-Bridge 0.2.13.38-dlssg-V439
OFXR Bridge V439 release 38 - fix frame pacing regression

4 hours ago

OFXR Bridge V439, release 38

This release fixes the 2X deep-pipeline pacing regression introduced in
release 37's V452 port. Affected non-SteamVR sessions could fall toward
60 displayed frames per second on a 90 Hz headset even though generated
images were ready. Updating from release 37 is recommended.

What was wrong

The new release gate could start the game's next frame too late to satisfy
the deep pipeline's minimum queue age. OFXR then repeated an older image
for a display slot. The feedback controller counted unwritten images but
missed these age-related holds, so a two-slot cycle could remain stuck at
three slots. This was reproduced with the shipped release 36 and 37 DLLs.

Changes

  • Reserve the deep interpolation pipeline's required age slot when choosing
    where to release the application. Allow an additional slot of lead when
    rendering takes more than one display period, preserving the full 2X
    rendering budget.
  • Include age-related holds in pacing feedback, once per affected group.
    Before moving release later, require both GPU readiness and sufficient
    queue age. Preserve the required age slot through cooldown and restarts.
  • Count missed slots when the next group has not arrived yet, even if its
    images are fully written by their eventual presentation. This fixes the
    related regression under slower CPU workloads in shallow interpolation,
    extrapolation, and 3X as well.
  • Keep shallow interpolation, real-first extrapolation, and 3X release
    bounds intact. SteamVR continues to use its existing pacing.
  • Extend flight-recorder event 802 with separate age-hold and late-arrival counts.
  • Add sustained-cadence regression tests with fast and slower application
    workloads, shallow/deep pipelines, D3D11 admission, extrapolation, 3X,
    and presenter restart. These check display slots and elapsed time;
    release 37's tests checked progress but missed the throughput loss.

Native DLSS FG and the Preset A / Performance Preset C selector are retained.
Changing the NVIDIA model preset still requires restarting the game.

Validation

The new regression test rejects the shipped release 37 DLL at its cadence
assertion and passes with this release. In the same D3D12 2X/deep test with
a simulated 100 Hz runtime, a 2 ms application workload, and 330 measured
application frames after warmup:

Build Application FPS Runtime display slots (660 expected) Synthetic images released
37 32.2 983 330
38 47.8 660 330

The slower 14 ms workload also sustained 47.8 application FPS. The test
uses small FidelityFX/WARP images to isolate the common presenter; these
numbers are not a native DLSS FG game benchmark.

The native-enabled Windows x64 Release build passed 130 automated tests:
ten cadence scenarios, the controller tests, and 119 compatibility checks.
Native DLSS FG correctness tests also passed under Preset A and Preset C.

The regression tests use a simulated OpenXR runtime and the shared presenter
path. They do not establish performance or headset comfort in the reporter's
game; the reporter's runtime and flight log were unavailable.

Package and installation

The Windows x64 ZIP includes the tray, OpenXR and Vulkan layers, benchmark,
production NVIDIA DLSS-G runtime, documentation, and licenses. The bundled
NVIDIA runtime is unchanged. Preset C's updated model is supplied separately
by the NVIDIA app beta. File checksums are in SHA256SUMS.txt, and a separate
checksum accompanies the ZIP.

Disable OFXR and close games using it before replacing an existing install.
Extract the archive and run OFXRBridgeTray.exe to enable it again.

Don't miss a new OFXR-Bridge release

NewReleases is sending notifications on new releases.