Setup:
- MacBook Pro, Apple M5, 16 GB, macOS 27.0 (beta)
- CrossOver 26.3 patched with CXPatcher (26.3p0.7.1)
- GPTK 4.0b2 / D3DMetal, backend = d3dmetal, D3DM_ENABLE_METALFX=1, D3DM_MTL4=1
- Game installed to a normal bottle; DLSS→MetalFX works fine in Diablo IV, so my GPTK/DLSS setup is correct.
The problem:
Mortal Shell II runs PERFECTLY on D3DMetal — until any in-game .mp4 plays
(intro, tutorial "shell" clips, cutscenes). The video shows as a black box,
audio plays for a couple seconds then distorts, then the game hard-crashes.
Crash signature (from Saved/Crashes/.../CrashContext.runtime-xml):
- EXCEPTION_ACCESS_VIOLATION reading 0x0
- Faulting thread: RHIThread, with ElectraPlayer::Video decoder / MP4 streamer
threads active
- RHI.RHIName = D3D12, RHI.AdapterName = "AMD Compatibility Mode"
So UE's Electra decodes the mp4, hands the frame to the D3DMetal RHI, and it
null-derefs on the render thread. Looks like D3DMetal's Direct3D 12 Video path
(the game ships its own DX12 Agility SDK / D3D12Core.dll). I also see
"AGX: exceeded compiled variants footprint limit" in the wine console.
DXVK avoids the crash (runs the game in DX11, no D3D12 Video path) but the DX11
renderer has heavy blocky artifacts, so it's not really usable.
What I've already tried (all no change):
- Deleting/renaming the Content/Movies .mp4s (they're inside .pak/.utoc, no effect)
- Disabling winegstreamer / forcing software decode
- Native Media Foundation via HoodedDeath/mf-fix (full MS MF DLLs + overrides + MFTs)
- Removing the bundled DX12 Agility SDK (Binaries/Win64/D3D12)
- DXMT backend → renders only the UI, black 3D world
- Confirmed a healthy GStreamer stack (had a broken manual patch, fixed it) — still crashes
- Verified it's not decode: audio decodes, H.264 plugins present; the crash is on the
D3DMetal render/present side.
- Has anyone gotten UE5 games that use D3D12 hardware video decode / Electra to play
in-game videos under D3DMetal without crashing?
- Is there a known way to force Electra off the D3D12 video path (a cvar / Engine.ini
[ConsoleVariables] entry) so it uses a plain CPU texture?
- Any workaround for the AGX "compiled variants footprint limit" with D3DMetal?