Bug 77102 - gallium nouveau has no profile in vdpau and libva
gallium nouveau has no profile in vdpau and libva
Status: RESOLVED FIXED
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/nouveau
unspecified
Other All
: medium normal
Assigned To: Nouveau Project
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2014-04-06 11:03 UTC by Stefan Ringel
Modified: 2014-04-07 13:13 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
vainfo gdb (9.18 KB, text/plain)
2014-04-06 11:03 UTC, Stefan Ringel
Details
vdpainfo gdb (4.66 KB, text/plain)
2014-04-06 11:03 UTC, Stefan Ringel
Details
vainfo valgrind (19.25 KB, text/plain)
2014-04-06 11:10 UTC, Stefan Ringel
Details
vdpauinfo valgrind (15.06 KB, text/plain)
2014-04-06 11:10 UTC, Stefan Ringel
Details
ls (74.95 KB, text/plain)
2014-04-06 18:31 UTC, Stefan Ringel
Details
dmesg (64.95 KB, text/plain)
2014-04-06 19:29 UTC, Stefan Ringel
Details
firmware present patch (647 bytes, patch)
2014-04-07 04:23 UTC, Ilia Mirkin
Details | Splinter Review
correct profile in vdpauinfo + vainfo (3.73 KB, text/plain)
2014-04-07 07:12 UTC, Stefan Ringel
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Ringel 2014-04-06 11:03:06 UTC
Created attachment 96973 [details]
vainfo gdb

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

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     4096
VIDEO_SURFACE_HEIGHT             y        48     4096
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  


libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/nouveau_drv_video.so
libva info: Found init function __vaDriverInit_0_34
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.34 (libva 1.2.1)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
Comment 1 Stefan Ringel 2014-04-06 11:03:37 UTC
Created attachment 96974 [details]
vdpainfo gdb
Comment 2 Stefan Ringel 2014-04-06 11:10:25 UTC
Created attachment 96975 [details]
vainfo valgrind
Comment 3 Stefan Ringel 2014-04-06 11:10:44 UTC
Created attachment 96976 [details]
vdpauinfo valgrind
Comment 4 Ilia Mirkin 2014-04-06 16:25:15 UTC
You haven't really supplied enough information to determine what the problem is (or even if there is a problem). However,

http://nouveau.freedesktop.org/wiki/VideoAcceleration/

should answer all of your questions. Good things to check for are (a) whether your hardware supports VDPAU decoding in the first place (NV84+ should), and (b) whether you've installed the firmware. If you still have trouble after reading through that entire page (and following its instructions), feel free to reopen.
Comment 5 Stefan Ringel 2014-04-06 18:11:51 UTC
It dosn't work. Firmware are installed.

NVidia Geforce 520 (NVD9)
Comment 6 Ilia Mirkin 2014-04-06 18:25:47 UTC
Please provide the output of

ls -l /lib/firmware/nouveau
dmesg (after you've run vdpauinfo)
Comment 7 Stefan Ringel 2014-04-06 18:31:02 UTC
Created attachment 96999 [details]
ls
Comment 8 Ilia Mirkin 2014-04-06 18:40:13 UTC
OK, so it seems like the firmware is correctly in place, and there are no errors coming from dmesg, which means it's getting loaded (or at least isn't failing to load).

What version of Mesa are you using? I recently added a feature which auto-detects if firmware is present before reporting codec capabilities, and I might have gotten it wrong somehow.
Comment 9 Stefan Ringel 2014-04-06 18:46:16 UTC
(In reply to comment #8)
> OK, so it seems like the firmware is correctly in place, and there are no
> errors coming from dmesg, which means it's getting loaded (or at least isn't
> failing to load).
> 
> What version of Mesa are you using? I recently added a feature which
> auto-detects if firmware is present before reporting codec capabilities, and
> I might have gotten it wrong somehow.

mesa 10.1 (Fedora Core 21 rawhide)
Comment 10 Ilia Mirkin 2014-04-06 19:19:10 UTC
Would you mind booting with

nouveau.debug=PBSP=trace

