UE 5.8.2 Steam Deck Linux: Vulkan compute PSO precaching crashes RADV/ACO (@store_deref)

Summary

A native Linux game packaged with Unreal Engine 5.8.2 consistently crashes on Steam Deck during Vulkan compute PSO precaching.

The crash occurs inside the Steam Deck RADV/ACO shader compiler while Unreal is creating a compute pipeline.

The driver reports:

ACO ERROR:
Unimplemented intrinsic instr: @store_deref

Disabling PSO precaching on Linux with:

r.PSOPrecaching=0

prevents the crash.

With PSO precaching disabled, the same build successfully remained in the main menu and then ran several minutes of gameplay including combat, enemies and fire effects without reproducing the failure.

What Type of Bug are you experiencing?

Rendering (Graphics / Niagara)

Steps to Reproduce

  1. Package a UE 5.8.2 native Linux build using Vulkan / VULKAN_SM6 with the default PSO precaching enabled.

  2. Run the native Linux build on Steam Deck. This is not running through Proton.

  3. Allow the main menu to load or enter gameplay.

  4. Within seconds, the process aborts during asynchronous compute PSO creation.

  5. The crash reports SIGABRT in the Vulkan compute PSO path, including:
    FVulkanPipelineStateCacheManager::CreateComputePipeline
    FCompileComputePipelineStateTask::CompilePSOInternal
    FPSOPrecacheAsyncTask::DoTaskWork

  6. A direct native run with stdout enabled also reports:

    ACO ERROR:
    Unimplemented intrinsic instr: @store_deref

Workaround test:

Add the following to Config/Linux/LinuxEngine.ini:

[ConsoleVariables]
r.PSOPrecaching=0

Rebuild and run the same game on the same Steam Deck.

With this setting the crash no longer occurs.

Expected Result

The UE 5.8.2 native Linux Vulkan build should create and precache compute pipeline states on Steam Deck without causing RADV/ACO to abort. The main menu and gameplay should remain stable with normal PSO precaching enabled.

Observed Result

With normal PSO precaching enabled, the game repeatedly crashes shortly after the main menu loads or shortly after entering gameplay.

Six captured crashes produced the same call-stack signature.

The failure is:

SIGABRT: abort() called

Relevant Unreal frames:

FVulkanPipelineStateCacheManager::CreateComputePipeline
FVulkanPipelineStateCacheManager::GetOrCreateComputePipeline
FVulkanDynamicRHI::RHICreateComputePipelineState
FCompileComputePipelineStateTask::CompilePSOInternal
FPSOPrecacheAsyncTask::DoTaskWork

Direct native execution exposes this RADV/ACO compiler error:

ACO ERROR:
Unimplemented intrinsic instr: @store_deref

With r.PSOPrecaching=0 loaded from the Linux configuration before gameplay, the same build remains stable.

Affects Versions

5.8

Platform(s)

Linux

For crash reports, include your callstack

Fatal error:
SIGABRT: abort() called

Relevant engine frames:

FVulkanPipelineStateCacheManager::CreateComputePipeline
FVulkanPipelineStateCacheManager::GetOrCreateComputePipeline
FVulkanDynamicRHI::RHICreateComputePipelineState
FCompileComputePipelineStateTask::CompilePSOInternal
FPSOPrecacheAsyncTask::DoTaskWork

Driver/compiler:
RADV / libvulkan_radeon.so

ACO ERROR:
Unimplemented intrinsic instr: @store_deref

Additional Notes

Environment:

Unreal Engine 5.8.2
Steam Deck / SteamOS
Native Linux build, not Proton
Vulkan / VULKAN_SM6
AMD Custom GPU 0932 / RADV VANGOGH
Mesa reported by the runtime:
Mesa 26.0.0-devel (git-9cc9241790)

Confirmed workaround:

Config/Linux/LinuxEngine.ini

[ConsoleVariables]
r.PSOPrecaching=0

The runtime confirms that r.PSOPrecaching=0 is loaded.

With the workaround enabled:

  • Main menu remained stable for approximately 84 seconds.
  • The gameplay level loaded successfully.
  • Gameplay ran for approximately 3 minutes 37 seconds.
  • Combat, enemies and fire effects were exercised.
  • No SIGABRT occurred.
  • No ACO @store_deref error occurred.
  • No new crash report was generated.
  • The game was still running when testing ended.

The crash was also reproduced by launching the native Linux executable directly without Steam Fossilize in the fatal stack, so Fossilize does not appear to be required to trigger the issue.

Earlier development versions of this game ran on the same Steam Deck using older Unreal Engine versions. I have not performed a controlled cross-version minimal reproduction, so I cannot confirm exactly when the issue was introduced.

The original crash directories were removed during subsequent clean deployments while testing the workaround.

If useful, I can reproduce the crash again with PSO precaching enabled and provide fresh MoonBurn.log, Diagnostics.txt, CrashContext.runtime-xml, VKhashes.txt, stdout output, or other diagnostics requested by Epic. I can also perform additional reproduction or PSO/shader capture steps if you tell me what information would be most useful.

Root cause found, and it’s on the Engine side rather than the driver.

UE 5.8 emits invalid SPIR-V that violates
VUID-StandaloneSpirv-OpTypeImage-06924 - “Cannot store to OpTypeImage,
OpTypeSampler, OpTypeSampledImage, or OpTypeAccelerationStructureKHR
objects”. ACO has nothing valid to lower, so it aborts. Diagnosed by
Rhys Perry, a Mesa RADV developer, at

The offending pattern is Engine ShaderPrint code. A minimal repro
through DXC, independent of any project, is filed at

(godbolt: Compiler Explorer - add -Vd to inspect the
generated SPIR-V).

The repro maps one-to-one onto UE 5.8.2 engine shaders:
ShaderPrintCommon.ush:358 RWBuffer RWEntryBuffer as a struct member
ShaderPrint.ush:123 Buffers.RWEntryBuffer = ShaderPrint_RWEntryBuffer
ShaderPrintCommon.ush:405,493 SHADER_PRINT_INTERLOCKEDADD on that struct member
ShaderPrintCommon.ush:539-540 UNROLL loop around ShaderPrintValue_Internal

Removing the unroll, or using the global RWBuffer directly in the
InterlockedAdd instead of the struct member, avoids the invalid output -
so this looks fixable in Engine shader code without waiting on DXC.

Also affects desktop AMD, not just Steam Deck: RX 9060 (gfx1200, RDNA4)
and Navi 32 (RDNA3), Mesa 26.1.3 and 26.2.1, UE 5.8.1 and 5.8.2. Not
present in 5.7.4.

Note the earlier thread “SteamOS Unreal Engine 5.8” was marked fixed on
the assumption this was a driver issue. It isn’t.

Impact here: a commercially released Steam title is unlaunchable on AMD
under RADV. App ID 4374700, free keys available to Epic staff for repro.

UE-399183 has been ‘Closed’ as a duplicate of an existing known issue. Origin Issue: UE-380928

UE-380928 is ‘Closed’ as ‘Fixed’. The issue will be addressed in 5.9.