protonscr

Crimson Desert crashes on splash screen on Polaris GPUs

vkd3dopen
HansKristian-Work/vkd3d-proton#3260 · opened 2026-09-01 by phly95 · updated 2026-09-05 · 3 comments · github
Pphly95 2026-09-01 github

I posted a copy of this issue to the mesa project. They replied: "The game requires wave32, vkd3d-proton would need to emulate it."

https://gitlab.freedesktop.org/mesa/mesa/-/work_items?sort=created_date&state=opened&search=crimson+desert&first_page_size=20&show=eyJpaWQiOiIxNjIyOCIsImZ1bGxfcGF0aCI6Im1lc2EvbWVzYSIsImlkIjoxNTYxMjZ9

Additionally, there is apparently a project that supposedly fixes an earlier version of Crimson Desert meant for Windows: https://github.com/Vidith007/RX-580-CRIMSON-DESERT-FIX which may provide some hints at what may be done to fix it, though I tried it on the Vega M GL with the current version of Crimson Desert and it does not seem to work.

Anyways, here is the post in question:

Replying to https://github.com/ValveSoftware/Proton/issues/9595#issuecomment-5456511029

Confirming identical on another Polaris/GCN4 - Vega M GL (Polaris 22 XL). Updated after heap test:

System:

  • GPU: AMD Radeon RX Vega M GL Graphics (Polaris 22 XL) 01:00.0 [1002:694e] rev c0 + Intel HD Graphics 630 8086:591b (hybrid)
  • Driver: Mesa 1:26.1.6-1, vulkan-radeon 1:26.1.6-1, libdrm 2.4.134-1, RADV VEGAM DriverVersion 99.10.2 (AGS), VK 1.4.357, linux-firmware 20260622-1
  • Kernels: 7.2.2-1-cachyos (now experimental-11.0-20260826 VKD3D_CONFIG='descriptor_heap' + RADV_EXPERIMENTAL=heap tested) and 7.1.6-zen1-1-zen
  • vkd3d-proton: experimental-11.0-20260826 build 7ad4937e28ea1a0 appVersion 3.1.0 (also cachyos-10.0-20260324-slr, 11.0-100, 11.0-2, GE-Proton11-5)
  • Launch: MESA_VK_DEVICE_SELECT=1002:694e DRI_PRIME=1 PROTON_LOG=1 %command%, heap tests: RADV_EXPERIMENTAL=heap VKD3D_CONFIG=descriptor_heap MESA_VK_DEVICE_SELECT=1002:694e DRI_PRIME=1 PROTON_LOG=1 %command% (Experimental) and RADV_EXPERIMENTAL=heap PROTON_VKD3D_HEAP=1 MESA_VK_DEVICE_SELECT=1002:694e DRI_PRIME=1 %command% (cachyos wrapper)

Symptom - identical 661fd47f, with second PSO also reproduced:
~15-22s after chdir .../Crimson Desert/bin64, right after [데이터] (0/12)-(1/12) (sometimes (2/12)):

  • Experimental/11.0-2/GE-Proton without heap and also with heap enabled: ERROR RenderPassFilename: RenderPass/RenderPass.xml RenderPassName: TerrainHeightField PipelineName: GenerateIndirectCommand Failed to load cache blob 661fd47f_18909cdc_5_95fcea9e_3_deba1dcd_f0c2822b
  • cachyos-10.0 with and without heap: progressed one pipeline further to GBufferCharacterRenderPassBindless/SkinnedMeshStandard_mt8/SkinnedMeshCable ec07ffaf_f2d601c7_0_dad59307_2_46ff0c3a_499455d5 before SEGV (STEAM Game stopped [3321460], systemd-coredump 6821 SEGV or no coredump, CrimsonDesert.exe+0x3745C51), Proton 11.0-2 also shows agsDriverExtensionsDX12_CreateDevice has been failed... - same family. Hash is deterministic.

