RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 2099907 - libva needs a patch added for crocus support
Summary: libva needs a patch added for crocus support
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: libva
Version: 8.6
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 8.7
Assignee: Jiri Kucera
QA Contact: Tomas Pelka
Šárka Jana
URL:
Whiteboard:
Depends On:
Blocks: 2114867
TreeView+ depends on / blocked
 
Reported: 2022-06-21 23:53 UTC by Dave Airlie
Modified: 2022-11-08 10:51 UTC (History)
4 users (show)

Fixed In Version: libva-2.13.0-2.el8
Doc Type: Enhancement
Doc Text:
.`libva` rebased to version 2.13.0 The `libva` library for video acceleration API has been updated to version 2.13.0. Notable improvements and new features include: * Two new FourCC video coding formats: `X2R10G10B10` and `X2B10G10R10` for capturing, processing, and displaying video in the 10-bit RGB format (excluding Alpha). * The VAAPI driver mapping for `iris` and `crocus` DRI drivers. * The `vaSyncBuffer` function for output buffers synchronization. * The `vaCopy` interface to copy surface and buffer. * The LibVA Protected Content API for digital rights management (DRM) protected video. * The 3DLUT Filter in Video Processing, which maps input colors to new output values.
Clone Of:
: 2114867 (view as bug list)
Environment:
Last Closed: 2022-11-08 09:50:39 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-125926 0 None None None 2022-06-21 23:58:51 UTC
Red Hat Product Errata RHBA-2022:7619 0 None None None 2022-11-08 09:50:41 UTC

Description Dave Airlie 2022-06-21 23:53:13 UTC
As we are moving to crocus instead of i965, libva needs a small patch to support that transition.

Comment 1 Dave Airlie 2022-06-21 23:55:34 UTC
actually I think we should probably rebase libva to 2.13.0 + the patch, since I think 2.5.0 is broken since the iris transition since it has not dri2 name mapping.

Comment 2 Jiri Kucera 2022-06-30 07:01:22 UTC
Hi Tom, do your team have capacity and equipment to test it for 8.7? If not, David, will you be willing to help us with testing, please?

Comment 3 Jiri Kucera 2022-07-13 20:07:36 UTC
Just for the completeness here is the output of `abipkgdiff`. The rebase is doable,
my observations are inline.

```
$ abipkgdiff libva-2.5.0-2.el8.x86_64.rpm libva-2.13.0-1.el8.x86_64.rpm --d1 libva-debuginfo-2.5.0-2.el8.x86_64.rpm --d2 libva-debuginfo-2.13.0-1.el8.x86_64.rpm --devel1 libva-devel-2.5.0-2.el8.x86_64.rpm --devel2 libva-devel-2.13.0-1.el8.x86_64.rpm 
================ changes of 'libva.so.2.500.0'===============
  Functions changes summary: 0 Removed, 5 Changed (19 filtered out), 8 Added functions
  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

  8 Added functions:

    [A] 'function VAStatus vaAttachProtectedSession(VADisplay, VAContextID, VAProtectedSessionID)'    {vaAttachProtectedSession}
    [A] 'function VAStatus vaCopy(VADisplay, VACopyObject*, VACopyObject*, VACopyOption)'    {vaCopy}
    [A] 'function VAStatus vaCreateProtectedSession(VADisplay, VAConfigID, VAProtectedSessionID*)'    {vaCreateProtectedSession}
    [A] 'function VAStatus vaDestroyProtectedSession(VADisplay, VAProtectedSessionID)'    {vaDestroyProtectedSession}
    [A] 'function VAStatus vaDetachProtectedSession(VADisplay, VAContextID)'    {vaDetachProtectedSession}
    [A] 'function VAStatus vaProtectedSessionExecute(VADisplay, VAProtectedSessionID, VABufferID)'    {vaProtectedSessionExecute}
    [A] 'function VAStatus vaSyncBuffer(VADisplay, VABufferID, uint64_t)'    {vaSyncBuffer}
    [A] 'function VAStatus vaSyncSurface2(VADisplay, VASurfaceID, uint64_t)'    {vaSyncSurface2}

  5 functions with some indirect sub-type change:

    [C] 'function VAStatus vaBufferInfo(VADisplay, VAContextID, VABufferID, VABufferType*, unsigned int*, unsigned int*)' at va.c:1489:1 has some indirect sub-type changes:
      parameter 4 of type 'VABufferType*' has sub-type changes:
        in pointed to type 'typedef VABufferType' at va.h:2048:1:
          underlying type 'enum VABufferType' at va.h:1597:1 changed:
            type size hasn't changed
            3 enumerator insertions:
              'VABufferType::VAContextParameterUpdateBufferType' value '58'
              'VABufferType::VAProtectedSessionExecuteBufferType' value '59'
              'VABufferType::VAEncryptionParameterBufferType' value '60'
            1 enumerator change:
              'VABufferType::VABufferTypeMax' from value '58' to '61' at va.h:1924:1
```
(1) 3 enumeration constants were added at the end of `enum VABufferType` but before
    `VABufferType::VABufferTypeMax`. My assumption is that this and similar enumaration
    constants serve as an upper-bound in loops and should be used only by `libva` internals.

