Releases: perseval-BLR/NeuralScreen
Release list
v1.13.1 - the hotfix release
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.
Warning
NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.
Four fixes reported in the first hours of v1.13.0.
Important
AMD Radeon build - an active call for testers. A separate repository, NeuralScreen-AMD - the same overlay with the neural pass aimed at RX 7000 / 9000 (RDNA3/RDNA4). It has not run on a real Radeon yet, and that is what that release is for: start with native/AMD.md, then open an issue with NeuralScreen.log, probe_amd.log, card model and driver version.
The menu no longer hides behind the picture
With the menu open, turning NR off and on again - or changing the processing resolution, or toggling Frame Generation - could make the panel disappear behind the picture. All three restart the worker, and a restarted worker re-asserts its picture window as topmost, landing it above the menu.
Measured by walking the window z-order, the recovery path had two faults: it placed the menu with SWP_NOZORDER, a flag that makes SetWindowPos ignore the position argument, so the call was a silent no-op; and inserting the menu after the picture does not work between two topmost windows anyway, because inside the topmost band the order is decided by the band. The menu is now re-asserted as topmost itself, every frame while it is open - the call is idempotent, so a steady state costs nothing.
Verified through NR off/on, a work-scale change in both directions and FG on/off: the panel stays above the picture in every state (#94).
Only the control reacts, not the whole row
Every toggle, slider and choice row spanned the panel width and reacted anywhere - on its label, on the empty space beside the switch, on the caption underneath. Clicking a caption restarted the worker.
Each row now carries an explicit hit zone that is the control itself: the switch, the slider track, the choice field, the key field. It travels with the row while scrolling. Labels and captions are no longer targets; buttons, segmented controls and header icons are unchanged.
The outline follows the keyboard, not the mouse
Picking a button or dragging a slider left a big outline over the whole row - the labels above and the bar below. The ring is a keyboard affordance, so a click no longer draws it (the control still takes focus, so the arrow keys act on what was clicked), and the hover outline added with the hit zones is gone. The ring now marks the control instead of its row: on a slider it hugs the track.
The taskbar button behaves
Two reports (#93). The menu opened by itself while switching programs: clicking another application's icon also happens with the cursor over the taskbar, so the cursor test could not tell the cases apart. An activation now counts only when our own window still owns the foreground.
The menu did not open on a second virtual desktop: the taskbar window travels with the desktop the user moved the program to, while the borderless overlay windows stayed behind. The overlay now follows it through the documented IVirtualDesktopManager interface, and does nothing when that interface is unavailable.
NVOFA is the default motion backend
The driver's optical flow is now what a fresh install uses. CPU DIS stays as the automatic fallback and as an explicit choice - listed second now, with the "(experimental)" tag gone since it is no longer something you opt into. A config with no motion_backend key is treated like a fresh one, so existing installations move to NVOFA; an explicit CPU DIS choice is kept. Fixed while doing this: selecting NVOFA explicitly on a config without that key was a silent no-op.
Tests
149 checks: 144 PASS, 5 SKIP, 0 FAIL; GUI end-to-end 9/9. The new virtual-desktop follow is covered by a dedicated test that drives the decision logic with a fake manager and probes the real interface on this machine.
v1.13.0 - a real OFF, the compatibility gate, and a verified release
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.
Warning
NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.
A real OFF, and a frame cap
- With NR and FG off - and nothing recording - the pipeline now truly stops: capture and presentation close, no frames are sent, the overlay hides; the worker stays warm, and NR back on rearms every channel from a fresh frame. FG, recording and screenshots keep their own bypass stream while NR is off (#75).
- New cap on the active loop: 30 / 60 / custom 15–240 / unlimited, scheduled on a monotonic deadline; a slow frame resets the plan instead of catching up in a burst.
- The panel and log stop conflating numbers: the NR rate counts completed neural evaluations, the second rate is the FG presenter cadence, static-frame skips have their own counter - none claims to be your monitor's refresh rate (#89).
The compatibility gate runs first
- Before capture, v1.13 runs one short-lived worker on three 640×360 frames. Only a clean pass unlocks the overlay; a failure, timeout, crash, TDR or device loss blocks it with a named reason and a timed quarantine instead of a restart loop (#71, #83).
- The worker acknowledges
CreateFeature(CACK); SAFE PASSTHROUGH pixels don't count as support. - The verdict is cached per exact configuration (app, worker hash, GPU, driver, Windows build, every NR route); any change reruns the probe.
unknown,not runand unexpectedSKIPcan never become a PASS. Forced preflight on the RTX 5070 Ti: 3/3, stagecomplete. - The Program tab builds a diagnostic ZIP: version, hashes, adapter/driver, failure stage, HRESULT/SEH/DRED, scrubbed log tail. Usernames, secrets and absolute paths are redacted.
Recording and screenshots
- Stopping a recording no longer blocks the menu: the encoder drains into a
.partial, verifies the MP4, then publishes atomically; the result names codec, FPS, audio state and exact path (#86). - Screenshots freeze the processed frame before any dialog; Save As or a silent unique-name save, PNG or JPEG.
- The REC indicator and window highlight work the same in both paths.
The menu comes back (#87, #88)
- Every show request reveals the HWND, re-enables visibility, raises the layer above the presenter and redraws it. Taskbar activation is idempotent, and the invisible-menu state after monitor or GPU changes recovers.
- The #88 multi-GPU monitor routing defect is confirmed fixed.
A verified release, and keyboard access
config.default.jsonis now tracked; the user'sconfig.jsonis generated, migrated and ignored - a maintainer's machine can no longer leak into a release, and tests may not read the live user config.build_release_zip.pyrefuses a dirty tree, a wrong tag or a mismatched manifest, and builds byte-identical archives per tag. The set shipsSHA256SUMS,runtime-manifest.jsonandTHIRD-PARTY-NOTICES.md;verify_github.pyre-checks published assets against the tagged Git blobs.- The manifest pins 1352 payload and 1299 runtime files, every native source included.
- Full keyboard navigation: cyclic Tab/Shift+Tab, arrow-key editing, Enter/Space, focus ring, auto-scroll. The native presenter window is excluded from the target-window list.
Support status
- The README labels each GPU family: validated / reported / unverified / known failure, for NR and FG separately. RTX 20 NR and RTX 30 FG are known failures (below minimum / Ada).
Issues in this release
- SDR capture on 10-bit displays: the original
DuplicateOutputconverts to a stable BGRA8;DuplicateOutput1is reserved for the opt-in HDR path. Local smoke: 12 frames, zero bridge rebuilds. #86 and #89 stay open pending your retest. - #84 closed as not planned: no supported external-frame input from Lossless Scaling.
- #91: FSR FG for RTX 20/30 stays a research candidate, not a compatibility promise.
License
Source-available under PolyForm Strict 1.0.0: noncommercial use free, everything else by the licensor's permission.
Verification
148 checks on HEAD: 143 PASS / 5 expected SKIP / 0 FAIL / 0 ERROR / 0 TIMEOUT; GUI-E2E 9/9; smoke 96.9 FPS at 100 frames; static gate all green; the personal config.json byte-identical after every run.
Archive SHA-256: 42f2f8c7bae72562d343a3694b4d3ff8daaa98a2e8a8eacee6bc2ae5b29cebcf
v1.12.0 - capture reliability and safe recovery
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.
Warning
NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.
Capture reliability
- Fixed SDR flicker on 10-bit displays: Desktop Duplication now requests one stable BGRA8 format instead of alternating between BGRA8 and FP16 (#86).
- Fixed multi-GPU monitor routing: every menu display resolves to its real
(adapter, output)pair. An incompatible processing-GPU/display pair now falls back to Python frame transfer instead of silently showing adapter output 0 (#88). - WGC now initializes WinRT before its support query, follows
ContentSize, and keeps resize recovery on the frame-pool recreation path. - Python capture recovery is bounded: three consecutive failures, then a 30-second cooldown instead of an endless restart loop.
Safer GPU failure handling
- Requirements, feature creation, first and steady-state evaluation, fence timeout, Present failure and device removal are now distinct diagnostic stages.
- Fatal GPU failures enter one terminal state: new submissions stop immediately and potentially busy resources are not released from an unsafe recovery path.
- Resize now honours fence failures instead of freeing feature resources after a failed wait.
Recording, screenshots and the taskbar
- 192 kHz WASAPI sources are resampled to AAC 48 kHz. AAC is probed before the MP4 is opened; if audio is unavailable, video recording continues instead of producing a broken file (#86).
- Screenshots freeze the processed frame before opening Save As, so the dialog cannot appear in the image (#89).
- Taskbar activation is now an idempotent “show menu” action and no longer hides an already visible menu (#87).
Capture note
In full-screen mode the overlay is intentionally excluded from Windows screenshots and ordinary OBS display capture to prevent recursive self-capture. Use NeuralScreen's built-in screenshot or Spout2 for the processed result.
Verification
The full release run passed 132 of 133 checks; the remaining check exposed the WGC resize race fixed before this tag. That WGC runtime test then passed four consecutive runs. The final archive/static gate and launch-to-processing smoke test are green.
Archive SHA-256: c48718398814b160fef34b42991d9fb36ae150965eb81b694887d0f2995bb557
v1.11.1 - the shipped config default, and the multiplier unlocks
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 shipped config is the product default again - and now guarded
The 1.11.0 archive carried a maintainer's working config: frame_multiplier 3 (an RTX 40 card caps at 2x), the two SR-merge leftovers in the sliders (local_tone 0.75 and skin_structure 0.8 instead of Natural's own 0.50 and -1.0), and two dead dlss_sr keys from the removed feature. A fresh install started outside the profile it displayed, and on a 40-series card the wrong multiplier walked straight into the refusal below.
The defaults are the product defaults now: multiplier 2, Frame Generation off, CPU motion, Natural's four sliders, dead keys gone. A new static check ("config: the shipped defaults") compares the committed config against the profile-derived defaults on every run - the zip-vs-HEAD comparison can never catch this class, because both sides carry the same wrong values. It flagged the old values the moment it was written.
The multiplier is selectable while Frame Generation is off
Locking x2/x3/x4 behind the FG switch is what let the config bug bite: the switch-on ran with the shipped x3, the 40-series runtime refused it, the switch flipped itself back off - and picking x2, the way out, was locked behind that very switch. The group is a preference for the next attempt now: always selectable, the chosen step stays lit while FG is off. The switch still reports the truth; only the way out is no longer behind it.
Tests
128 checks green on the release commit - the new config gate rides the static stage (it fails on the old HEAD by design, and that failure was recorded before the fix).
v1.11.0 - lot of fixes! FG truth, wider sliders
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.
v1.10.0 - DLSS 4.5 FG, NVOFA, BYO libraries, perf series
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.
DLSS 4.5 Frame Generation (opt-in)
Desktop DLSS-G after neural rendering: Settings -> Processing -> DLSS 4.5 FG, with a x2/x3/x4 multiplier beside the switch. The depth is flat and the motion is estimated - there is no engine cooperation, so UI and text can distort; that is the known cost of the approach. The HUD pairs the two honest rates: "X / Y fps" - the network's output, then what the presenter shows. Validated on RTX 50-series; other adapters are unconfirmed (attach the [fg] log block if it fails). The FG runtime ships in the archive.
NVIDIA Optical Flow (opt-in)
Settings -> Capture -> Motion estimation selects the driver's optical flow instead of CPU DIS. Falls back to CPU automatically with a single alert if the driver refuses (only driver 616.64 / 5080 has been validated upstream).
The HUD pairs both frame rates
The counter was network-only, which read as broken with FG on. The header now shows "network / presenter" when they differ.
Libraries: everything ships, offline
The library auto-updater is removed and the app no longer downloads anything. Both NVIDIA runtimes ship in the archive: nvngx_dlssnr.dll (neural rendering) and nvngx_dlssg.dll 310.9.1.0 (Frame Generation), the public NVIDIA-signed redistributable. A README notice at the top of the repo states the position openly: not affiliated with NVIDIA, runtimes included unmodified as NVIDIA's property for research use, no warranty, removed on a rights holder's request. To run your own build of a runtime, drop the DLL into native/libraries/ - it wins over the bundled copy; nr_dll config or NS_NR_DLL env remain the NR override.
DLSS Super Resolution removed
The opt-in SR from the 1.9.x cycle was removed after the live test: on desktop/window captures (flat depth, zero jitter, the network capped at 2560x1440 by NGX) it reads as smear, and NVIDIA's license does not allow shipping the runtime - a BYO burden for an underperforming feature. If a later redesign revisits it, it returns as an opt-in BYO item in native/libraries/.
Performance
The recorded-frame ring ends a 33 MB-per-frame allocation (13.2 -> 2.4 ms), the GPU verdict dies with the worker that gave it, bypass no longer computes a motion field nobody reads (2.9 ms/frame), the flow preset is a setting, and the fallback resize filters stopped using Lanczos. Also: recording waits one frame for queue room instead of a quarter second.
Fixes
- The FG acknowledgements went to the wrong stream - the client desynced on every scale change.
- The FG present hands its fence to the defer-tail contract; slot starvation no longer kills the worker (that was the overlay blinking out and rebuilding).
- The HUD panel is opaque while FG interpolates - the 8% translucency let the 2-3x picture modulate the panel text.
- The UI: switches moved to the right of their labels, the features named directly ("DLSS 5 NR", "DLSS 4.5 FG"), the multiplier as three small buttons in the row; clicking a multiplier no longer flips the whole FG switch.
Known issue (in progress)
Window mode: the NR window can lose its active state and stop responding to dragging when another window takes focus. An audit found seven sources; three are fixed in this release (z-order churn, the WGC resize reopen loop, the FG fence token). The rest is under active work - the next iteration addresses the remaining focus/z-order behavior.
v1.9.0 - models switch, the overlay reworked, a week of window-mode bugs closed
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.
Warning
NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.
The overlay reworked, the sliders honest, and a week of window-mode bugs closed.
New
- Model switch - three networks, three different outputs rather than
three strengths: Default suits a desktop, Natural and Cinematic
are tuned for games and soften photographs and small text. Measured fine
detail against the untouched frame on a desktop capture: Default
+18.7%, Natural -11.4%, Cinematic -23.4%. Picking a profile
sets a model; the switch overrides it. - The menu redesigned: four tabs instead of one long scroll, one status
line instead of a readings grid, every parameter slider shows its scale,
the profile says when you have moved off it, and About says what an issue
report has to carry to be solvable. - The parameter ranges are measured, not guessed. Intensity used to be
offered up to 2.5 while the DLL clamps at 1.0 - everything above it was the
same picture. The sliders now reach exactly as far as the parameters do;
a test sweeps every knob and names the dead ones.
Fixed
- The one-window overlay, five bugs closed as one series. The layer that
carries the HUD over the captured window: a solid magenta screen in the
fallback configuration; the desktop cut-out dropped twice a second while
the menu was open; the surround left as a stale photograph when a frame did
not cover the layer; a trail of copies when the captured window shrank; a
shimmer whenever the program's UI sat above the picture. - A colour-format flip no longer tears the capture down. Desktop
Duplication handing back a frame in a different format rebuilds the bridge
and keeps the duplication alive, instead of reopening it every flip. - Infinity in a preset is a broken file, reported as such - not silently
clamped to a slider's end while the same number in the config was an error. - Collapsing the menu during a hotkey rebind no longer strands the hotkeys
for the whole session. - The worker no longer logs "feature ready" when the feature create failed -
the log and the verdict now say SAFE PASSTHROUGH. - A window picker held its list still while it was open.
- The static-frame skip ships off, and its switch stays out of the menu until
it earns its place back.
Files
neuralscreen-v1.9.0-full.zip- everything inside, unpack and runREADME.md/README.ru.md- the guideTECHNICAL.md/TECHNICAL.ru.md- how it works
Controls
Num2 menu · Num1 NR on/off · Num3 screenshot · Num0 record · Num4/Num6 resolution · Num5 one window · Ctrl+Alt+Q quit
v1.8.2 - Boost on by default, and three silent failures named
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.
Warning
NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.
Two defaults changed, and a day of fixes - three of them cases where the
program looked broken and never said why.
Different out of the box
- Boost is on. It shipped off because it had only been measured on still
frames, and that caution outlived its reason: on a 5070 Ti at 4K it is
45.7 → 72.6 frames for a picture indistinguishable at 1:1 - the
network's result is composed onto your native frame, so text and edges keep
full resolution. The switch is still there to compare. - Every profile's Local tone is half a point lower. That slider lifts
shadows and flattens contrast, and it was doing more of it than the picture
wanted, most of all on dark scenes.
Fixed
- The overlay invisible, the effect firing for a second at a time (#61).
Something else in the worker's process printed into its stdout, which
carries the binary protocol - four bytes of a log line, and every handshake
after it timed out while the worker's own log said OK to each one. The
protocol now has a private handle: anyone else's printing goes to the log. - A black screen at 10-bit colour depth (#58). Switching the output to
10bpc makes the capture hand back one FP16 frame, and the code read "HDR"
off that format alone - putting the whole picture on the scRGB path with
HDR compatibility switched off. Reproduced here by switching the depth by
hand, fixed, and verified the same way. A fresh start at 10bpc was always
fine; the transition was not. - Alerts appeared inside the captured window. They belong at the top of
the screen in either mode, and now they are there. - "The window cannot be captured" repeating every half second when a
window collapsed below the size that can be processed. - A flipped display is turned back over (#47). 180° only; 90 and 270 swap
the width and height and still say so in the log. - The Spout bridge built its device on the default card rather than the
one the worker runs on - a cross-GPU copy every frame for anyone using
NS_GPU. - A recording had a hole where a window resize was: the frame that asked
for pixels inside the capture's dry spell came back empty.
Faster
- A window resize reconfigures the worker instead of replacing it:
1.845 s → 0.112 s, and no veil, because nothing dies. Every fullscreen
toggle in a captured window was costing the longer one. - Boost gets the deferred fence wait too - one wait per frame instead of
three, in the mode where frames are cheapest and most numerous. - The settings page lost two holes of padding at the bottom.
Files
neuralscreen-v1.8.2-full.zip- everything inside, unpack and runREADME.md/README.ru.md- the guideTECHNICAL.md/TECHNICAL.ru.md- how it works
Controls
Num2 menu · Num1 NR on/off · Num3 screenshot · Num0 record · Num4/Num6 resolution · Num5 one window · Ctrl+Alt+Q quit
v1.8.1 - faster pipeline + fixes
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.
Warning
NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.
Fixes and speed. No new features. If you are on 1.8.0, update.
Fixed
- The screen flickered on every cursor move (#58). 1.8.0 put a
SetColorSpace1into the ordinary present path - a call this program had
never made. It runs only with HDR compatibility on now; with the switch off
the present path is what 1.7.x had. Reported on an ASUS ROG STRIX G16 with
an external monitor. - The processed picture could sit behind a focused fullscreen game while
the HUD stayed on top. The picture is raised first, the HUD last. Thanks to
@tzachbon (#52). - Dead links in
TECHNICAL.md/TECHNICAL.ru.mdand the HDR links in
both READMEs, which were broken in every unpacked copy.
Faster
- Moving a slider no longer rebuilds the neural feature. Every step used
to drain the GPU, release the feature and build it again - 113-148 ms of
frozen picture. The parameters were always applied per frame; only the
sizes need a feature. Measured at 0 ms. - A mode switch is half as long: 1.845 s -> 0.972 s. A rebuild was paying
the 120-frame cold-start warm-up, which exists for the launch on a cold
card, not for a pipeline that has been running. - One fence wait per frame instead of three. Upload, evaluate and present
go on one queue in order; the frame now ends on the presentation fence
alone. 2.1-3.4% throughput, p95 acquisition-to-present 9.80 -> 9.64 ms.
Thanks to @tzachbon (#59). - A window resize of a pixel or two no longer rebuilds anything. Two
numbers describe one window and they disagree by a border on Windows 10.
Also
- Every long switch shows a full-screen veil with an animated mark
instead of a spinner, and it no longer slides off the desktop on a
window-mode switch. NS_PHASE=1reports where the frame goes - submit, CPU wait, GPU time
and queue gap per stage. On a 5070 Ti over moving video: the network is
8.9 ms of GPU, everything else we own is 0.13 ms together.
Files
neuralscreen-v1.8.1-full.zip- everything inside, unpack and runREADME.md/README.ru.md- the guideTECHNICAL.md/TECHNICAL.ru.md- how it works
Controls
Num2 menu · Num1 NR on/off · Num3 screenshot · Num0 record · Num4/Num6 resolution · Num5 one window · Ctrl+Alt+Q quit
v1.8.0 - experimental HDR support, off until you turn it on in the settings
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.
Warning
NeuralScreen requires the latest NVIDIA driver. Operation with older drivers or unsupported/non-standard configurations is not guaranteed.
HDR is experimental and it is OFF. Nothing changes until you turn it on:
Num2 → the gear → CAPTURE → HDR compatibility. Everything else in this
release is the same program you had yesterday.
What the switch does
Until now an HDR desktop was captured as SDR, and the result read as
"everything is too bright and the sliders do nothing" - the commonest bad
report this program gets. With the switch on, the screen is duplicated in
FP16 scRGB instead of 8-bit, the network is handed a tone-mapped SDR copy,
and its edit is returned to the original signal as a bounded linear residual -
the same shape as the Boost composite, in HDR scale. Highlights above white
and the negative values wide-gamut colour uses survive, and a zero edit
reproduces the original exactly. Presentation switches the swap chain to
scRGB.
This is not native HDR inference: the neural runtime still works on an SDR
proxy. The details, the arithmetic and the limits are in
docs/HDR.md.
Contributed by @saffd96 in #36 - the capture, the shaders, the
presentation and a WARP test for all of it. He also split a 46-file branch
into this one when asked to, which is more than most people would do.
What it does not do. Screenshots, recording and the Spout output stay
tone-mapped 8-bit SDR - they carry the processed proxy, not an HDR copy of
the screen. Windows HDR has to be on as well. If FP16 duplication is refused
(no IDXGIOutput5, or the driver says no) the capture falls back to SDR
rather than failing, and the log says which of the two happened.
Why it is off. It changes the capture format, the swap chain format and
the colour space of the presentation. Each of those is a way for the picture
to disappear on hardware that cannot be tested here. On an SDR display the
switch changes nothing that can be measured: the pixel-exact tests pass with
it forced on, and three timed runs at 4K came back 20.9 / 20.9 / 20.7 frames
against 20.0 / 21.0 / 20.9 without it.
Three places in the contribution were hardened before it went in: the SDR
present could be refused over a colour-space call this program has never made
(the picture would simply not appear), an HDR desktop without IDXGIOutput5
lost its capture entirely instead of falling back, and the HDR pipeline
released its resources twice on a size change.
One line under a control, not a paragraph
The settings page had grown explanations - three lines under the Spout2
switch, two under four more controls. Fourteen controls with paragraphs under
them stop reading as a list of options; the page becomes a document. Every
hint is one line now, in all twelve languages, and the panel is 1980 px tall
instead of 2115. Anything that needed a paragraph has one in the README.
The four documentation images are regenerated to match.
Tests
99 checks, 100 with this release's additions:
- the HDR shaders now run in the suite.
hdr_gpu.cpptakes the two
shaders the worker actually compiles and runs them on WARP - no HDR
monitor, no NVIDIA runtime - checking highlights, signed gamut, bit-exact
zero edit, bypass, the wipe and the SDR export. It was a batch file nobody
ran. - the hardware HDR test runs itself. With no argument it used to print
SKIP and exit 0, which is a green tick for nothing. It now asks Windows
whether the display is in HDR and takes the test when it is. Verified here
on an RTX 5070 Ti at 4K with HDR on: WGC and DDA, capture and presentation
in FP16, and a byte-exact SDR frame after switching back. - every hint is measured with the real faces at the real row widths in
twelve languages - the menu truncates a hint, silently, and nothing wraps. - the capture-visibility check identified its marker by the colour it
painted; on an HDR desktop the compositor returns a different one, and the
test failed for a reason that had nothing to do with its subject. - the freshness check now watches every source the worker is built from, not
only the.cpp.
Files
neuralscreen-v1.8.0-full.zip- everything inside, unpack and runREADME.md/README.ru.md- the guideTECHNICAL.md/TECHNICAL.ru.md- how it works
Controls
Num2 menu · Num1 NR on/off · Num3 screenshot · Num0 record · Num4/Num6 resolution · Num5 one window · Ctrl+Alt+Q quit