You are not logged in.
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           : VAEntrypointVLDIn the streaming_client.log I see the following line:
Sun Oct 05 16:02:37 2014 UTC - CVAAPIAccel: vaInitialize() failed: unknown libva errorI 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.soIt 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
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.1Hardware 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
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 …
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
doneI 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
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.bakThen, 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