STEAM CSOPORT
Steam Remote Play homestream
STEAM CSOPORT
Steam Remote Play homestream
2,505
JÁTÉKBAN
34,340
ONLINE
Alapítva:
2013. november 7.
Összes téma > General Discussion > Téma részletei
XVBA / VAAPI support / linux AMD hardware decode
Hi there,

got to test the In-Home streaming yesterday, thanks alot for the invite so far :)

My setup is as follows:

Streaming host:
i5 3570K
16 GB RAM
Radeon HD7950
Windows 8.1

Streaming client:
AMD E350 APU 1,6 GHz Dualcore (integrated HD6310)
4 GB RAM
Ubuntu 12.04.4

Both systems are connected to a Linksys 1 GBit/s switch.

Streaming performance is very poor, i am assuming that's because hardware decoding is not yet available for AMD GPUs.

/tmp/streaming_client.log states the following:
Wed Feb 05 19:56:39 2014 UTC - VDPAU init failed: GL_NV_vdpau_interop not available on current context
Wed Feb 05 19:56:39 2014 UTC - libavcodec software decoding with 1 thread

Is there already an estimated date when XVBA (or VAAPI) decoding will be available?

Any comment would be appreciated!

Regards,
Markus
Legutóbb szerkesztette: gr4vy; 2014. febr. 6., 2:09
< >
1630/60 megjegyzés mutatása
carpman eredeti hozzászólása:
, but that extension won't be available on ATI/Intel chips.

Badumtss...
glxinfo | grep vdpau GL_NV_packed_depth_stencil, GL_NV_texture_barrier, GL_NV_vdpau_interop,

glxinfo | grep OpenGL OpenGL vendor string: X.Org OpenGL renderer string: Gallium 0.4 on AMD TURKS OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.2.0-devel (git-57f94bf saucy-oibaf-ppa)

For vdpau on AMD all you need is the open source driver and Gallium3D vdpau state tracker. On Ubuntu you have to install that PPA:[launchpad.net]
sudo apt-add-repository sudo apt-get update sudo apt-get dist-upgrade

and then that package:
sudo apt-get install libg3dvl-mesa

Finally you should get full vdpau and UVD support!

Unfortunately, Intel doesn't not use Gallium3D, so it cannot support VDPAU directly.
Legutóbb szerkesztette: kwahoo; 2014. febr. 8., 1:39
Did you test in-home Streaming? Is it really hardware accelerated?
blackout24 eredeti hozzászólása:
Did you test in-home Streaming? Is it really hardware accelerated?

Just tested and I'm REALLY confused, because hardware acceleration doesn't work actually.

/tmp/streaming_client_log
Sat Feb 08 10:54:28 2014 UTC - VDPAU init failed: Couldn't create VdpDevice Sat Feb 08 10:54:28 2014 UTC - libavcodec software decoding with 1 thread

And according to radeon-profile[github.com] tool UVD is not used. However, vdpau and UVD works (UVD frequency is visible in radeon-profile) in other apps like mplayer.

