protonscr

Remote Play hardware decoding does not work with intel graphics / libva2 on Ubuntu 20.04

steamclosed
ValveSoftware/steam-for-linux#7121 · opened 2020-05-21 by blotch · updated 2021-03-02 · 18 comments · github
Bblotch 2020-05-21 github

Ubuntu 20.04, steam client May 15, 2020, on an intel i7-8559U. This issue occurs with the beta and production release of Steam.

When remote streaming any games from my Windows PC, Steam falls back on software decoding of the video stream using libavcodec instead of hardware acceleration, killing my performance. I have all the libva dependencies installed and hardware accelerated video playback works in VLC. I see the following in the console when streaming a game:
CVDPAUAccel: GL_NV_vdpau_interop not available on current context CVAAPIAccel: Couldn't load libva.so.1 libavcodec software decoding with 4 threads
I find it odd that steam is trying to load libva.so.1, I believe the 2019-11-14 update to steam added support for libva2, which is what is currently packaged in ubuntu.

I am a programmer by trade and I've spent the past week and a half trying to fix this issue on my own, thinking I just needed to add a symlink or install some libraries, but now I'm reaching out. Please tell me what I can provide to help resolve this issue.
vainfo.txt
steam_log.txt

Bblotch 2020-05-21 github

Wow, I actually got it working, finally.
I removed the steam package I installed from steam.com and installed steam from apt.
I installed i965-va-driver:i386 and removed a bunch of extra i386 packages I had installed previously to try to get things working.

Cheers!

Kkisak-valve maintainer 2020-05-21 github

Hello @blotch, glad to hear you resolved your issue. Closing.

CCybso 2020-06-07 github

Hello,

I have a similar problem. It seems not to be the same problem as reported by @blotch , but it seems also to be related with Ubuntu 20.04 (Kubuntu), Intel GPU and libva.

With i965-va-driver:i386 installed, I see the Remote Play start screen, and then it stops with message "The streaming client exited unexpectedly (2)". The console output has not meaningful information, and a "streaming_client.log" does not exist:

SteamNetworkingSockets connected state, transport in state 'ready'
Session state Connecting -> Handshake
Session state Handshake -> Authenticating
Got control packet k_EStreamControlServerHandshake
Session state Authenticating -> Negotiating
Got control packet k_EStreamControlAuthenticationResponse
Got control packet k_EStreamControlNegotiationInit
Session state Negotiating -> StreamStarting
Got control packet k_EStreamControlNegotiationSetConfig
Session state StreamStarting -> Streaming
Got control packet k_EStreamControlSetQoS
Got control packet k_EStreamControlSetTargetBitrate
Starting audio stream: frequency=48000, channels=2
Opened audio device: format=2, channels=2, frequency=48000
Initialized audio decoder: codec=3, sample rate=48000, channels=2
Got control packet k_EStreamControlStartAudioData
Got control packet k_EStreamControlSetSpectatorMode
Got control packet k_EStreamControlSetCaptureSize
Got control packet k_EStreamControlSetTitle
Got control packet k_EStreamControlSetIcon
Got control packet k_EStreamControlSetCursor
Got control packet k_EStreamControlSetActivity
Got control packet k_EStreamControlStartVideoData
Got control packet k_EStreamControlVideoEncoderInfo
CVDPAUAccel: GL_NV_vdpau_interop not available on current context
Flushing audio, 560 ms queued, 100 ms maximum, delivery delay = 0
ffmpeg verbose: Opened VA display via X11 display :0.
ffmpeg verbose: Initialised VAAPI connection: version 1.7
ffmpeg verbose: Unknown driver "Intel iHD driver for Intel(R) Gen Graphics - 20.1.1 ()", assuming standard behaviour.
VAAPI hardware decoding
Got control packet k_EStreamControlSetCursorImage
ffmpeg verbose: Reinit context to 560x624, pix_fmt: vaapi_vld
Video overflow (467.61ms queued), requesting keyframe synchronization
Marking frame 1 complete with status k_EStreamFrameResultDroppedLate
Marking frame 2 complete with status k_EStreamFrameResultDroppedLate
Marking frame 3 complete with status k_EStreamFrameResultDroppedLate
Marking frame 4 complete with status k_EStreamFrameResultDroppedLate
Marking frame 5 complete with status k_EStreamFrameResultDroppedLate
Marking frame 6 complete with status k_EStreamFrameResultDroppedLate
Marking frame 7 complete with status k_EStreamFrameResultDroppedLate
Marking frame 9 complete with status k_EStreamFrameResultDroppedLate
Marking frame 10 complete with status k_EStreamFrameResultDroppedLate
Marking frame 11 complete with status k_EStreamFrameResultDroppedLate
Marking frame 12 complete with status k_EStreamFrameResultDroppedLate
Marking frame 13 complete with status k_EStreamFrameResultDroppedLate
Marking frame 14 complete with status k_EStreamFrameResultDroppedLate
Marking frame 15 complete with status k_EStreamFrameResultDroppedLate
Marking frame 16 complete with status k_EStreamFrameResultDroppedLate
Marking frame 17 complete with status k_EStreamFrameResultDroppedLate
Marking frame 18 complete with status k_EStreamFrameResultDroppedLate
Marking frame 19 complete with status k_EStreamFrameResultDroppedLate
Video rect: 1920x1080 at 0,0
Texture rect: 560x618 at 0,0
Video size: 560x618, output size: 1920x1080, overlay size: 1920x1080
Video rect: 980x1080 at 470,0
Texture rect: 560x618 at 0,0
Video rect: 980x1080 at 470,0
Texture rect: 560x618 at 0,0

