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: 5

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

Powered by FluxBB