protonscr

The Finals (D3D12): shader with 16-bit ops fails on GTX 1070 (Pascal), crash in PSOPrecompilePool

vkd3dopen
HansKristian-Work/vkd3d-proton#3342 · opened 2026-10-01 by antoinecuzol051-blip · updated 2026-10-04 · 1 comments · github
Aantoinecuzol051-blip 2026-10-01 github

Software information

The Finals (Steam appid 2073850, Unreal Engine, D3D12), lowest graphics settings, upscaling disabled.

During the in-game shader/PSO loading the game hangs at 92-99%, then crashes with:
"Fatal error! Crash in runnable thread PSOPrecompilePool #6"

Reproducible on every run. Same result with GE-Proton10-34, proton-cachyos (latest) and Proton Experimental.

Every run, the same two compute shaders fail:

warn:vkd3d-proton:d3d12_device_validate_shader_meta: Attempting to use 16-bit operations in shader 5bb2de31aab01344, but this is not supported.
warn:vkd3d-proton:d3d12_pipeline_state_init_compute: Failed to create Vulkan compute pipeline, hr 0x80070057.
warn:vkd3d-proton:d3d12_device_validate_shader_meta: Attempting to use 16-bit operations in shader 583e3be83ea52e24, but this is not supported.
warn:vkd3d-proton:d3d12_pipeline_state_init_compute: Failed to create Vulkan compute pipeline, hr 0x80070057.

In an earlier, more verbose run, other threads then timed out waiting on the ntdll loader_section critical section, blocked by the thread that hit the failure (game frozen, audio still playing).

Is there a way for vkd3d-proton to lower these shaders to 32-bit when the device lacks native 16-bit support, instead of failing pipeline creation?

System information

  • GPU: NVIDIA GeForce GTX 1070 (Pascal, 8 GB)
  • Driver: 580.178.04 (proprietary)
  • Wine version: as bundled with GE-Proton10-34
  • VKD3D-Proton version: <as bundled with GE-Proton10-34, or fill in>

Log files

steam-2073850.log attached

steam-2073850.log.gz

SShadid516 2026-10-04 github

Confirming the identical failure on a GTX 1060 (Pascal) — same two shaders, same hr, same game build family.

Environment

  • GPU: NVIDIA GeForce GTX 1060 6GB (GP106), proprietary driver 580.178.04 — vulkaninfo: shaderFloat16 = false
  • THE FINALS, appid 2073850, buildid 25576501 (2026-10-04 update). Exact build identity from the game's own crash context (Saved/Crashes/.../CrashContext.runtime-xml): BuildVersion: discovery_11.12.x_ue57-CL-1408560, EngineVersion: 5.7.4-1408560+discovery_11.12.x_ue57 — the same discovery_11.12.x family blamed in #3344.
  • Proton Experimental 11.0-20261001 and Proton Hotfix hotfix-20261001 — both affected (SteamLinuxRuntime 4)
  • Debian 13, kernel 6.12.105, KDE Plasma 6 Wayland

Symptom
"PRELOADING SHADERS" sticks at 91-99%. The vkd3d pipeline cache stops growing at 4,579,464 bytes
(a complete set is ~4,577,672). The main thread either dead-stops or spins one core forever; the picture
is pixel-identical over 4 s. On relaunch the game reconnects to the match, renders one frame, then freezes
again — consistently, every launch.

Identical log lines, identical shader hashes:

warn:vkd3d-proton:d3d12_device_validate_shader_meta: Attempting to use 16-bit operations in shader 5bb2de31aab01344, but this is not supported.
warn:vkd3d-proton:d3d12_pipeline_state_init_compute: Failed to create Vulkan compute pipeline, hr 0x80070057.
warn:vkd3d-proton:d3d12_device_validate_shader_meta: Attempting to use 16-bit operations in shader 583e3be83ea52e24, but this is not supported.
warn:vkd3d-proton:d3d12_pipeline_state_init_compute: Failed to create Vulkan compute pipeline, hr 0x80070057.
info:vkd3d-proton:vkd3d_pipeline_library_disk_thread_main: ... It seems like application has stopped creating new PSOs for the time being.

Extra data points that may help

  • 104x warn:vkd3d-proton:d3d12_resource_SetName: FSR3 resource detected. Forcing retained GPU reference to work around broken integration code in either game or UE5. immediately around the failure; the build now ships Engine/Plugins/Runtime/AMD and is D3D12-only (no D3D11 RHI directory left).
  • Steam "Verify integrity of game files" found and repaired one corrupt chunk in Discovery/Content/Paks/pakchunk10_s6-WindowsClient.ucas; the hang persists after repair.
  • Not fixable by configuration: FSR off (ResolutionScalingMethod=NoAA), frame generation off, deleting the vkd3d + Steam shader caches, and both Proton builds all reproduce it. Forcing the Intel iGPU (which does expose shaderFloat16) gets further but then crashes, which is consistent with the capability being the blocker.
  • vkd3d_physical_device_info_apply_workarounds: Disabling present_id2, wait2 and timing on pre-595 NV drivers. — 580 is the final branch for Pascal, so 595+ fixes never reach this GPU.
  • Side note: on this setup the game's own crash reporter then fails with a D3D11RHI assert (Runtime/Windows/D3D11RHI/Private/D3D11Viewport.cpp:479, E_FAIL, 8 s into its own startup), so the crash dialog comes up as a black screen.

Also reported in #3344 (Xid 31 variant on GTX 1080).

Would lowering these two shaders to 32-bit when shaderFloat16 is absent be viable, given the game (rather than
the user) is the one choosing them? If not, the actionable fix has to be on the game side — making the pre-load
skip a pipeline it cannot create instead of hanging forever.

Proton versions

Error codes