Skip to content

Pin dxmt at the BC texture and memory fixes - #185

Closed
spitefulowl wants to merge 1 commit into
willfaust:mainfrom
spitefulowl:dxmt-correctness-memory
Closed

spitefulowl wants to merge 1 commit into
willfaust:mainfrom
spitefulowl:dxmt-correctness-memory

Conversation

@spitefulowl

@spitefulowl spitefulowl commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Depends on willfaust/dxmt#16 (see Merge order).

Change

This moves the dxmt submodule to the head of willfaust/dxmt#16. That PR fixes three problems on GPUs without BC texture support:

  • the purple lighting, black ground and black scope lens in Metro 2033 Redux;
  • jetsam kills during loads in Metro 2033 Redux and Hollow Knight;
  • the lack of frame-time logging that would show what a slow scene waits on.

Its six commits:

  • dxmt: log GPU busy time, readback waits and draws every 64 frames
  • dxmt: zero blit commands; zero-fill remapped BC textures physically
  • d3d11: refill mip levels that a mipClampBC copy left empty
  • dxmt: zero-fill the whole grown zero buffer
  • d3d11: wait for the GPU instead of renaming staging past a budget
  • dxmt: flush resource initializer uploads every 64 MB

Device results and the new DXMT options (d3d11.asyncRefill, d3d11.stagingRenameBudgetMB) are described in willfaust/dxmt#16. The config catalog does not change, because these commits add DXMT options but no environment switch.

Rebased onto main. willfaust/dxmt#16 is rebased onto the dxmt commit main pins now (020a848) and pinned at e874a1556fb. Its former commit that dropped each shader's parsed DXBC is gone: upstream dxmt#6 does that in airconv.

Merge order

The pin points at the head commit of willfaust/dxmt#16, which so far exists only in the spitefulowl fork. Merge that one first.

  • If it is merged with a merge commit, the pinned commit is then in willfaust/dxmt unchanged, and this PR can follow as is.
  • If it is squashed or rebased, I will move the pin to the resulting commit before this one is merged.

Rebuild (no binaries in this PR)

  • arm64ec-windows/d3d11.dll (DXMT PE meson build)
  • the i386 DXMT DLLs (build/wine-i386/build.sh)
  • app/Madeira/libdxmt_combined.a (full build/dxmt-ios/build.sh)

🤖 Generated with Claude Code

Moves the dxmt submodule to the head of the spitefulowl/dxmt branch
dxmt-correctness-memory, which adds on top of ios-port:

  dxmt: log GPU busy time, readback waits and draws every 64 frames
  dxmt: zero blit commands; zero-fill remapped BC textures physically
  d3d11: refill mip levels that a mipClampBC copy left empty
  dxmt: zero-fill the whole grown zero buffer
  d3d11: wait for the GPU instead of renaming staging past a budget
  dxmt: flush resource initializer uploads every 64 MB

The pin points at the fork until these commits are merged into the
upstream dxmt repository. The config catalog does not change: these
commits add DXMT options (d3d11.*) but no environment switch.

Rebuild from the pinned source: arm64ec-windows/d3d11.dll (DXMT PE meson
build), the i386 DXMT DLLs (build/wine-i386/build.sh) and
app/Madeira/libdxmt_combined.a (full build/dxmt-ios/build.sh).

Signed-off-by: spitefulowl <spitefulowll@gmail.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@spitefulowl
spitefulowl force-pushed the dxmt-correctness-memory branch from 25503fd to a38270b Compare October 4, 2026 10:48
@willfaust willfaust closed this Oct 4, 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.

2 participants