protonscr

Train Sim World® 7

protonopen appid 4678800Game compatibility - Unofficial
ValveSoftware/Proton#10321 · opened 2026-10-28 by londospark · updated 2026-10-28 · 0 comments · github · game page · search this game
Llondospark 2026-10-28 github

vrclient_translate_texture_d3d12() has no mapping for DXGI_FORMAT_B8G8R8A8_UNORM (0x57). A D3D12 app that submits a BGRA8 UNORM eye texture through IVRCompositor::Submit gets the untranslated D3D12 texture passed on to the native client, which faults, and the process dies on an assertion in vrclient_main.c.

This is the UNORM sibling of #8338 (0x5a, B8G8R8A8_TYPELESS), which ab78280b fixed by mapping only the TYPELESS format.

Proton version: Proton Experimental experimental-11.0-20261014
Game: Train Sim World 7 (4678800), with UEVR nightly 01143 injected, -dx12 (vkd3d-proton), OpenVR runtime, SteamVR build 25998080
System: RTX 5080, NVIDIA 615.78.08 (open kernel module), kernel 7.2.8, Arch

Symptoms

The first VR frame crashes with a Wine assertion dialog:

Assertion failed!
Program: S:\steamapps\common\Train Sim World 7\WindowsNoEditor\TS2Prototype\Binaries\Win64\TrainSimWorld.exe
File: ../src-vrclient/vrclient_main.c
Line: 747
Expression: "!status"

UEVR logs that its eye render target is width: 2644, height: 2644, format: 87 (DXGI_FORMAT_B8G8R8A8_UNORM).

Proton log (PROTON_LOG=1), around the crash

err:vrclient:vrclient_translate_texture_d3d12 Unsupported DXGI format 0x57.
trace:seh:handle_syscall_fault code=c0000005 flags=0 addr=0x7f9d02da2b8f ...
warn:seh:handle_syscall_fault backtrace: --- Exception 0xc0000005 at 0x7f9d02da2b8f: .../lib/wine/x86_64-unix/winevulkan.so ...
err:vulkan:vkCreateCommandPool Exception 0xc0000005 in Unix call.
warn:seh:handle_syscall_fault backtrace: --- Exception 0xc0000005 at 0x7f9a6a7f9fc4: .../lib/wine/x86_64-unix/vrclient_x64.so + 0x3dfc4.
err:msvcrt:_wassert (L"!status",L"../src-vrclient/vrclient_main.c",747)

Cause

The switch in vrclient_translate_texture_d3d12() only knows R8G8B8A8_UNORM_SRGB, R8G8B8A8_UNORM and B8G8R8A8_TYPELESS. Anything else hits default:, which logs the error and returns *texture unchanged, so a TextureType_DirectX12 handle reaches the native vrclient, and that crashes.

B8G8R8A8_UNORM and B8G8R8A8_UNORM_SRGB map directly to VK_FORMAT_B8G8R8A8_UNORM and VK_FORMAT_B8G8R8A8_SRGB, like the R8G8B8A8 pair. I'll open a PR that adds those two cases.

Workaround

Submitting through OpenXR instead (UEVR's OpenXR runtime) avoids this path, because wineopenxr already handles the B8G8R8A8 formats. D3D11 (-dx11, DXVK) through OpenVR is also unaffected.

Proton versions

Launch options

Error codes