With i965-va-driver-shaders installed instead, I'm getting the same messages, followed by:

CVAAPIAccel: vaPutSurface() failed: unknown libva error
CVAAPIAccel: vaPutSurface() failed: unknown libva error
CVAAPIAccel: vaPutSurface() failed: unknown libva error
CVAAPIAccel: vaPutSurface() failed: unknown libva error

So although the "i965-va-driver" crash does not report a libva problem, it stops at the same position without any error message, which lets me assume that this problem is also related to libva.

I've tried the steam client from Ubuntu repository, the .deb from Steam, with Beta mode disabled and enabled.

When I disable Hardware Acceleration it works.

Kkisak-valve maintainer 2020-06-07 github

Hello @Cybso, blind guess, please check if you have i965-va-driver-shaders:i386 installed as well with apt policy i965-va-driver-shaders:i386.

CCybso 2020-06-07 github

@kisak-valve No, I haven't. But since @blotch wrote that he removed some i386 packages he installed before I've tried the same and removed ALL i386 packages that were installed on my system, including steam. After that I've reinstalled steam and its i386 dependencies, including i965-va-driver, and... it works.

So I've made a diff between the packages that were removed and those that were re-installed, and by re-installing them one after one I found that the problem occurs when intel-media-va-driver:i386
and libva-x11-2:i386 were installed. These packages are installed as a dependency of va-driver-all:i386.

LLightning-5 2020-06-11 github
CVDPAUAccel: GL_NV_vdpau_interop not available on current context
ffmpeg verbose: Opened VA display via X11 display :0.
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/i386-linux-gnu/dri/iris_drv_video.so
libva info: va_openDriver() returns -1
ffmpeg error: Failed to initialise VAAPI connection: -1 (unknown libva error).
CVAAPIAccel: av_hwdevice_ctx_create() failed
libavcodec software decoding with 4 threads
ffmpeg verbose: Reinit context to 640x400, pix_fmt: yuv420p
Marking frame 1 complete with status k_EStreamFrameResultDroppedLate

I am having the same problem. Tried installing i965-va-driver:i386, i965-va-driver-shaders:i386, intel-media-va-driver:i386 and steam from the webpage in various combinations. Didn't work. I gave up for now.
I am using kubuntu 20.04

Bblotch 2020-06-11 github
CVDPAUAccel: GL_NV_vdpau_interop not available on current context
ffmpeg verbose: Opened VA display via X11 display :0.
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/i386-linux-gnu/dri/iris_drv_video.so
libva info: va_openDriver() returns -1
ffmpeg error: Failed to initialise VAAPI connection: -1 (unknown libva error).
CVAAPIAccel: av_hwdevice_ctx_create() failed
libavcodec software decoding with 4 threads
ffmpeg verbose: Reinit context to 640x400, pix_fmt: yuv420p
Marking frame 1 complete with status k_EStreamFrameResultDroppedLate

I am having the same problem. Tried installing i965-va-driver:i386, i965-va-driver-shaders:i386, intel-media-va-driver:i386 and steam from the webpage in various combinations. Didn't work. I gave up for now.
I am using kubuntu 20.04

Got a Discord? Maybe I can help you troubleshoot or use TeamViewer.

LLightning-5 2020-06-12 github

That would be amazing :) P̶M̶ I've oppened a repo through which we can communicate since github does not support PM

CCybso 2020-06-12 github

Have you tried to remove i965-va-driver-shaders:i386, intel-media-va-driver:i386 and libva-x11-2:i386 as well? Maybe there are other package combination that make Steam fail to use hardware acceleration.

In my opinion it would make sense to reopen this ticket until the problematic combination of :i386 packages has been identified. After that, they could be added to the FAQ, or maybe even added to the .deb as a "conflict".

JJoePricey 2020-06-17 github