Ruled out:

  • Verify integrity x2, deleted steamapps/shadercache/3321460 + ~/.cache/mesa_shader_cache (68M wiped -> 3.5M rebuilt, still No such file or directory for shadercache/3321460 after relaunch, no foz recreated) + shader_cache_temp_dir_d3d12_64 and bin64/vkd3d-proton.cache equivalent - same 661fd47f/ec07ffaf regenerated, so not stale cache. Game PipelineName MaterialName from Launcher_*.log indicates Pearl Abyss engine PSO library, not just Mesa.
  • ntsync now working (/dev/ntsync 10,284, steam-3321460.log: ntsync: up and running. on 7.2.2-cachyos after modprobe ntsync) - crash unchanged.
  • DRM version is 1.6.0 but this driver is only compatible with 3.x.x. is Intel i915 probe noise on this hybrid (vulkaninfo GPU1 discrete VEGAM/GPU0 integrated Intel both enumerated, RADV AMD path amdgpu PCIE GART/UVD/VCE initialized ok).
  • Low preset user_engine_option_save.xml 0x000401c5c4170efc same.

VK_EXT_descriptor_heap - now tested:

  • RADV_EXPERIMENTAL=heap MESA_VK_DEVICE_SELECT=1002:694e VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.json vulkaninfo now exposes VK_EXT_descriptor_heap (descriptorHeap = true, maxDescriptorHeapEmbeddedSamplers = 2048, VkPhysicalDeviceDescriptorHeapPropertiesEXT).
  • With RADV_EXPERIMENTAL=heap + VKD3D_CONFIG=descriptor_heap on experimental-11.0-20260826: steam-3321460.log:2825 VKD3D_CONFIG='descriptor_heap' + vkd3d_bindless_state_init_heap: VK_EXT_descriptor_heap enabled (64 / 16 size, raw uav counter off). x3 + Device supports VK_EXT_mutable_descriptor_type / ultra-fast path / packed metadata / VK_EXT_descriptor_buffer! replaces err:vkd3d-proton:vkd3d_bindless_state_init: Insufficient descriptor indexing support. x8.
  • Result: Heap correctly activates on Polaris here, but TerrainHeightField 661fd47f on Experimental (even with heap) and GBufferCharacter ec07ffaf on cachyos-10.0 with heap (vkd3dheap ec07ffaf_f2d6...) still Failed to load cache blob -> SEGV. Heap alone not fixing this PSO on Polaris 26.1.6.

Logs:
crimson-desert-3321460-Polaris-bug-HEAP-20260831-2310.zip

HHansKristian-Work maintainer 2026-09-02 github

There is no path forward to support Crimson Desert on Polaris due to it relying heavily on wave32.

Pphly95 2026-09-02 github

There is no path forward to support Crimson Desert on Polaris due to it relying heavily on wave32.

It seems someone managed to get it working somewhat. Would it be possible to do something hacky like this as an environment variable toggle, even if the method is likely to break with other games that rely on wave32?
https://github.com/Vidith007/RX-580-CRIMSON-DESERT-FIX

Pphly95 2026-09-05 github

There is no path forward to support Crimson Desert on Polaris due to it relying heavily on wave32.

I do have an update to give after I had an agent attempt more work on getting it to work on Linux. It seems to have isolated the real blocker to something called barycentrics. The Crimson Desert fix works on Windows because as the agent says: "So on AMD's Windows driver the answer is real: the driver exposes the barycentric feature, vkd3d reports 1, the engine's cache key matches, the 41-odd barycentric shaders compile, and there is simply no fault — nothing to fix, nothing documented. It only became a problem the moment the same question was asked of RADV, where the feature doesn't exist"

In other words, it seems like like once you bypass the other issues in the game, it exposes an actual feature gap between AMD Windows drivers vs RADV on Polaris GPUs. In case it helps, I have attached a file written by the agent that provides a detailed account based on what was attempted. The agent in question was in OpenCode using Muse Spark 1.3.

AGENT_WRITTEN-crimson-desert-vega-m-gl-findings.md