Environment
- macOS 27.0.1 (26A434), Apple M4 Pro
- Apple Game Porting Toolkit 4.0b2 (D3DMetal.framework) via CrossOver 27
- D3D12 game, borderless fullscreen window (2540x1650)
Symptom
When the game window becomes occluded — Mission Control, a system OSD
(volume/brightness), or another window being brought to the front — the game
never renders another frame. It does not crash: GPU utilization drops to 0%,
the process stays alive with near-zero CPU, and it never recovers. Killing and
restarting the game is the only way out.
D3DMetal log at the moment it happens:
[D3DMetal:FATAL:%llX][%s:%d] Failed to get drawable for HWND. Run with D3DM_NO_WINDOW=1 env.
Question
- When CAMetalLayer/nextDrawable has no drawable (window not visible), is there
a supported way for D3DMetal to skip frames instead of blocking forever? - Is there an environment variable or configuration that makes D3DMetal treat
"no drawable" as a recoverable condition? - Does D3DM_NO_WINDOW=1 apply here, or is it only for headless/offscreen use?
I understand apps should handle a nil drawable and continue, but this path is
inside D3DMetal. Any guidance would help.