```
    [C] 'function const char* vaConfigAttribTypeStr(VAConfigAttribType)' at va_str.c:95:1 has some indirect sub-type changes:
      parameter 1 of type 'typedef VAConfigAttribType' has sub-type changes:
        underlying type 'enum VAConfigAttribType' at va.h:458:1 changed:
          type size hasn't changed
          13 enumerator insertions:
            'VAConfigAttribType::VAConfigAttribPredictionDirection' value '39'
            'VAConfigAttribType::VAConfigAttribMultipleFrame' value '40'
            'VAConfigAttribType::VAConfigAttribContextPriority' value '41'
            'VAConfigAttribType::VAConfigAttribDecAV1Features' value '42'
            'VAConfigAttribType::VAConfigAttribTEEType' value '43'
            'VAConfigAttribType::VAConfigAttribTEETypeClient' value '44'
            'VAConfigAttribType::VAConfigAttribProtectedContentCipherAlgorithm' value '45'
            'VAConfigAttribType::VAConfigAttribProtectedContentCipherBlockSize' value '46'
            'VAConfigAttribType::VAConfigAttribProtectedContentCipherMode' value '47'
            'VAConfigAttribType::VAConfigAttribProtectedContentCipherSampleType' value '48'
            'VAConfigAttribType::VAConfigAttribProtectedContentUsage' value '49'
            'VAConfigAttribType::VAConfigAttribEncHEVCFeatures' value '50'
            'VAConfigAttribType::VAConfigAttribEncHEVCBlockSizes' value '51'
          1 enumerator change:
            'VAConfigAttribType::VAConfigAttribTypeMax' from value '39' to '52' at va.h:605:1
```
(2) similarly as (1)

```
    [C] 'function VAStatus vaCreateSurfaces(VADisplay, unsigned int, unsigned int, unsigned int, VASurfaceID*, unsigned int, VASurfaceAttrib*, unsigned int)' at va.c:1162:1 has some indirect sub-type changes:
      parameter 7 of type 'VASurfaceAttrib*' has sub-type changes:
        in pointed to type 'typedef VASurfaceAttrib' at va.h:1643:1:
          underlying type 'struct _VASurfaceAttrib' at va.h:1308:1 changed:
            type size hasn't changed
            1 data member change:
              type of 'VASurfaceAttribType type' changed:
                underlying type 'enum VASurfaceAttribType' at va.h:1270:1 changed:
                  type size hasn't changed
                  1 enumerator insertion:
                    'VASurfaceAttribType::VASurfaceAttribDRMFormatModifiers' value '9'
                  1 enumerator change:
                    'VASurfaceAttribType::VASurfaceAttribCount' from value '9' to '10' at va.h:1592:1
```
(3) similarly as (1)

```
    [C] 'function VAStatus vaQueryVideoProcFilterCaps(VADisplay, VAContextID, VAProcFilterType, void*, unsigned int*)' at va.c:2254:1 has some indirect sub-type changes:
      parameter 3 of type 'typedef VAProcFilterType' has sub-type changes:
        underlying type 'enum _VAProcFilterType' at va_vpp.h:238:1 changed:
          type size hasn't changed
          1 enumerator insertion:
            '_VAProcFilterType::VAProcFilter3DLUT' value '9'
          1 enumerator change:
            '_VAProcFilterType::VAProcFilterCount' from value '9' to '10' at va_vpp.h:238:1
```
(4) similarly as (1)

