Linux Gaming Repair Center

A Direct3D 12 game fails in VKD3D-Proton

Check the bundled translation layer and selected GPU features, then separate initialization from device loss under load.

On this page
  1. Confirm the Direct3D 12 path
  2. Compare device features, not only API versions
  3. Startup failure and device loss need different evidence
  4. Gather evidence
  5. A controlled test
  6. Related diagnostics
  7. Sources & limitations

Confirm the Direct3D 12 path

VKD3D-Proton implements Direct3D 12 translation for Proton. It is distinct from Wine’s upstream vkd3d project and from DXVK’s older Direct3D paths. Read the component identification in the selected Proton log instead of assuming that the distribution’s vkd3d package is being used. A launcher may use Direct3D 11 while the game uses Direct3D 12, so the launcher’s successful window is incomplete evidence. A Direct3D 11 fallback is useful only when the game developer actually supports it; do not invent an undocumented -dx11 argument.

Compare device features, not only API versions

The reviewed upstream VKD3D-Proton requirements include Vulkan 1.3, substantial descriptor-indexing support and additional features and extensions. The selected Proton build can bundle a different revision. Match its rejection message to the device and applicable source revision. A high Vulkan API number does not guarantee every feature, extension or Direct3D feature level required by the game. Missing ray-tracing support can be a different question from basic device creation. Forcing a reported feature level cannot make unavailable hardware behavior appear.

Startup failure and device loss need different evidence

If device creation fails immediately, investigate the selected ICD, features and runtime libraries. If the game renders first and later returns VK_ERROR_DEVICE_LOST, inspect kernel recovery, memory pressure and the workload at that timestamp. Verbose trace output can perturb timing and grow quickly; start with info-level output for one short attempt. Do not enable unsafe VKD3D_CONFIG speed hacks while collecting a baseline. Keep the same scene and tool version so a shader or pipeline error can be compared without changing several variables together.

Gather evidence before changing the system

Run one command at a time in the relevant host or game environment. Read its requirements and interpretation first. The website displays commands and never runs them.

Temporary diagnostic environment

VKD3D_DEBUG=info PROTON_LOG=1 %command%

Requirements: Steam Proton with a Direct3D 12 game; these are Steam launch options.

Identify the VKD3D-Proton build, selected device and first failing operation. Stop after a short attempt and remove both options.

Read-only observation

vulkaninfo

Requirements: Vulkan tools; long output may contain system identifiers and should be reviewed before sharing.

The full report exposes device features and extensions. Compare the exact missing name with the correct device; the summary alone omits much of this evidence.

Read-only observation

journalctl -k -b --no-pager

Requirements: systemd kernel journal access.

For later device loss, look for a reset or transport fault near the game timestamp. No final journal error is inconclusive after a hard-lock.

A controlled test with a way back

If the developer exposes a supported Direct3D 11 mode, compare that mode with Direct3D 12 using the same scene and settings. Otherwise collect the precise feature or device-creation failure before trying another supported Proton build.

Rollback: Restore the game’s original API selection and launch options. Keep a prefix backup before any later compatibility-tool switch because selecting the old tool does not revert prefix changes.

What this test cannot establish: A Direct3D 11 comparison changes the rendering workload and feature use. PROTON_USE_WINED3D does not substitute for the Direct3D 12 path.

Sources and scope

This editorial review uses primary project and distribution references. It does not establish that a fix has been reproduced on your hardware. Installed versions, the game runtime and the selected graphics API can change the result.