CachyOS currently ships a mismatched 32-bit VAAPI stack: lib32-mesa exports VAAPI 1.23, but lib32-libva is still 2.22/VAAPI 1.22

On my CachyOS system, Steam Remote Play hardware encoding was failing because the installed 32-bit VAAPI stack appears mismatched.

Installed packages before local fix:

libva 2.23.0-1.1
lib32-libva 2.22.0-1
mesa 2:26.0.5-4
lib32-mesa 2:26.0.5-2

The 32-bit Radeon VAAPI driver exported VAAPI 1.23:

nm -D /usr/lib32/dri/radeonsi_drv_video.so | grep __vaDriverInit
000d9460 T __vaDriverInit_1_23@@libgallium-26.0.5-arch2.2.so

But Steam’s 32-bit VAAPI path saw libva 1.22 and failed to initialize the driver:

libva: VA-API version 1.22.0
Trying to open /usr/lib32/dri/radeonsi_drv_video.so
/usr/lib32/dri/radeonsi_drv_video.so has no function __vaDriverInit_1_0
Failed to initialise VAAPI connection: -1
CGameStreamVideoStageVAAPI: Failed to create device context

Steam then fell back to CPU encoding:

Game Vulkan NV12 + libx264 main (4 threads)

I locally rebuilt/installed lib32-libva 2.23.0-1 from the Arch PKGBUILD, and after restarting Steam, Remote Play hardware encoding started working:

Game Vulkan NV12 + VAAPI HEVC

So it looks like the repos currently provide a lib32-mesa driver built for VAAPI 1.23, while lib32-libva is still at 2.22/VAAPI 1.22.

The thing is that the lib32-libva package is not from Cachy but from the Arch [multilib] repo.
Upstream Arch [extra] libva is also on ver ~.23.0 so I might guess the mismatch occurs there as well.
I do not see the lib32-libva (ver ~.22.0) as being marked out of date though this would seem to indicate it should be.

I flagged `lib32-libva` as out of date on the Arch package page. Thanks for pointing me in the right direction.

I can confirm I’m running into this exact issue on CachyOS Handheld Edition, and it matches the mismatch described here perfectly.

On a fresh install, my system currently shows:

  • libva 2.23.0

  • lib32-libva 2.22.0

  • lib32-mesa exporting __vaDriverInit_1_23

So the 32-bit VAAPI stack is clearly out of sync. Steam (which depends on the 32-bit side for Remote Play) attempts to initialize VAAPI, fails to load the correct entrypoint, and then falls back to CPU encoding (libx264). In the logs this shows up as:

  • VAAPI encoder creation attempts (AV1/HEVC)

  • VAAPI initialization failure

  • fallback to Desktop PipeWire NV12 + libx264

That explains why AV1/HEVC can appear selectable but don’t actually work. I’ve confirmed via vainfo that AV1 encode is supported on the hardware, so this is strictly a userspace mismatch—not a GPU limitation.

I don’t want to risk destabilizing an otherwise working system, so I’m avoiding rebuilding or forcing packages manually. My plan is to wait for CachyOS to publish lib32-libva 2.23.x, which should properly align the stack and restore VAAPI functionality in Steam.

For anyone else running into this: it’s worth temporarily disabling AV1/HEVC in Steam Remote Play. That prevents repeated failed VAAPI attempts and avoids unnecessary fallback churn, leaving you with stable x264 streaming for now. Once the packages are aligned, those options can be safely re-enabled.

Not sure if it’s relevant but my remote play doesn’t even work turning hardware acceleration off or hevc.

In all my attempts it connected a few times but froze and now it simply displays black screen. The logs display that “desktop” encoder.

We’re in june now and still no fix? :confused:

Arch has been sitting on it for however long for whatever reason..

( at least 5 months by the bots counting )