SteamOS linux shipping build crashes on SteamDeck native
What Type of Bug are you experiencing?
Rendering (Graphics / Niagara)
Steps to Reproduce
Build project for linux shipping or development 5.8 , install on SteamDeck. Project crashes with missing implementation for store_deref aco_select_nir_intrinsics.cpp:5107
I have exact same problem. No-code-change update from 5.7, which worked fine to 5.8; automation build, both development and shipping games produce the same error. The error happens right at the startup, at that time, there is only basic SlateUI showing the loading screen. The loading screen does not get drawn at all.
I tried looking for the exact line in CreateComputePipeline; which for me is the symbol FVulkanPipelineStateCacheManager::CreateComputePipeline(FComputePipelineStateInitializer const&) + 1318, but that simply is the call to VulkanRHI::vkCreateComputePipelines, so no further details.
Yeah, if this is what I think, the shader compiler would generate illegal SPIRV. I think this is what you’re hitting. We didn’t notice until late, some drivers handle it / others don’t. RADV doesn’t (it’s not their bug though!). It only shows up in certain shaders which you don’t usually hit using the editor. If you run a package build however, precaching will eventually try to create those pipelines and crash.
Disabling precaching might save you, but result in more hitches on the first run obviously.
…or…
The fix to the shader compiler has been submitted in UE6/Main. If you take the Engine/Binaries/ThirdParty/ShaderConductor folder from UE6/Main and copy it into your 5.8.1 build it should fix the issue (you need to recreate your package and make sure those shaders get rebuilt). Those binaries are pulled when you run the setup script if I’m not mistaken (not just through syncing). If anyone tries this, let me know how it goes!
…or…
Changing SHADER_PRINT_USE_GLOBAL_RESOURCE to always be 1 in ShaderPrint.ush might also solve the issue. You can do that by adding “|| VULKAN_PROFILE” to the #if above.