Repository navigation
Display shared GPU frames without CPU upload - #39
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.
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.