So I've made a diff between the packages that were removed and those that were re-installed, and by re-installing them one after one I found that the problem occurs when intel-media-va-driver:i386
and libva-x11-2:i386 were installed. These packages are installed as a dependency of va-driver-all:i386.

This did the trick for me,

sudo apt remove intel-media-va-driver:i386

and everything works.

My installation is an upgrade from 19.10 fwiw.

JJames-C-000 2020-06-19 github

Having the same problem on Void Linux now, but all I have installed is libva and libva-32bit.

Edit: fixed by symlinking libva.so.2 and libva-x11.so.2 to libva/libva-x11.so.1

WWaddlen 2020-07-30 github

I had this problem. I replaced intel-media-va-driver with intel-media-va-driver-non-free like so:

sudo apt install intel-media-va-driver-non-free intel-media-va-driver-non-free:i386

Hardware decoding was still not working. However, then I installed this:

sudo apt install libva-x11-2:i386

And then VAAPI decoding worked on my system.

Oonitake 2020-09-02 github

Note: When I remove intel-media-va-driver:i386 (but keep libva-x11-2:i386 installed), I get this from Steam:

CVDPAUAccel: GL_NV_vdpau_interop not available on current context
ffmpeg verbose: Cannot open X11 display :0.
ffmpeg error: No VA display found for device: .
CVAAPIAccel: av_hwdevice_ctx_create() failed
libavcodec software decoding with 4 threads

That doesn't seem right. vainfo reports this:

libva info: VA-API version 1.8.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_8
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.8 (libva 2.8.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Kaby Lake - 2.4.1
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD

iHD_drv_video.so is what intel-media-va-driver would install, so probably just a dead symlink here. i965_drv_video.so is coming from i965-va-driver and seems to support more profiles than iHD_drv_video.so.

I suspect the problem is a severely outdated libva-x11.so.2 shipped with the Steam client that doesn't work well with either of these VA drivers. The version shipped with Debian 10 is libva-x11.so.2.800.0 (version 2.8.0), while Steam has libva.so.2.100.0 (2.1.0).

Can you please reopen this bug?

CCybso 2020-09-09 github

@kisak-valve I want to second that, please re-open the bug as the issue seems not to be resolved

Jjurgel 2020-09-25 github

So I've made a diff between the packages that were removed and those that were re-installed, and by re-installing them one after one I found that the problem occurs when intel-media-va-driver:i386
and libva-x11-2:i386 were installed. These packages are installed as a dependency of va-driver-all:i386.

This did the trick for me,

sudo apt remove intel-media-va-driver:i386

and everything works.

My installation is an upgrade from 19.10 fwiw.

This fix surprisingly works. Thanks, man, it solved the problem on my side as well.
I use Ubuntu 20.04, upgraded from 18.04 if it's matter.

DDelanii 2021-02-19 github

So I've made a diff between the packages that were removed and those that were re-installed, and by re-installing them one after one I found that the problem occurs when intel-media-va-driver:i386
and libva-x11-2:i386 were installed. These packages are installed as a dependency of va-driver-all:i386.

This did the trick for me,

sudo apt remove intel-media-va-driver:i386

and everything works.
My installation is an upgrade from 19.10 fwiw.

This fix surprisingly works. Thanks, man, it solved the problem on my side as well.
I use Ubuntu 20.04, upgraded from 18.04 if it's matter.

I have spent whole day on this until I have found this thread. Tryed all possible options here, installed

sudo apt install libva-x11-2:i386 i965-va-driver-shaders:i386 libva2:i386 libva-glx2:i386 i965-va-driver:i386

but only after this:

sudo apt remove intel-media-va-driver:i386

streaming started to work. However, my screen is now polluted with connection settings and other numerical values (and some running graph) in bottom of the screen ...

I am on Ubuntu 20.04 first-install (not upgraded from older version).

I think removing that package could be considered as a workaround, but I dont think that this is solved. Requesting reopening.

Also, sidenote, on Majaro with steam-linux-native is streaming working out of the box (just checked).

Kkisak-valve maintainer 2021-02-19 github

Hello @Delanii, That graph should be controlled by Steam -> Settings -> Remote Play -> Advanced Client Options -> Performance Overlay.

Requesting reopening.

Request denied, that issue is being tracked at #7198.

Rr2bln 2021-03-02 github

I had this problem. I replaced intel-media-va-driver with intel-media-va-driver-non-free like so:

sudo apt install intel-media-va-driver-non-free intel-media-va-driver-non-free:i386

Hardware decoding was still not working. However, then I installed this:

sudo apt install libva-x11-2:i386

And then VAAPI decoding worked on my system.

Worked for me on
Pop!_OS 20.04 LTS
Intel® HD Graphics 620
Lenovo Thinkpad 13 (Gen 2)