Repository navigation
Experiment: shared-runtime external-display routing - #2
oliverames wants to merge 4 commits into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d1bf33d385
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The walk from the load back to the bounds check noticed copies and masks but no other write: cmp w18,#4; b.hi; add w18,w18,#1; ldrsw x18,[x4,x18,lsl #2] read entries 0 to 4 while the code uses 1 to 5, so one case's target was missing with no sign of it. A site with a write of the index after its check, or a call with a caller-saved index, is now refused, as jump_adr_offsets and half_count already refuse a write. A refusal goes on to the other recognizers and ends in the jump table assertion. Writes before the check do not count, which keeps the sites check_before_copy takes. A write that keeps the value, such as sxtw x0,w0, is refused too; no module on the drive has one. Checked: test_jump_copies.py (the new cases fail on the previous rewriter). Of the 345 unique modules on the drive, old and new recognition are the same on 281, and 60 more mains were scanned on the previous code with no site this refuses. That includes Smash 13.0.5, EA SPORTS FC 27 and Well Dweller. Four could not be checked: New Super Mario Bros. U Deluxe's main, sdk and rtld fail alike (no profile), and Smash 1.0.0's main stops at a table the game's note already lists. No regress.py run: nothing changes in the modules checked.
|
Closing: experiment evidence and testing are tracked in the upstream nxnative PRs, so the fork-only experiment copy comes down. Keeping the branch here for reference. |
This is a fork-only experiment targeting
codex/experiment-base. Keep it isolated frommainand the existing upstream PR heads. The switch is off by default.What and why
The current iOS front end has one global runtime and render layer. Adding another ordinary scene would duplicate or rebind that state, and forwarding each scene's focus independently could suspend the game.
Building with
DM_EXTERNAL_DISPLAY=1opts into a dedicated external role and iOS 27 scene accessory. The same view/layer moves behind a graphics fence while the phone retains controls. Aggregate foreground/focus state handles disconnect and reconnection. Default builds retain their original scene configuration. The experiment includes the verified prepare-gate prerequisite from upstream seedds#574.Checked
Production compile check covers 179 files; full native frontend fixture links for the iOS 26 baseline.
Newt, iOS 27.2: 30 programmatic checks use production frontend/scene code, actual UIKit views/accessory registration, injected scene identities and graphics/display-link stubs. They verify ownership, one startup request, focus and handover ordering.
Actual packaging block tests prove unset/0 plist parity and the opt-in role/delegate. Source/docs/lint checks pass.
Phone reactivation now preserves audio/controller recovery while an external scene keeps aggregate focus active. Seven added checks use the real interruption observer with activation/controller endpoints mocked; they also verify that guest focus, the graphics gate and display link are not reset. Native result: 30 checks, 0 failed at
2816bfa.No physical external display, cross-display drawable delivery, display-link rebinding or unplug during GPU work was tested. No external gameplay claim or five-game route.
The standalone fixture now clearly identifies itself as a verification app that uses no game files; its result records the actual visible label. The final source passes the same native checks.
Docs