Repository navigation
Recheck GPU feedback after an unsignaled fence event - #1409
Open
givethesourceplox wants to merge 1 commit into
Open
givethesourceplox wants to merge 1 commit into
givethesourceplox wants to merge 1 commit into
Conversation
Contributor
|
For the reviewer, this overlaps #1332 in purpose but not in lines. Once macOS revokes the process's GPU access ( Drafted with Claude; reviewed by me. |
fpedrolucas95
pushed a commit
to fpedrolucas95/nxnative
that referenced
this pull request
Nov 6, 2026
…signaled fence event
This was referenced Nov 6, 2026
Aeonitis
pushed a commit
to Aeonitis/nxnative
that referenced
this pull request
Nov 6, 2026
…er and shader chain, the branch's host services, movie clock, packing and Ocarina of Time additions Upstream reached about 60 fps in Kokiri Forest with its own versions of most of the branch's merged PRs, so where both changed the same code upstream's is kept: - The shader chain is upstream's (translator, lock, dmsh tools, Ryujinx sources), plus the branch's bracket-depth flattening (dmsh_depth.py, test_dmsh_depth.py); chain c732699d4fdb. Not carried: the LDSM subgroup fence (seedds#1376, needs a translator rebuild; upstream's HMMA/LDSM rework reports clean movies) and the shared raw-memory lookups (seedds#1405, superseded by upstream's last-entry lookups). - The renderer (dm/gfx/nvn, dm/gfx/msl) and its tests are upstream's. Not carried: seedds#1390-seedds#1394, seedds#1404, seedds#1408, seedds#1409, seedds#1417, seedds#1418, seedds#1420, seedds#1427, seedds#1320, seedds#1331, seedds#1332, seedds#1368, seedds#1285 renderer parts, pool_skip_retired, and the branch's warning fixes and prewarm progress there. They stay on oot-integration. - Ocarina of Time's profile is upstream's, with the branch's 12 movie compute rows in pso_manifest.tsv, PLAN.md and PR-AUDIT.md. - shader_split.py is upstream's plus the BAHS record check (test_split_bahs_records.py). - Host: upstream's EventFd, PlayReport send, audio lock and vibration answers; the branch's service sessions (hle_sf, hle_prepo), sync waits, AV1 movie clock and parallel decode, diag_abort frame fix and focus control are kept. - Scripts: shader.noindex, tmp.noindex, notes outside the shader key, bench and regress changes. Checked: the Mac host builds (GAME=0400486024DEC000); host unit tests pass; the Python tool tests pass on Python 3.13 except test_dmsh_pool_arrays, test_nro_pack, test_nsp_dump and test_nsp_incremental, which fail on upstream main as well. Not run: the full shader build on this chain, gameplay.
FeReuss
pushed a commit
to FeReuss/nxnative-oot
that referenced
this pull request
Nov 10, 2026
…ack after an unsignaled fence event kept both sides of docs/agents/symptoms.md; kept both sides of docs/reference/frame-rate.md Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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.
What and why
A rejected GPU command buffer can report completion through Metal feedback without signaling its shared event. The fast game-fence wait could remain blocked on that event for up to an hour, even after
g_donehad advanced.Limit the initial event wait to 100 ms, recheck published completion, then use the existing feedback condition variable. A finite timeout shares its original budget across both waits. This recovers the completed-fence wait; it does not prevent the GPU error that caused the missing signal or claim a normal-frame performance gain.
Reference finding. Found during Ocarina's memory-fault investigation (#1299). This is separate from #1073's future-fence scheduling. Includes the same SDK-26 declaration prerequisite as #1404 for the existing OS-27-guarded MetalFX setters.
Checked
Apple M1 Pro, macOS 26.5.2, Xcode 26.5:
perf-order-cpu: all four fast-wake/wait-ledger combinations pass, including unsignaled-event completion, finite timeout budgets, sub-ms and infinite waits, completion ownership and callback ordering.check_t_perf_order: default, encode-thread, and fast-wake/slice-merge/compute-hoist-disabled Metal-validation runs pass.git diff --checkpasses.The regression harness discovers only DK, MKW and Ocarina locally, with no stored baselines; DK and Ocarina have no smoke route on this upstream base. No five-game report or standalone gameplay claim is available. The fixture deterministically reproduces missing event signaling without deliberately faulting the GPU. iPhone behavior is unmeasured.
Docs