Skip to content

D3DMetal render worker aborts in D3DMTexture::GetView (Metal texture view validation) on D3D11 game launch #7876

Description

@willie

Describe the issue

With DirectX Driver set to D3DMetal, QEMURenderServer aborts about 20 seconds into launching a Direct3D 11 game. Metal rejects a texture view that D3DMetal constructs, and Metal's validation calls abort().

The game then exits and Civilization V falls back to its DirectX 9 executable, so from inside the guest the failure looks like "the game won't start in DX11".

Configuration

  • UTM 5.0.5 (124) Beta
  • macOS 27.0 (26A428), Mac16,11 (M4 Pro, 64 GB), SIP enabled
  • Display: virtio-ramfb-gl (GPU Supported)
  • Renderer Backend: ANGLE (Metal); Vulkan Driver: MoltenVK; DirectX Driver: D3DMetal
  • Guest: Windows 11 Home ARM64 build 26200, UTM Guest Tools 0.1.273
  • Guest display driver: viogpu3d / neptune_umd.dll 100.6.101.58000. dxdiag reports Direct3D Acceleration: Enabled, feature levels 12_1–9_x, no problems found.

Steps to reproduce

  1. Windows 11 ARM64 guest with the experimental graphics driver from Guest Tools.
  2. Set DirectX Driver to D3DMetal, restart the VM.
  3. Install Sid Meier's Civilization V (Steam app 8930).
  4. Run CivilizationV_DX11.exe.

Result

The process runs and responds for ~20 s while shaders compile, then QEMURenderServer aborts:

Exception Type:  EXC_CRASH (SIGABRT)
Triggered by Thread: 7, Dispatch queue: Async Queue
Code Type: X86-64 (Translated)

4  libsystem_c.dylib   __assert_rtn + 314
6  Metal               MTLReportFailure + 532
7  Metal               _MTLMessageContextEndNewNSErrorOrAbort(...) + 1371
8  Metal               _mtlValidateArgumentsForTextureViewOnDevice + 595
9  IOGPU               -[IOGPUMetalTexture initWithTextureInternal:pixelFormat:textureType:levels:slices:swizzle:compressedView:] + 168
13 AGXMetalG16X        -[AGXTexture newTextureViewWithPixelFormat:textureType:levels:slices:swizzle:] + 99
14 D3DMetal            D3DMTexture::GetView(D3DMTextureViewDesc&, DXGI_FORMAT) + 572

So GetView requests a pixel format / texture type combination that Metal's argument validation rejects for a texture view, and Metal aborts the process rather than returning an error.

Note on architecture

The crashing worker is X86-64 (Translated) and loads Frameworks/D3DMetal.framework (com.elppa.D3DMetal 3.0) under Rosetta, while Frameworks/d3dmetal-native.framework is also loaded in the same process. If the native build is meant to be selected on Apple Silicon, it is not being used here.

With DXMT instead

The same game crashes QEMURenderServer a different way — at process start, in sandbox setup ("Process is not in an inherited sandbox"), matching #7716. So neither DirectX backend gets this title rendering.

Full crash report attached.

QEMURenderServer-2026-09-17-133040.txt

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions