Skip to content

Bring in intraducine's Playport PRs (willfaust/Madeira#480, #481, #482) - #21

Merged
insertfloppy merged 9 commits into
claude/project-thread-xnlyvofrom
claude/project-thread-2afjil
Oct 30, 2026
Merged

insertfloppy merged 9 commits into
claude/project-thread-xnlyvofrom
claude/project-thread-2afjil

Conversation

@insertfloppy

Copy link
Copy Markdown
Owner

Requested by Cameron · project thread

Merges intraducine's three open upstream PRs into our build line ahead of the devs. intraducine's commits (e7332ee, 07471e3, 6e60c3a) are merged as they are, so authorship is kept. If the devs change these PRs before they merge them, we take their final version at the next catch-up.

What's in it

Our changes on top

  • Conflicts: Open game web requests in a confirmed private browser willfaust/Madeira#480's Xcode re-serialized project.pbxproj. Here only its GameBrowser.swift and GameBrowserKit entries are added to our project file. Both Open game web requests in a confirmed private browser willfaust/Madeira#480 and Add an opt-in Playport KosmicKrisp graphics profile willfaust/Madeira#481 add docs/playport-port.md, so it keeps both sections.
  • dxmt-patches 0003 rewritten. The new DXMT pin includes intraducine's in-process share table. JesseLovelace's D3D11→D3D12 shared-texture patch no longer applied, and apply.sh would have failed the build. 0003 now builds on intraducine's table. MadeiraSharedTextureLookup, which madeira-d3d12's OpenSharedHandle uses, resolves those handles, and a shared texture with no mach port is shared in-process too.
  • DLL farm rebuilt (build-ios.yml ships these as committed, so the pins reach games only this way). The recipe was checked first: built on the old pins, it reproduces the shipped DLLs apart from timestamps.
    • d3d11.dll (arm64ec): DXMT f50fdcc + patches 0002-0003. dxgi.dll came out identical, so it isn't changed.
    • xtajit64.dll: FEX 18d891e + 0004.
    • xtajit.dll: FEX 35e8f36 + 0001-0004 + the x87 commit. 0003 still needs 35e8f36.
    • Imports and exports of all three match the shipped DLLs.
  • Settings catalog: describes MADEIRA_BROWSER_ADDRESS. Regenerate the catalog in the build, as for build 48.

Checked

Not tested

intraducine lists a device build, GPU tests and FEX assembly tests as still to do. This needs build 49 and a device test. Draft until Cameron has tested it.


Generated by Claude Code

intraducine and others added 9 commits October 28, 2026 22:03
Signed-off-by: intraducine <265588704+intraducine@users.noreply.github.com>
Signed-off-by: intraducine <265588704+intraducine@users.noreply.github.com>
Signed-off-by: intraducine <265588704+intraducine@users.noreply.github.com>
…sts) into the build line [skip ci]

project.pbxproj: the PR's Xcode re-serialized the whole file; only its
GameBrowser.swift and GameBrowserKit package entries are added here.
…e) into the build line [skip ci]

docs/playport-port.md: both PRs add this file; it keeps both sections.
…ne's in-process shares [skip ci]

The new DXMT pin (f50fdcc, willfaust#482) carries intraducine's
92004aa, which hands out in-process shared handles (0x40000000 | n) when
a shared texture's mach port can't be registered, and for Unity's video
textures. JesseLovelace's 0003 added its own process-local table in the
same code and no longer applied, which would fail apply.sh and the build.

0003 now builds on intraducine's table instead of keeping a second one:
- MadeiraSharedTextureLookup (exported, used by madeira-d3d12's
  OpenSharedHandle) resolves an in-process handle to its Metal texture
  and D3D11 description, for a 2D texture without dropped mips that is
  not renamable, as before.
- A shared texture with no mach port is shared in-process too (it was
  Jesse's trigger), and the device-handle check moves after that path.

Based on JesseLovelace's 24ae9b6.

Co-Authored-By: JesseLovelace <JesseLovelace@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwPPpxcZAtQCi7RDa6cqMf
…kip ci]

build-ios.yml ships these as committed, so willfaust#482's FEX and DXMT pins
reach games only through a rebuild (llvm-mingw 20260421, Linux):

- arm64ec d3d11.dll: DXMT f50fdcc + dxmt-patches 0002-0003 (0001 is in
  the pin), madeira-d3d12 from this tree, the shipped
  dxmt_command.metallib. The same recipe on 05876bb reproduces build
  48's d3d11.dll and dxgi.dll apart from the 4-byte timestamp. dxgi.dll
  comes out identical on the new pin, so it stays. Exports and imports
  match the shipped d3d11.dll (MadeiraSharedTextureLookup kept).
- arm64ec xtajit64.dll: FEX 18d891e (the new pin, 6fb1b50 + the x87
  64-bit integer fix) + 0004, build/fex-arm64ec/build.sh. The same on
  6fb1b50 reproduces the shipped module apart from 22 timestamp bytes.
- aarch64 xtajit.dll: FEX 35e8f36 + 0001-0004 + 18d891e's x87 fix
  (applies cleanly), build/fex-wow64/build.sh. 0003 still needs 35e8f36.
  The same without 18d891e reproduces the shipped module apart from the
  embedded commit id and timestamps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwPPpxcZAtQCi7RDa6cqMf
…kip ci]

The game browser's helper reads it; Madeira sets it each session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwPPpxcZAtQCi7RDa6cqMf
@insertfloppy insertfloppy self-assigned this Oct 30, 2026
insertfloppy pushed a commit that referenced this pull request Oct 30, 2026
iOS refuses GPU work from an app that is not active ("Insufficient
Permission (to submit GPU work from background)",
MTLCommandBufferErrorDomain 7). A Direct3D game kept submitting every
frame after a switch to another app, each frame failed, and the game
could lose its device and come back broken. OpenGL already waits
(WiniosGL.m); winemetal had nothing.

build/dxmt-patches/0004: winemetal's commit and nextDrawable wait from
WillResignActive until DidBecomeActive, so the game stands still and
carries on where it was. The main thread never waits (it delivers the
notification that ends the wait). [wmt-bg] lines log each wait and how
long it lasted. madeira.cfg background-pause = 0 turns it off.

Applies on the pinned dxmt (05876bb) and on PR #21's f50fdcc after
their 0001-0003. tests/host/check-background-pause.py checks the patch,
that the patch series applies when dxmt is checked out, and the catalog
line (same text the generator writes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwPPpuKJFjmUdhDqyKH7KR
@insertfloppy
insertfloppy merged commit 7afd59e into claude/project-thread-xnlyvo Oct 30, 2026
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.

3 participants