and putting up a dmesg from that (after the vdpauinfo, that is). BTW, silly question -- do you have a libvdpau_nouveau.so?
Comment 11 Stefan Ringel 2014-04-06 19:29:25 UTC
(In reply to comment #10)
> Would you mind booting with
> 
> nouveau.debug=PBSP=trace
> 
> and putting up a dmesg from that (after the vdpauinfo, that is). BTW, silly
> question -- do you have a libvdpau_nouveau.so?

yes I have libvdpau_nouveau.so. It is installed in /usr/lib64/vdpau .
Comment 12 Stefan Ringel 2014-04-06 19:29:48 UTC
Created attachment 97000 [details]
dmesg
Comment 13 Ilia Mirkin 2014-04-07 04:23:48 UTC
Created attachment 97009 [details] [review]
firmware present patch

OK, upon further code reading, it looks like the way nouveau does class id's is a bit off. That doesn't strictly matter for BSP, but there's a mismatch in the logic between mesa and the kernel, which causes problems for NVD7 and NVD9 cards.

In nouveau_vp3_video.c:firmware_present,

      if (chipset < 0xc0)
         oclass = 0x85b1;
      else if (vp5)
         oclass = 0x95b1;
      else
         oclass = 0x90b1;

should become

      if (chipset < 0xc0)
         oclass = 0x85b1;
      else if (chipset < 0xe0)
         oclass = 0x90b1;
      else
         oclass = 0x95b1;

Since the kernel expects the 90b1 class to be used on the NVD9 card, despite it having VP5. I've attached this change as a patch, please try it out. (If you can't, I'll try to locate someone else with the relevant hardware, but it'd be much easier if you could do it.)
Comment 14 Stefan Ringel 2014-04-07 07:09:20 UTC
(In reply to comment #13)
> Created attachment 97009 [details] [review] [review]
> firmware present patch
> 
> OK, upon further code reading, it looks like the way nouveau does class id's
> is a bit off. That doesn't strictly matter for BSP, but there's a mismatch
> in the logic between mesa and the kernel, which causes problems for NVD7 and
> NVD9 cards.
> 
> In nouveau_vp3_video.c:firmware_present,
> 
>       if (chipset < 0xc0)
>          oclass = 0x85b1;
>       else if (vp5)
>          oclass = 0x95b1;
>       else
>          oclass = 0x90b1;
> 
> should become
> 
>       if (chipset < 0xc0)
>          oclass = 0x85b1;
>       else if (chipset < 0xe0)
>          oclass = 0x90b1;
>       else
>          oclass = 0x95b1;
> 
> Since the kernel expects the 90b1 class to be used on the NVD9 card, despite
> it having VP5. I've attached this change as a patch, please try it out. (If
> you can't, I'll try to locate someone else with the relevant hardware, but
> it'd be much easier if you could do it.)

Patch works. Thanks.
Comment 15 Stefan Ringel 2014-04-07 07:12:11 UTC
Created attachment 97014 [details]
correct profile in vdpauinfo + vainfo
Comment 16 Stefan Ringel 2014-04-07 07:57:22 UTC
(In reply to comment #15)
> Created attachment 97014 [details]
> correct profile in vdpauinfo + vainfo

dmseg:
[   97.292274] nouveau T[    PBSP][0000:01:00.0] inc() == 4
[   97.341821] nouveau T[    PBSP][0000:01:00.0] use(+1) == 1
[   97.341827] nouveau T[    PBSP][0000:01:00.0] initialising...
[   97.341831] nouveau T[    PBSP][0000:01:00.0] resetting...
[   97.341840] nouveau D[    PBSP][0000:01:00.0] reset
[   97.341847] nouveau D[    PBSP][0000:01:00.0] falcon version: 4
[   97.341850] nouveau D[    PBSP][0000:01:00.0] secret level: 3
[   97.341852] nouveau D[    PBSP][0000:01:00.0] code limit: 8192
[   97.341855] nouveau D[    PBSP][0000:01:00.0] data limit: 4096
[   97.376514] nouveau D[    PBSP][0000:01:00.0] firmware: nouveau/nvd9_fuc084 (self-bootstrapping)
[   97.377803] nouveau D[    PBSP][0000:01:00.0] initialised
[   97.377983] nouveau T[    PBSP][0000:01:00.0] inc() == 5
[   97.378050] nouveau D[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] created
[   97.378057] nouveau T[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] inc() == 2
[   97.378062] nouveau T[    PBSP][0000:01:00.0] inc() == 6
[   97.378068] nouveau D[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] created
[   97.378074] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] use(+1) == 1
[   97.378080] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] initialising...
[   97.378086] nouveau T[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] use(+1) == 1
[   97.378092] nouveau T[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] initialising...
[   97.378104] nouveau T[    PBSP][0000:01:00.0] use(+1) == 2
[   97.378145] nouveau D[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] initialised
[   97.378150] nouveau T[    PBSP][0000:01:00.0] use(+1) == 3
[   97.378156] nouveau D[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] initialised
[   97.378163] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] inc() == 2
[   97.378170] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] use(+1) == 2
[   97.378177] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] use(-1) == 1
[   97.378183] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] dec() == 1
[   97.378189] nouveau T[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] dec() == 1
[   97.378194] nouveau T[    PBSP][0000:01:00.0] use(-1) == 2
[   97.379223] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] use(-1) == 0
[   97.379229] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] stopping...
[   97.379943] nouveau T[    PBSP][0000:01:00.0] use(-1) == 1
[   97.379945] nouveau T[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] use(-1) == 0
[   97.379948] nouveau T[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] stopping...
[   97.379957] nouveau T[    PBSP][0000:01:00.0] use(-1) == 0
[   97.379959] nouveau T[    PBSP][0000:01:00.0] stopping...
[   97.379991] nouveau D[    PBSP][0000:01:00.0] stopped
[   97.379996] nouveau D[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] stopped
[   97.379998] nouveau D[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] stopped
[   97.380001] nouveau T[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] dec() == 0
[   97.380004] nouveau D[    PBSP][0000:01:00.0][0x000090b1][ffff8800c2bfc960] destroying
[   97.380006] nouveau T[    PBSP][0000:01:00.0] dec() == 5
[   97.380008] nouveau T[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] dec() == 0
[   97.380011] nouveau D[    PBSP][0000:01:00.0][0x0300c01b][ffff880118ebf800] destroying
[   97.380040] nouveau T[    PBSP][0000:01:00.0] dec() == 4
[   97.509998] nouveau T[    PBSP][0000:01:00.0] dec() == 3
Comment 17 Ilia Mirkin 2014-04-07 13:13:00 UTC
Fix checked in:

http://cgit.freedesktop.org/mesa/mesa/commit/?id=89c5b56be6c242d1489cf5c06b04c8b7a668d6f9

Should make it into a 10.1 stable release... if they ever get around to making one.