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).
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)
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 withintel-media-driverworks.Vulkan validation reports an invalid image view right before the crash:
vkCreateImageView(): pCreateInfo->format VK_FORMAT_G8_B8R8_2PLANE_420_UNORMis different fromVkImageformat )(VK_FORMAT_R8_UNORM). Formats MUST be IDENTICAL unlessVK_IMAGE_CREATE_MUTABLE_FORMAT_BITwas set on image creation.vkCreateImageView(): VkImageViewUsageCreateInfo.usage (TRANSFER_SRC|TRANSFER_DST|SAMPLED)must not include any bits that were not set inVkImageCreateInfo::usage (SAMPLED).Backtrace:
The decoded VA-API frame seems to be imported as a single-plane
R8_UNORMimage, which is then given to SDL as an NV12 texture. Mesa tolerates this, the NVIDIA driver crashes.Steam vs. Steam Link:
nvidia_drv_video.so, picks "VAAPI Vulkan hardware decoding" and crashes.streaming_clientcontains the same decoder paths, but inside the Steam Runtimenvidia_drv_video.sois not imported (it needslibgstcodecparsers-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.sofail to initialise (NVD_GPU=99orLIBVA_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:
libva-nvidia-driver0.0.18 (also tested with git master 4430507)