VOOZH about

URL: https://bbs.archlinux.org/viewtopic.php?id=187922

⇱ [SOLVED] Steam In-Home Streaming - Intel - Hardware decoding / Multimedia and Games / Arch Linux Forums


Arch Linux

You are not logged in.

#1 2014-10-05 16:35:23

schicki
Member
Registered: 2014-10-05
Posts: 2

[SOLVED] Steam In-Home Streaming - Intel - Hardware decoding

Hi,

I'm struggling a bit getting Steam to do hardware decoding on my Intel NUC (DN2820).

I've installed the following packages:

  • xf86-video-intel

  • lib32-mesa-libgl

  • lib32-libva-intel-driver

The output from vainfo:

vainfo: VA-API version: 0.36 (libva 1.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Bay Trail - 1.4.0
vainfo: Supported profile and entrypoints
 VAProfileMPEG2Simple : VAEntrypointVLD
 VAProfileMPEG2Simple : VAEntrypointEncSlice
 VAProfileMPEG2Main : VAEntrypointVLD
 VAProfileMPEG2Main : VAEntrypointEncSlice
 VAProfileH264ConstrainedBaseline: VAEntrypointVLD
 VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
 VAProfileH264Main : VAEntrypointVLD
 VAProfileH264Main : VAEntrypointEncSlice
 VAProfileH264High : VAEntrypointVLD
 VAProfileH264High : VAEntrypointEncSlice
 VAProfileH264StereoHigh : VAEntrypointVLD
 VAProfileVC1Simple : VAEntrypointVLD
 VAProfileVC1Main : VAEntrypointVLD
 VAProfileVC1Advanced : VAEntrypointVLD
 VAProfileNone : VAEntrypointVideoProc
 VAProfileJPEGBaseline : VAEntrypointVLD

In the streaming_client.log I see the following line:

Sun Oct 05 16:02:37 2014 UTC - CVAAPIAccel: vaInitialize() failed: unknown libva error

I can see in the performance information when starting a stream, that steam is doing libav software decoding.

After a bit of searching I found this thread.
The problem seems similar and I've tried the mentioned solution by creating the following symlink:

sudo ln -s /usr/lib32/dri/i965_drv_video.so /usr/lib/i386-linux-gnu/dri/i965_drv_video.so

It didn't change anything though.

I'm using Openbox as a window manager if that is relevant.

Any ideas?

Last edited by schicki (2014-10-09 15:52:19)

Offline

#2 2014-10-09 15:51:49

schicki
Member
Registered: 2014-10-05
Posts: 2

Re: [SOLVED] Steam In-Home Streaming - Intel - Hardware decoding

It seems that the libva version Steam comes with, is not compatible anymore to the newer libva 1.4.0.
To force Steam to use the system libraries I deleted the shared object files:

rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libva*

Then I created some symlinks, so that Steam finds the shared object files.

sudo ln -s /usr/lib32/libva-x11.so.1.3600.0 /usr/lib/i386-linux-gnu/libva-x11.so.1
sudo ln -s /usr/lib32/libva-glx.so.1.3600.0 /usr/lib/i386-linux-gnu/libva-glx.so.1
sudo ln -s /usr/lib32/libva.so.1.3600.0 /usr/lib/i386-linux-gnu/libva-so.1

Hardware decoding should work (again) at this point.

An update of the steam-runtime will create those files again.
So if's not working in the future, they have to be deleted again.

Last edited by schicki (2014-10-09 15:55:59)

Offline

#3 2015-04-11 16:22:51

blacky
Member
Registered: 2012-10-26
Posts: 14

Re: [SOLVED] Steam In-Home Streaming - Intel - Hardware decoding

Thanks everyone, I got it working now. Unfortunately performance is still not good enough to run on only one core + HyperThread so I’ll probably have to take away another core from the Windows VM running the game - which is obviously bad. I guess I’ll opt for a Hexa- or Octocore the next time …

schicki wrote:

An update of the steam-runtime will create those files again.
So if's not working in the future, they have to be deleted again.

I actually wrote a little script to accomplish something similar; it replaces the links in Steam’s folder:

#!/bin/bash
# Replace symlinks for Steam to local version
#
#~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
LINKPATH="${HOME}/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu"
LIBPATH="/usr/lib32"
for LIB in libva{,-{x11,glx}}.so.1; do
 if [ -e "${LIBPATH}/${LIB}" ]; then
 if [ -e "${LINKPATH}/${LIB}" ]; then
 if [ -L "${LINKPATH}/${LIB}" ]; then
 echo "NOTICE: ${LINKPATH}/${LIB} is a symlink. Updating link ..."
 rm "${LINKPATH}/${LIB}"
 # Link will be created later down the script
 else
 echo "ERROR: ${LINKPATH}/${LIBLINK} exists but is not a symlink! Aborting ..."
 exit 2
 fi
 else
 echo "WARN: ${LINKPATH}/${LIB} does not exist, creating symlink ..."
 fi
 ln -s "${LIBPATH}/${LIB}" "${LINKPATH}/${LIB}"
 else
 echo "File ${LIBPATH}/${LIB} does not exist, aborting!"
 exit 1
 fi
done

I saw too late (when I started writing this post, actually …) that you didn’t link into the steam folder but /usr/lib/i386-linux-gnu. So one could really reduce my script to removing the symlinks from the Steam folder but I’m already done and happy with my solution. ^^

Offline

#4 2015-04-15 12:19:16

greyltc
Member
Registered: 2015-04-15
Posts: 6

Re: [SOLVED] Steam In-Home Streaming - Intel - Hardware decoding

Since this thread is the top Google hit for "steam linux hardware decoding," I will add my fix to get it working for NVIDIA hardware decoding here as well:

First, make sure that lib32-libva-vdpau-driver is installed from the AUR.
Then, move the old steam vdpau folder out of the way:

mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/vdpau/ ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/vdpau.bak

Then, link in the vdpau folder from your system:

ln -s /usr/lib32/vdpau ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/.

To prove that it's working properly, make sure you have "Display performance information" ticked in your steam settings on the client under In-Home Streaming/Advanced Client Options. Now when you start streaming, press F6 on the client. The Decoder line should show "VDPAU hardware decoding"

The same caveat from above probably applies here as well; an update of the steam-runtime will overwrite these changes.

Offline

Board footer

Atom topic feed

Powered by FluxBB