There is no path forward to support Crimson Desert on Polaris due to it relying heavily on wave32.
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
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.
ge-proton11-5x1 2026-09proton 11.0-2x1 2026-09MESA_VK_DEVICE_SELECT=1002:694ex1 2026-09PROTON_LOG=1x1 2026-09PROTON_VKD3D_HEAP=1x1 2026-09RADV_EXPERIMENTAL=heapx1 2026-09VKD3D_CONFIG='descriptor_heap'x1 2026-09VKD3D_CONFIG=descriptor_heapx1 2026-09MESA_VK_DEVICE_SELECT=1002:694e DRI_PRIME=1 PROTON_LOG=1 %command%x1 2026-09RADV_EXPERIMENTAL=heap PROTON_VKD3D_HEAP=1 MESA_VK_DEVICE_SELECT=1002:694e DRI_PRIME=1 %command%x1 2026-09RADV_EXPERIMENTAL=heap VKD3D_CONFIG=descriptor_heap MESA_VK_DEVICE_SELECT=1002:694e DRI_PRIME=1 PROTON_LOG=1 %command%x1 2026-09
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:
Confirming identical on another Polaris/GCN4 - Vega M GL (Polaris 22 XL). Updated after heap test:
System:
01:00.0 [1002:694e]rev c0 + Intel HD Graphics 6308086:591b(hybrid)1:26.1.6-1, vulkan-radeon1:26.1.6-1, libdrm2.4.134-1,RADV VEGAM DriverVersion 99.10.2(AGS),VK 1.4.357, linux-firmware20260622-17.2.2-1-cachyos(nowexperimental-11.0-20260826VKD3D_CONFIG='descriptor_heap'+RADV_EXPERIMENTAL=heaptested) and7.1.6-zen1-1-zenvkd3d-proton:experimental-11.0-20260826build7ad4937e28ea1a0appVersion3.1.0(alsocachyos-10.0-20260324-slr,11.0-100,11.0-2,GE-Proton11-5)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) andRADV_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-22safterchdir .../Crimson Desert/bin64, right after[데이터] (0/12)-(1/12)(sometimes(2/12)):Experimental/11.0-2/GE-Protonwithout 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_f0c2822bcachyos-10.0with and without heap: progressed one pipeline further toGBufferCharacterRenderPassBindless/SkinnedMeshStandard_mt8/SkinnedMeshCable ec07ffaf_f2d601c7_0_dad59307_2_46ff0c3a_499455d5beforeSEGV(STEAM Game stopped [3321460],systemd-coredump 6821 SEGVor no coredump,CrimsonDesert.exe+0x3745C51),Proton 11.0-2also showsagsDriverExtensionsDX12_CreateDevice has been failed...- same family. Hash is deterministic.Ruled out:
Verify integrityx2, deletedsteamapps/shadercache/3321460+~/.cache/mesa_shader_cache(68Mwiped ->3.5Mrebuilt, stillNo such file or directoryforshadercache/3321460after relaunch, nofozrecreated) +shader_cache_temp_dir_d3d12_64andbin64/vkd3d-proton.cacheequivalent - same661fd47f/ec07ffafregenerated, so not stale cache. GamePipelineNameMaterialNamefromLauncher_*.logindicates Pearl Abyss engine PSO library, not just Mesa.ntsyncnow working (/dev/ntsync 10,284,steam-3321460.log: ntsync: up and running.on7.2.2-cachyosaftermodprobe ntsync) - crash unchanged.DRM version is 1.6.0 but this driver is only compatible with 3.x.x.is Inteli915probe noise on this hybrid (vulkaninfo GPU1 discrete VEGAM/GPU0 integrated Intelboth enumerated,RADVAMDpathamdgpuPCIE GART/UVD/VCE initializedok).Lowpresetuser_engine_option_save.xml0x000401c5c4170efcsame.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 vulkaninfonow exposesVK_EXT_descriptor_heap(descriptorHeap = true,maxDescriptorHeapEmbeddedSamplers = 2048,VkPhysicalDeviceDescriptorHeapPropertiesEXT).RADV_EXPERIMENTAL=heap + VKD3D_CONFIG=descriptor_heaponexperimental-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!replaceserr:vkd3d-proton:vkd3d_bindless_state_init: Insufficient descriptor indexing support. x8.TerrainHeightField 661fd47fonExperimental(even with heap) andGBufferCharacter ec07ffafoncachyos-10.0with heap (vkd3dheapec07ffaf_f2d6...) stillFailed to load cache blob->SEGV. Heap alone not fixing thisPSOonPolaris26.1.6.Logs:
crimson-desert-3321460-Polaris-bug-HEAP-20260831-2310.zip