Skip to content

Display shared GPU frames without CPU upload - #39

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

Consume optional shared GPU frames from a separate runner directly in the Launcher. Supported Windows Vulkan cores export images and binary semaphores; the real GL consumer imports once and copies into the existing Picture texture, avoiding steady readback, pixel IPC and upload while keeping filtering, mipmaps, overlays and explicit screenshots/thumbnails.

Match actual adapter UUID/LUID/node and extensions once before initialization. Fence-completed generation/slot/frame acknowledgments prevent premature reuse; stale images still return ownership, resize retirement is bounded, and unsupported or refused paths retain CPU frames. Session teardown releases imports before the GL context. Pin coordinated Runtime PR9, commit 5e419d0.

Validation: Windows Release build passes. The production consumer/Picture/ImGui/CoreLink game harness matches all 3,720 picture/canonical/event rows between GPU and CPU delivery. Actual gameplay Fit resize exercises 20 generations; every one of 3,120 displayed/canonical rows matches CPU delivery. Lifecycle tests cover stale releases, exhaustion/recovery, refusal, wrong adapter and producer death. An isolated real Launcher session displays 526 shared pictures, resizes to three window shapes, opens the save-state browser and closes cleanly; owned-window captures inspected. Exact state/PCM replay is retained; a pre-existing enhanced first-restored-frame history limit remains documented in n64lle's evidence memo.

Coordinated n64lle PR120 passes final actual peers (3,120 ticks, 25 rollbacks each, zero desyncs, 3,117 common confirmed hashes exact) and LLE replay. Its stronger simultaneous two-seat fault-injection case recovered a temporary baseline fork and matched final confirmed hashes but reported one desync counter; that stress gate remains failed under beads-3qv.1.15. Full-pixel-digest titles keep their current portable netplay renderer/profile; this does not weaken hashes or qualify active shared-image GPU netplay. The staged real Launcher also passes with only its copied DLL closure and Windows on PATH. Tracking: beads-hn9l.2.43 / .65. Ready for review; no merge authorized by this handoff.

@mstan
mstan marked this pull request as ready for review October 19, 2026 13:28
@mstan
mstan merged commit 91dfd15 into main Oct 19, 2026
1 of 2 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