Skip to content

Add optional separate-process shared GPU frames - #9

Merged
mstan merged 1 commit into
mainfrom
feat/shared-gpu-frames-20261019
Oct 19, 2026
Merged

mstan merged 1 commit into
mainfrom
feat/shared-gpu-frames-20261019

Conversation

@mstan

@mstan mstan commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Shared GPU presentation currently falls back to a readback, CPU link payload and frontend upload. Add the optional rcore draft 11 / CoreLink 2.4 contract for separate-process Windows NT image and semaphore sharing, retaining CPU frames with old hosts, unsupported adapters/backends and exhausted or refused rings.

The fixed pre-init offer carries actual UUID/LUID/node and limits. Generation/slot/frame acknowledgments, bounded retirement, native handle ownership and an explicit save-thumbnail observer keep presentation outside simulation. The producer must complete ready before publishing a frame, so an accepted frame remains safe if it exits. Existing build/content/profile checks remain enforced; no live simulation switching.

Validation: Windows Release build and all 34 CTests pass. Coordinated actual n64lle/Launcher consumer tests cover complete displayed pixels and canonical rows, 20 real resize generations, wrong adapter, refusal, stale releases, slot exhaustion/recovery, OpenGL CPU fallback and intentional producer death. Final same-build peers pass 3,120 ticks / 25 rollbacks each / zero desyncs / all 3,117 common confirmed hashes exact. LLE replay and full LLVM lint pass. Actual Launcher and staged dependency-closure smoke pass. The final completed-work block saves 12.3% elapsed time on one selected Windows route.

Qualification limits remain explicit in n64lle docs/evidence/DIRECT-GPU-PRESENTATION.md: enhanced restore history is incomplete, and the stronger simultaneous two-seat corruption run recovered a temporary baseline fork but reported one desync counter (beads-3qv.1.15); that stress gate stays failed despite matching final confirmed hashes. No guard was waived. Existing full-pixel-digest online play keeps its portable renderer/profile; shared-image GPU netplay is not newly qualified.

Also make the diagnostic runner count completed simulation ticks through rollback, support analog input scripts and retain every confirmed tick hash. Live admissions can repeat discarded ticks and are insufficient evidence of requested progress.

Tracking: beads-hn9l.2.43 / beads-hn9l.2.65. Coordinated Launcher PR39 and n64lle PR120. Ready for review; no merge is authorized by this handoff.

@mstan
mstan marked this pull request as ready for review October 19, 2026 13:28
@mstan
mstan merged commit db0ad76 into main Oct 19, 2026
6 checks passed
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.

2 participants