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