Maybe variable framerate is a problem for vdpau?
Legutóbb szerkesztette: kwahoo; 2014. febr. 8., 3:13
So it's the same problem gr4vy reported, mhh.
Maybe someone with Nvidia GPU can share his vdpauinfo output, mine on AMD:
vdpauinfo display: :0 screen: 0 API version: 1 Information string: G3DVL VDPAU Driver Shared Library version 1.0 Video surface: name width height types ------------------------------------------- 420 16384 16384 NV12 YV12 422 16384 16384 UYVY YUYV 444 16384 16384 Y8U8V8A8 V8U8Y8A8 Decoder capabilities: name level macbs width height ------------------------------------------- MPEG1 0 9216 2048 1152 MPEG2_SIMPLE 3 9216 2048 1152 MPEG2_MAIN 3 9216 2048 1152 H264_BASELINE 41 9216 2048 1152 H264_MAIN 41 9216 2048 1152 H264_HIGH 41 9216 2048 1152 VC1_ADVANCED 4 9216 2048 1152 MPEG4_PART2_SP 3 9216 2048 1152 MPEG4_PART2_ASP 5 9216 2048 1152 Output surface: name width height nat types ---------------------------------------------------- B8G8R8A8 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 R8G8B8A8 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 R10G10B10A2 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 B10G10R10A2 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 Bitmap surface: name width height ------------------------------ B8G8R8A8 16384 16384 R8G8B8A8 16384 16384 R10G10B10A2 16384 16384 B10G10R10A2 16384 16384 A8 16384 16384 Video mixer: feature name sup ------------------------------------ DEINTERLACE_TEMPORAL - DEINTERLACE_TEMPORAL_SPATIAL - INVERSE_TELECINE - NOISE_REDUCTION y SHARPNESS y LUMA_KEY - HIGH QUALITY SCALING - L1 - HIGH QUALITY SCALING - L2 - HIGH QUALITY SCALING - L3 - HIGH QUALITY SCALING - L4 - HIGH QUALITY SCALING - L5 - HIGH QUALITY SCALING - L6 - HIGH QUALITY SCALING - L7 - HIGH QUALITY SCALING - L8 - HIGH QUALITY SCALING - L9 - parameter name sup min max ----------------------------------------------------- VIDEO_SURFACE_WIDTH y 48 2048 VIDEO_SURFACE_HEIGHT y 48 1152 CHROMA_TYPE y LAYERS y 0 4 attribute name sup min max ----------------------------------------------------- BACKGROUND_COLOR y CSC_MATRIX y NOISE_REDUCTION_LEVEL y 0.00 1.00 SHARPNESS_LEVEL y -1.00 1.00 LUMA_KEY_MIN_LUMA y LUMA_KEY_MAX_LUMA y
For me grepping for vdpau on glxinfo returns nothing. This is a Thinkpad x201, so Ironlake graphics. I tried forcing that extension to show up with "export MESA_EXTENSION_OVERRIDE=GL_NV_vdpau_interop" and that worked, but streaming results in a black screen. Relevant output from the streaming log:

