github perseval-BLR/NeuralScreen v1.11.0
v1.11.0 - lot of fixes! FG truth, wider sliders

latest releases: v1.12.0, v1.11.1
6 hours ago

Notice. Not affiliated with NVIDIA; NVIDIA, DLSS and the NVIDIA logo are NVIDIA Corporation's trademarks. The bundled NVIDIA runtimes are NVIDIA's property, included unmodified as received, research/educational use only, no warranty, use at your own risk. Rights holders: say the word and the next build ships without them.

Warning

NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.

The blink over the picture is fixed

Window mode with the menu over the captured window used to blink hard - a DWM recompose of the topmost pair up to ~10 times a second. The z-order guard read the top of the stack at face value, and a live stack is helper windows: invisible 0x0 IME / MSCTFIME UI / ForegroundStaging, a visible 1x1 ThumbnailDeviceHelperWnd of dwm, an off-screen Narrator helper. Each 30-frame check took one for a foreign window and re-asserted the pair with two SetWindowPos calls - 10,339 pairs in one session. The guard now walks to the first VISIBLE window that can cover the layer (>=16 px, intersecting the screen), and "foreign" is decided by HWND, not class - an SDL game is class "pygame" too, and that check also left the picture under a focused game. The same commit ends the drag stutter: the dragging gate now covers the title-bar drag, edge scale and grip resize, so the per-frame rebuild stops while the panel moves. Verified live: no blinking, smooth drags, and the focus z-order test's five cycles stay clean.

The FG switch follows reality

When Frame Generation cannot start, the switch used to stay ON with nothing interpolating. It now flips back off with an 8-second notice; only refusals newer than the last "UI: on" marker count, so a stale verdict cannot kill a working switch, and a fresh attempt re-arms it. Num7 toggles FG from anywhere.

Sliders reach further; the model is its own control

  • Tone and structure to 2.0, skin structure to 2.5 - measured first on the live runtime (distinct frames at the new tops; shimmer 2.1 of 255 against 1.5). Intensity stays 1.0: the runtime clamps above it (identical frames, re-measured).
  • A built-in profile moves the four sliders only; the model survives a profile switch, and "revert" no longer appears for a model change. A saved preset keeps its model.

The status line names the card that actually runs (issue #81)

A 4070 Super + 3050 machine ran the pipeline on the 4070 while the panel said "RTX 3050 - Ampere": the name came from NVAPI's first card, the worker runs on the DXGI adapter you pick. The menu, About and the log header now name the worker's adapter - and the warm-up decision is made for it too.

BYO runtimes pass a signature gate

Every DLL in native/libraries/ is verified before mapping: Authenticode valid, signer chained through the local-machine store only, CN "NVIDIA Corporation", product name starting with NVIDIA, and the verified file is held open for the session. An unsigned copy dies at stage 1 with the reason in the log; the bundled copy is the fallback.

NGX calls leave the worker directly

The caller check wants the calling module's path to contain "nvngx.dll" - the worker's own path does, so the forwarding layer is no longer needed. Measured: Init_Ext, CreateFeature(18) and ~2400 evaluated frames straight from the worker, zero restarts, 42-47 fps NR with FG. NS_FORWARDER=1 remains the escape hatch; the renamed-module control is still refused (0xBAD00002).

Present, pacing and the rest

  • The FG presenter paces to the compositor (frame-latency waitable, 3 buffers): displayed rate moved from ~115 fps wall-clock to a steady 163-168 - the monitor's refresh - NR at 70, zero timeouts.
  • Latency-1 belongs to the FG presenter's lifetime; the ordinary NR path no longer carries it (that was the fullscreen flicker with NR on).
  • A capture pause over a second forces one NR reset and one FG reset - no smear on the first frame after.
  • NVOFA: the execute no longer hands over a cost buffer while the cost channel is off - the driver refused it (error 4) and every frame fell back to CPU DIS with a worker/present churn behind it.
  • The open menu never takes the keyboard focus (zero focus flips in five seconds).
  • FG handles a swapchain mode change (skip one frame) and occlusion without presenting into a dead swapchain.
  • The HUD raise owns the HUD-over-picture invariant; the worker's follow moves the picture with SWP_NOZORDER when it is already top - no ping-pong.
  • The shipped config is back to opt-in defaults (FG off, CPU motion); 1.10.0 had shipped a working config with personal choices.
  • Both sides read z-order by HWND; the dead SSC1 reader is gone; the BYO gate revokes the whole chain; the motion-status scan reads only the log tail; mid-flight restarts pass the effective warm-up.

Tests

128 tests (tests/test_gpu_identity.py pins the card-naming rule). Full suite + GUI record cycle green on every commit of this package - last run: all 128 green in 276 s.

Don't miss a new NeuralScreen release

NewReleases is sending notifications on new releases.