```
    [C] 'function VADisplayContextP va_newDisplayContext()' at va.c:281:1 has some indirect sub-type changes:
      return type changed:
        underlying type 'VADisplayContext*' changed:
          in pointed to type 'struct VADisplayContext' at va_backend.h:649:1:
            type size hasn't changed
            2 data member insertions:
              'typedef VAStatus (typedef VADisplayContextP, int*)* vaGetNumCandidates', at offset 832 (in bits) at va_backend.h:676:1
              'typedef VAStatus (typedef VADisplayContextP, char**, int)* vaGetDriverNameByIndex', at offset 896 (in bits) at va_backend.h:681:1
            2 data member changes (4 filtered):
              type of 'VADriverContextP pDriverContext' changed:
                underlying type 'VADriverContext*' changed:
                  in pointed to type 'struct VADriverContext' at va_backend.h:509:1:
                    type size hasn't changed
                    1 data member insertion:
                      'VADriverVTableProt* vtable_prot', at offset 1408 (in bits) at va_backend.h:643:1
                    2 data member changes (3 filtered):
                      type of 'VADriverVTable* vtable' changed:
                        in pointed to type 'struct VADriverVTable' at va_backend.h:56:1:
                          type size hasn't changed
                          3 data member insertions:
                            'typedef VAStatus (typedef VADriverContextP, typedef VASurfaceID, typedef uint64_t)* vaSyncSurface2', at offset 3584 (in bits) at va_backend.h:486:1
                            'typedef VAStatus (typedef VADriverContextP, typedef VABufferID, typedef uint64_t)* vaSyncBuffer', at offset 3648 (in bits) at va_backend.h:492:1
                            'typedef VAStatus (typedef VADriverContextP, VACopyObject*, VACopyObject*, typedef VACopyOption)* vaCopy', at offset 3712 (in bits) at va_backend.h:499:1
                          1 data member changes (56 filtered):
                            type of 'unsigned long int reserved[57]' changed:
                              type name changed from 'unsigned long int[57]' to 'unsigned long int[54]'
                              array type size changed from 3648 to 3456
                              array type subrange 1 changed length from 57 to 54
                            and offset changed from 3584 to 3776 (in bits) (by +192 bits)
                      type of 'unsigned long int reserved[38]' changed:
                        type name changed from 'unsigned long int[38]' to 'unsigned long int[37]'
                        array type size changed from 2432 to 2368
                        array type subrange 1 changed length from 38 to 37
                      and offset changed from 1408 to 1472 (in bits) (by +64 bits)
              type of 'unsigned long int reserved[32]' changed:
                type name changed from 'unsigned long int[32]' to 'unsigned long int[30]'
                array type size changed from 2048 to 1920
                array type subrange 1 changed length from 32 to 30
              and offset changed from 832 to 960 (in bits) (by +128 bits)
```
(5) new members has been added to structs to the reserved area, size and layout
    of structs remains unchanged, the backward compatibility should be preserved