Sat Feb 08 12:59:23 2014 UTC - VDPAU hardware decoding
Sat Feb 08 12:59:23 2014 UTC - VDPAU: Couldn't associate VDPAU surface with OpenGL texture
@carpman, as said before vdpau is not available on Intel graphics. And probably never will due Intel policy :(
@kwahoo, is is available via libvdpau-va-gl

display: :0.0 screen: 0
[VS] Software VDPAU backend library initialized
libva: VA-API version 0.32.0
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva: va_openDriver() returns 0
API version: 1
Information string: OpenGL/VAAPI/libswscale backend for VDPAU

Video surface:

name width height types
-------------------------------------------
420 1920 1080 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8
422 1920 1080 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8
444 1920 1080 NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8

Decoder capabilities:

name level macbs width height
-------------------------------------------
H264_BASELINE 51 16384 2048 2048
H264_MAIN 51 16384 2048 2048
H264_HIGH 51 16384 2048 2048

Output surface:

name width height nat types
----------------------------------------------------
B8G8R8A8 52 52 -
R8G8B8A8 36 36 -
R10G10B10A2 36 36 -
B10G10R10A2 36 36 -
A8 36 36 -

Bitmap surface:

name width height
------------------------------
B8G8R8A8 8192 8192
R8G8B8A8 8192 8192
R10G10B10A2 8192 8192
B10G10R10A2 8192 8192
A8 8192 8192

Video mixer:

feature name sup
------------------------------------
DEINTERLACE_TEMPORAL -
DEINTERLACE_TEMPORAL_SPATIAL -
INVERSE_TELECINE -
NOISE_REDUCTION -
SHARPNESS -
LUMA_KEY -
HIGH QUALITY SCALING - L1 -
HIGH QUALITY SCALING - L2 -
HIGH QUALITY SCALING - L3 -
HIGH QUALITY SCALING - L4 -
HIGH QUALITY SCALING - L5 -
HIGH QUALITY SCALING - L6 -
HIGH QUALITY SCALING - L7 -
HIGH QUALITY SCALING - L8 -
HIGH QUALITY SCALING - L9 -

parameter name sup min max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH -
VIDEO_SURFACE_HEIGHT -
CHROMA_TYPE -
LAYERS -

attribute name sup min max
-----------------------------------------------------
BACKGROUND_COLOR -
CSC_MATRIX -
NOISE_REDUCTION_LEVEL -
SHARPNESS_LEVEL -
LUMA_KEY_MIN_LUMA -
LUMA_KEY_MAX_LUMA -
@carpman, not sure if I'm correct but it seems that libvdpau-va-gl provides vdpau support only for decoding, but not for displaying/postprocessing.

In my vdapuinfo:
VIDEO_SURFACE_WIDTH y 48 2048 VIDEO_SURFACE_HEIGHT y 48 1152

In your:
VIDEO_SURFACE_WIDTH - VIDEO_SURFACE_HEIGHT -

From GL_NV_vdpau_interop[http//ftp]:
This extension allows VDPAU video and output surfaces to be used
for texturing and rendering.

This allows the GL to process and display the content of video
streams decoded using VDPAU.

Alternatively, the GL may modify VDPAU surfaces in-place, and VDPAU
maythen process and/or display those surfaces itself.

This allows the GL to be used to combine application user-interface
elements with decoded video, implement custom video-processing
algorithms, etc.

Legutóbb szerkesztette: kwahoo; 2014. febr. 8., 7:58
@kwahoo: Which kernel / Ubuntu version are you using?
Since the primary purpose of my Steam streaming client is being a HTPC, I've basically installed my system according to this how-to: http://forum.xbmc.org/showthread.php?tid=174854

Therefore, my build currently runs on 13.10 with kernel images taken from 14.04 for full VDPAU support (currently 3.13.2-031302-generic).

I have also used a different ppa (ppa:wsnipex/mesa) for libg3dvl-mesa which is being provided by the guys who also maintain the VDPAU-optimized XBMC build. (They mention that the libraries from oibaf ppa are somewhat broken and don't work - at least regarding XBMC.)
Nevertheless, my Steam still uses software decoding due to the message "VDPAU init failed: Couldn't create VdpDevice"


So, to conclude everything discussed in here so far:

Ubuntu installations with proprietary fglrx driver and XvBA -> VA API -> VDPAU hardware acceleration receive the error message "VDPAU init failed: GL_NV_vdpau_interop not available on current context".
vdpauinfo shows some output but is missing values for VIDEO_SURFACE_WIDTH and VIDEO_SURFACE_HEIGHT.
glxinfo also doesn't show GL_NV_vdpau_interop extension.

Whereas Ubuntu installations with the fully open source radeon driver and specially patched mesa libraries for VDPAU do show GL_NV_vdpau_interop as available OpenGL extension.
These installations also show values for VIDEO_SURFACE_WIDTH and VIDEO_SURFACE_HEIGHT when checking with vdpauinfo.
Yet, these systems also fail to do hardware-accelerated decoding for Steam In-home streams. The error message is a different one: VDPAU init failed: Couldn't create VdpDevice

Any official feedback would be greatly appreciated!

If any other information such as debug logs, output from qvdpautest, installed package versions, etc. could be useful, i'm sure everyone in this thread would be glad to provide them!
@gr4vy as kwahoo pointed out, it seems that VIDEO_SURFACE_WIDTH and _HEIGHT (i.e. the output portion of vdpau, not just the decode portion) are requied for the streaming client to work. Hopefully Valve can find a workaround for this.

I did find this just now, for anyone trying to use an intel graphics card on the client, make sure /sys/module/i915/parameters/powersave is 0 (echo a "0" to it if not). I was getting periodic slowdowns in decoding (2-3 seconds of slowness every 15 or so, hard to tell, I was in the middle of a round of TF2), and that resolved it.
@carpman:
Actually i do have values for VIDEO_SURFACE_WIDTH and _HEIGHT using the OSS radeon driver:
root@xbmc:~# vdpauinfo | grep -i video_surface VIDEO_SURFACE_WIDTH y 48 2048 VIDEO_SURFACE_HEIGHT y 48 1152
I will post my NVIDIA vdpauinfo next friday. Maybe that will clear things up. Unfortunately I'm not at home this week.
i have 2 netbooks, one with NVIDIA ION and the other with AMD C70/HD 6290. Both run with arch linux and vdpau.

On the Nvidia Ion netbook steam in-home streaming works good 30-60 fps.

But on the AMD C70/HD 6290 it is very poor, i have only 1-13 fps.

i have the same error " VDPAU init failed: Couldn't create VdpDevice"
gr4vy eredeti hozzászólása:
@kwahoo: Which kernel / Ubuntu version are you using?
Since the primary purpose of my Steam streaming client is being a HTPC, I've basically installed my system according to this how-to: http://forum.xbmc.org/showthread.php?tid=174854

Therefore, my build currently runs on 13.10 with kernel images taken from 14.04 for full VDPAU support (currently 3.13.2-031302-generic).
uname -a
Linux adi-desktop 3.13.0-031300rc8-generic #201401120535 SMP Sun Jan 12 10:36:21 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Ubuntu 13.10
Legutóbb szerkesztette: kwahoo; 2014. febr. 10., 11:50
< >
1630/60 megjegyzés mutatása
Laponként: 1530 50

Összes téma > General Discussion > Téma részletei
Közzétéve: 2014. febr. 6., 2:06
Hozzászólások: 60