Repository navigation
Add optional separate-process shared GPU frames - #9
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.