```
================ end of changes of 'libva.so.2.500.0'===============

================ changes of 'libva-x11.so.2.500.0'===============
  Functions changes summary: 0 Removed, 1 Changed (5 filtered out), 0 Added functions
  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

  1 function with some indirect sub-type change:

    [C] 'function void va_dri_free_drawable(VADriverContextP, dri_drawable*)' at va_dricommon.c:90:1 has some indirect sub-type changes:
      parameter 1 of type 'typedef VADriverContextP' has sub-type changes:
        underlying type 'VADriverContext*' changed:
          in pointed to type 'struct VADriverContext' at va_backend.h:509:1:
            type size hasn't changed
            1 data member insertion:
              'VADriverVTableProt* vtable_prot', at offset 1408 (in bits) at va_backend.h:643:1
            2 data member changes (2 filtered):
              type of 'VADriverVTable* vtable' changed:
                in pointed to type 'struct VADriverVTable' at va_backend.h:56:1:
                  type size hasn't changed
                  3 data member insertions:
                    'typedef VAStatus (typedef VADriverContextP, typedef VASurfaceID, typedef uint64_t)* vaSyncSurface2', at offset 3584 (in bits) at va_backend.h:486:1
                    'typedef VAStatus (typedef VADriverContextP, typedef VABufferID, typedef uint64_t)* vaSyncBuffer', at offset 3648 (in bits) at va_backend.h:492:1
                    'typedef VAStatus (typedef VADriverContextP, VACopyObject*, VACopyObject*, typedef VACopyOption)* vaCopy', at offset 3712 (in bits) at va_backend.h:499:1
                  4 data member changes (53 filtered):
                    type of 'typedef VAStatus (typedef VADriverContextP, typedef VAProfile, typedef VAEntrypoint, VAConfigAttrib*, int, VAConfigID*)* vaCreateConfig' changed:
                      in pointed to type 'function type typedef VAStatus (typedef VADriverContextP, typedef VAProfile, typedef VAEntrypoint, VAConfigAttrib*, int, VAConfigID*)':
                        parameter 4 of type 'VAConfigAttrib*' has sub-type changes:
                          in pointed to type 'typedef VAConfigAttrib' at va.h:1012:1:
                            underlying type 'struct _VAConfigAttrib' at va.h:774:1 changed:
                              type size hasn't changed
                              1 data member change:
                                type of 'VAConfigAttribType type' changed:
                                  underlying type 'enum VAConfigAttribType' at va.h:458:1 changed:
                                    type size hasn't changed
                                    13 enumerator insertions:
                                      'VAConfigAttribType::VAConfigAttribPredictionDirection' value '39'
                                      'VAConfigAttribType::VAConfigAttribMultipleFrame' value '40'
                                      'VAConfigAttribType::VAConfigAttribContextPriority' value '41'
                                      'VAConfigAttribType::VAConfigAttribDecAV1Features' value '42'
                                      'VAConfigAttribType::VAConfigAttribTEEType' value '43'
                                      'VAConfigAttribType::VAConfigAttribTEETypeClient' value '44'
                                      'VAConfigAttribType::VAConfigAttribProtectedContentCipherAlgorithm' value '45'
                                      'VAConfigAttribType::VAConfigAttribProtectedContentCipherBlockSize' value '46'
                                      'VAConfigAttribType::VAConfigAttribProtectedContentCipherMode' value '47'
                                      'VAConfigAttribType::VAConfigAttribProtectedContentCipherSampleType' value '48'
                                      'VAConfigAttribType::VAConfigAttribProtectedContentUsage' value '49'
                                      'VAConfigAttribType::VAConfigAttribEncHEVCFeatures' value '50'
                                      'VAConfigAttribType::VAConfigAttribEncHEVCBlockSizes' value '51'
                                    1 enumerator change:
                                      'VAConfigAttribType::VAConfigAttribTypeMax' from value '39' to '52' at va.h:605:1
                    type of 'typedef VAStatus (typedef VADriverContextP, typedef VABufferID, VABufferType*, unsigned int*, unsigned int*)* vaBufferInfo' changed:
                      in pointed to type 'function type typedef VAStatus (typedef VADriverContextP, typedef VABufferID, VABufferType*, unsigned int*, unsigned int*)':
                        parameter 3 of type 'VABufferType*' has sub-type changes:
                          in pointed to type 'typedef VABufferType' at va.h:2048:1:
                            underlying type 'enum VABufferType' at va.h:1597:1 changed:
                              type size hasn't changed
                              3 enumerator insertions:
                                'VABufferType::VAContextParameterUpdateBufferType' value '58'
                                'VABufferType::VAProtectedSessionExecuteBufferType' value '59'
                                'VABufferType::VAEncryptionParameterBufferType' value '60'
                              1 enumerator change:
                                'VABufferType::VABufferTypeMax' from value '58' to '61' at va.h:1924:1
                    type of 'typedef VAStatus (typedef VADriverContextP, unsigned int, unsigned int, unsigned int, VASurfaceID*, unsigned int, VASurfaceAttrib*, unsigned int)* vaCreateSurfaces2' changed:
                      in pointed to type 'function type typedef VAStatus (typedef VADriverContextP, unsigned int, unsigned int, unsigned int, VASurfaceID*, unsigned int, VASurfaceAttrib*, unsigned int)':
                        parameter 7 of type 'VASurfaceAttrib*' has sub-type changes:
                          in pointed to type 'typedef VASurfaceAttrib' at va.h:1643:1:
                            underlying type 'struct _VASurfaceAttrib' at va.h:1308:1 changed:
                              type size hasn't changed
                              1 data member change:
                                type of 'VASurfaceAttribType type' changed:
                                  underlying type 'enum VASurfaceAttribType' at va.h:1270:1 changed:
                                    type size hasn't changed
                                    1 enumerator insertion:
                                      'VASurfaceAttribType::VASurfaceAttribDRMFormatModifiers' value '9'
                                    1 enumerator change:
                                      'VASurfaceAttribType::VASurfaceAttribCount' from value '9' to '10' at va.h:1592:1
                    type of 'unsigned long int reserved[57]' changed:
                      type name changed from 'unsigned long int[57]' to 'unsigned long int[54]'
                      array type size changed from 3648 to 3456
                      array type subrange 1 changed length from 57 to 54
                    and offset changed from 3584 to 3776 (in bits) (by +192 bits)
              type of 'unsigned long int reserved[38]' changed:
                type name changed from 'unsigned long int[38]' to 'unsigned long int[37]'
                array type size changed from 2432 to 2368
                array type subrange 1 changed length from 38 to 37
              and offset changed from 1408 to 1472 (in bits) (by +64 bits)

================ end of changes of 'libva-x11.so.2.500.0'===============
```
(6) same as in (1) to (5)

Comment 11 Dave Airlie 2022-08-24 21:06:21 UTC
We don't ship it, we just ship the va libraries, and Intel ship the underlying video stuff.

The above info is what we want, and is enough to confirm the bug is closed.

Comment 12 Tomas Pelka 2022-08-25 06:26:23 UTC
(In reply to Dave Airlie from comment #11)
> We don't ship it, we just ship the va libraries, and Intel ship the
> underlying video stuff.
> 
> The above info is what we want, and is enough to confirm the bug is closed.

OK very good, thanks Dave.

Comment 18 errata-xmlrpc 2022-11-08 09:50:39 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (libva bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:7619


Note You need to log in before you can comment on or make changes to this bug.