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.
Important
Radeon testers wanted. The AMD build lives in a separate repository, NeuralScreen-AMD, and it has not run on a real Radeon yet. Start from native/AMD.md there, and if it does not come up, attach the diagnostic package (Settings -> Program -> Create diagnostic package).
A small patch on the v2.1 line: the on-screen frame counter reports the switch it is actually in, and the motion backend gets a switch to A/B the driver's own output grid.
The frame counter now reads the switch live (#131)
The counter on screen took "is the pass running" from the panel's snapshot, and that snapshot is rebuilt only while the panel is open. So a switch made anywhere else left it stale: Num1 turned NR on, the log showed the layer up and the pass running, and the counter stayed invisible - with Frame Generation off there was nothing left to draw at all. Reading the state from the panel was wrong in principle, not just in that one path: the same stale snapshot was behind the two paths where a dead worker turns NR off, so the counter could equally keep reporting a pass that had stopped. Both values now travel with every frame in the HUD, which is where the rates already came from, and the panel snapshot stays as the fallback for callers that have no HUD.
Thanks to Saymoin, whose recording and package pinned this down.
NS_NVOFA_GRID: the driver's motion-field resolution, for an A/B
The NVIDIA optical-flow backend hands back one motion vector per cell of an output grid, and the grid is the resolution of that field. It ships at 4, which puts one vector on a 4x4 block that the expansion shader stretches bilinearly - the reason a moving edge deforms smoothly where CPU DIS keeps it sharp. NS_NVOFA_GRID=1 asks the driver for the pixel-level field DIS gives, at more GPU time.
The default stays 4, so a measurement runs against the picture as it is today rather than against two changes at once. Only the grids the driver reports are accepted, and a grid it does not offer falls back to the driver's own preference with a line in the log - a silently different grid would make the A/B a lie. This is a switch for measuring, not a new default; the picture has not changed in this release.
Tests
Full suite on the release state: 226 checks, 0 FAIL, 5 SKIP, GUI-E2E clean. New: test_nvofa_controls covers the grid switch (default, each accepted value, and a refusal the driver did not offer, which must fall back rather than force), and test_fps_overlay gained the cases where the live HUD has to beat a stale snapshot - plus a check that the HUD actually carries those keys, because the reader is useless if the feed is missing them. Both fail on the code before this release.