Skip to content

Wisp 2.6.12: GPU priority setting, tune results kept, exit and clip hardening - #131

Merged
Views2k merged 9 commits into
mainfrom
fix/gpu-priority-neutral
Oct 17, 2026
Merged

Views2k merged 9 commits into
mainfrom
fix/gpu-priority-neutral

Conversation

@Views2k

@Views2k Views2k commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Since the 2.4 performance hotfix (#91) the native renderer raised the process GPU scheduling class to HIGH and the device thread priority to +1 at every hardware device creation, so the overlay's presents preempt the game's GPU work on every frame. A support report on 2.6.8 (Xbox app, RX 6950 XT, 1440p 240 Hz, clips off) matches that mechanism: 120 to 60-80 fps, brief stutter and 1-2 s audio glitches while Wisp is on screen, recovering after a pause.

This release candidate (2.6.12) makes the elevation a setting, off by default: "Prioritize HUD updates on the GPU" in HUD settings next to CPU rendering. Renderer creation never sets a priority; the new WispRendererSetGpuPriority export raises HIGH / +1 or restores NORMAL / 0 on the render thread, and the worker applies the choice whenever it changes. The choice is reported to Tools as hudGpuPriority and can be paused from Feature controls as gpu-priority (wisp-site #250, live).

Also in this change:

  • Tune performance results read from Forza's Tune screen stay with the current tune after the screen closes (same car, parts and settings), instead of disappearing on the next refresh.
  • Feature control policies report to Tools when a revision is applied (feature/app/apply) and when one is rejected or cannot be cached, so a pause can be verified end to end.
  • Application exit bounds its waits (10 s controller, 2 s activation listener, 3 s needle thread) so a stuck driver call cannot keep the process alive.
  • Clip-page commands catch their own failures and refuse re-entry.
  • Version 2.6.12 with release notes.

Steam: same renderer and tune paths; no platform-specific code touched. Xbox / Microsoft Store: same; the report that motivated the GPU change came from the Store build.

Verified: native contract tests cover creation, raise and restore; managed tests cover defaults, round trip, view model states, the Tools projection, the feature catalog and the tune carry-forward. Not verified here: no Windows build on the VM, so CI compiles and tests it; the gameplay A/B on the test installer is still needed before release.

The renderer raised the process scheduling class to HIGH and the device thread priority to +1 at every hardware device creation. That lets the overlay's presents preempt the game's GPU work on each frame, which matches a report of frame drops, stutter and short audio glitches while Wisp is on screen. The renderer now only reads the effective priorities back for diagnostics; the contract tests require that creation leaves the process class unchanged.
Renderer creation no longer raises the process scheduling class; a new WispRendererSetGpuPriority export raises HIGH / +1 or restores NORMAL / 0 on the render thread, and the render worker applies the user's choice whenever it changes. The setting lives in HUD settings as "Prioritize HUD updates on the GPU", is reported in the Tools environment snapshot as hudGpuPriority, and can be paused from Feature controls as gpu-priority.
@Views2k Views2k changed the title Keep Wisp's GPU scheduling priority at the game's level Make the HUD's GPU priority a setting, off by default Oct 15, 2026
Exit waited without limit on controller disposal and the activation listener, and the render thread waited without limit on the needle motion thread; a thread stuck in a driver or file call kept the process alive until the user killed it, which Tools then recorded as an incomplete shutdown. The waits are now 10 s, 2 s and 3 s. Clip-page commands catch their own failures, show them on the page and refuse re-entry, as the Runs and Tunes commands already do.
@Views2k Views2k changed the title Make the HUD's GPU priority a setting, off by default Wisp 2.6.12: GPU priority setting, tune results kept, exit and clip hardening Oct 15, 2026
…eature pauses

Forza exposes its benchmark results only while the Tune screen is open; a refresh with the screen closed no longer drops results already read for the same car, parts and settings. Feature control policies report to Tools when a revision is applied and when one is rejected or cannot be cached, so a pause can be verified end to end. Version 2.6.12 with release notes.
The GPU setting gives HUD updates priority under heavy GPU load; the needle-speed claim was never measured. Feature pauses gained reporting to Tools only, which is not a user-visible change, so the release notes no longer list it.
Every message arrived in the inbox titled "Chat with Views", so conversations could not be told apart. The chat window gains an optional Subject field (up to 100 characters) above the composer; it is sent as the report title and stays filled so follow-ups share it. Blank keeps the previous title.
README keeps the 2.6.12 section and mentions the message subject.
@Views2k

Views2k commented Oct 17, 2026

Copy link
Copy Markdown
Owner Author

Release evidence for 2.6.12

Native renderer contract tests ran on the owner's Windows desktop (hardware GPU, 240 Hz display) at commit 2d7dc43 (tree a2a67ce0, the same tree the squash merge publishes):

.\src\Wisp.NativeRenderer\Build-NativeRenderer.ps1 -RunContractTests
{"contractFailures":0,"cpuRendering":false,"testWindowShown":true}
gpuPriorityAttempted=1;processEffective=2;deviceEffective=0
gpuPriorityToggleRaise=0x00000000;restoreProcessSet=0x00000000
pacingSeconds=3.001;displayHz=240;submittedPerSecond=240.292;timeouts=0

Not run for this release: live Steam and Xbox gameplay checks of the GPU priority setting (off by default) and the tune carry-forward. Published on the owner's instruction with those checks outstanding.

@Views2k
Views2k marked this pull request as ready for review October 17, 2026 00:45
@Views2k
Views2k merged commit 6b52b6e into main Oct 17, 2026
10 checks passed
@Views2k
Views2k deleted the fix/gpu-priority-neutral branch October 17, 2026 00:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant