protonscr

Streaming client: "VAAPI Vulkan hardware decoding" crashes NVIDIA Vulkan driver (NV12 view on R8_UNORM image)

steamclosed NVIDIA driversStreaming
ValveSoftware/steam-for-linux#13804 · opened 2026-10-25 by scaronni · updated 2026-10-28 · 2 comments · github
Sscaronni 2026-10-25 github

The Remote Play streaming client (standalone **Steam Link **, and the same code in Steam's streaming_client) crashes as soon as video starts when it picks "VAAPI Vulkan hardware decoding" on an NVIDIA GPU with nvidia-vaapi-driver. Intel with intel-media-driver works.

Vulkan validation reports an invalid image view right before the crash:

vkCreateImageView(): pCreateInfo->format VK_FORMAT_G8_B8R8_2PLANE_420_UNORM is different from VkImage format )(VK_FORMAT_R8_UNORM). Formats MUST be IDENTICAL unless VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT was set on image creation.

vkCreateImageView(): VkImageViewUsageCreateInfo.usage (TRANSFER_SRC|TRANSFER_DST|SAMPLED) must not include any bits that were not set in VkImageCreateInfo::usage (SAMPLED).

Backtrace:

  #0  libnvidia-glcore.so.615.78.08
  #1  libnvidia-glcore.so.615.78.08
  #2  VULKAN_AllocateImage (libSDL3.so.0)
  #3  VULKAN_CreateTexture
  #4  SDL_CreateTextureWithProperties
  #5  steamlink

The decoded VA-API frame seems to be imported as a single-plane R8_UNORM image, which is then given to SDL as an NV12 texture. Mesa tolerates this, the NVIDIA driver crashes.

Steam vs. Steam Link:

  • Standalone Steam Link uses the system libva, loads nvidia_drv_video.so, picks "VAAPI Vulkan hardware decoding" and crashes.
  • Steam's streaming_client contains the same decoder paths, but inside the Steam Runtime nvidia_drv_video.so is not imported (it needs libgstcodecparsers-1.0, which the runtime doesn't ship). It never tries VA-API on NVIDIA, uses "Vulkan hardware decoding" and works. Any setup where the NVIDIA VA-API driver is available to the client will hit the crash.

Workaround: making nvidia_drv_video.so fail to initialise (NVD_GPU=99 or LIBVA_DRIVER_NAME=none) makes Steam Link fall back to "Vulkan hardware decoding" (ffmpeg Vulkan Video, HEVC) on the same GPU, which streams fine.

Reproduced while spectating a Steam Frame stream from the PC.

System:

  • Fedora 45, Wayland (GNOME)
  • NVIDIA GeForce RTX 4070 SUPER, driver 615.78.08
  • libva 2.24.1, libva-nvidia-driver 0.0.18 (also tested with git master 4430507)
  • SDL3 3.4.18
  • Steam Link 1.4.2.321, Steam client 1792711043
Sscaronni 2026-10-25 github

Same issue with the latest Steam Link 1.4.3.323.

Sslouken 2026-10-28 github

Steam Link requires the latest main SDL and will crash the way you describe with SDL 3.4.x

Launch options