Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libva for openSUSE:Factory checked 
in at 2022-03-04 00:16:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libva (Old)
 and      /work/SRC/openSUSE:Factory/.libva.new.1958 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libva"

Fri Mar  4 00:16:47 2022 rev:64 rq:958358 version:2.14.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libva/libva-gl.changes   2021-10-04 
18:40:57.306154026 +0200
+++ /work/SRC/openSUSE:Factory/.libva.new.1958/libva-gl.changes 2022-03-04 
00:16:49.200274833 +0100
@@ -1,0 +2,10 @@
+Tue Mar  1 00:15:06 UTC 2022 - Aaron Stern <ukbeas...@protonmail.com>
+
+- Update to 2.14.0:
+  * add: Add av1 encode interfaces
+  * add: VA/X11 VAAPI driver mapping for crocus DRI driver
+  * doc: Add description of the fd management for surface importing
+  * ci: fix freebsd build
+  * meson: Copy public headers to build directory to support subproject
+  
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/libva/libva.changes      2021-10-04 
18:40:57.318154046 +0200
+++ /work/SRC/openSUSE:Factory/.libva.new.1958/libva.changes    2022-03-04 
00:16:49.308274856 +0100
@@ -1,0 +2,10 @@
+Tue Mar  1 00:07:18 UTC 2022 - Aaron Stern <ukbeas...@protonmail.com>
+
+- Update to 2.14.0:
+  * add: Add av1 encode interfaces
+  * add: VA/X11 VAAPI driver mapping for crocus DRI driver
+  * doc: Add description of the fd management for surface importing
+  * ci: fix freebsd build
+  * meson: Copy public headers to build directory to support subproject
+  
+-------------------------------------------------------------------

Old:
----
  libva-2.13.0.tar.gz

New:
----
  libva-2.14.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libva-gl.spec ++++++
--- /var/tmp/diff_new_pack.E86Wnq/_old  2022-03-04 00:16:49.948274991 +0100
+++ /var/tmp/diff_new_pack.E86Wnq/_new  2022-03-04 00:16:49.952274991 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libva-gl
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -23,7 +23,7 @@
 
 Name:           libva-gl
 %define _name   libva
-Version:        2.13.0
+Version:        2.14.0
 Release:        0
 Summary:        Video Acceleration (VA) API
 License:        MIT

++++++ libva.spec ++++++
--- /var/tmp/diff_new_pack.E86Wnq/_old  2022-03-04 00:16:49.984274999 +0100
+++ /var/tmp/diff_new_pack.E86Wnq/_new  2022-03-04 00:16:49.988274999 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libva
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -23,7 +23,7 @@
 
 Name:           libva
 %define _name   libva
-Version:        2.13.0
+Version:        2.14.0
 Release:        0
 Summary:        Video Acceleration (VA) API
 License:        MIT

++++++ libva-2.13.0.tar.gz -> libva-2.14.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/.github/workflows/freebsd.yml 
new/libva-2.14.0/.github/workflows/freebsd.yml
--- old/libva-2.13.0/.github/workflows/freebsd.yml      2021-09-16 
23:57:25.000000000 +0200
+++ new/libva-2.14.0/.github/workflows/freebsd.yml      2022-02-16 
16:26:40.000000000 +0100
@@ -12,11 +12,11 @@
 
 jobs:
   freebsd:
-    runs-on: macos-latest
+    runs-on: macos-10.15
     steps:
     - uses: actions/checkout@v2
     - name: test
-      uses: vmactions/freebsd-vm@v0.1.3
+      uses: vmactions/freebsd-vm@v0.1.5
       with:
         prepare: |
           pkg install -y meson pkgconf libdrm libXext libXfixes wayland
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/NEWS new/libva-2.14.0/NEWS
--- old/libva-2.13.0/NEWS       2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/NEWS       2022-02-16 16:26:40.000000000 +0100
@@ -1,5 +1,12 @@
-libva NEWS -- summary of user visible changes.  2021-09-16
-Copyright (C) 2009-2020 Intel Corporation
+libva NEWS -- summary of user visible changes.  2022-02-16
+Copyright (C) 2009-2022 Intel Corporation
+
+version 2.14.0 - 16.Feb.2022
+* add: Add av1 encode interfaces
+* add: VA/X11 VAAPI driver mapping for crocus DRI driver
+* doc: Add description of the fd management for surface importing
+* ci: fix freebsd build
+* meson: Copy public headers to build directory to support subproject
 
 version 2.13.0 - 16.Sep.2021
 * fix:Check the function pointer before using
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/configure.ac 
new/libva-2.14.0/configure.ac
--- old/libva-2.13.0/configure.ac       2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/configure.ac       2022-02-16 16:26:40.000000000 +0100
@@ -27,7 +27,7 @@
 # - reset micro version to zero when minor version is incremented
 # - reset minor version to zero when major version is incremented
 m4_define([va_api_major_version], [1])
-m4_define([va_api_minor_version], [13])
+m4_define([va_api_minor_version], [14])
 m4_define([va_api_micro_version], [0])
 
 m4_define([va_api_version],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/meson.build new/libva-2.14.0/meson.build
--- old/libva-2.13.0/meson.build        2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/meson.build        2022-02-16 16:26:40.000000000 +0100
@@ -7,8 +7,8 @@
 # - reset micro version to zero when VA-API major or minor version is changed
 project(
   'libva', 'c',
-  version : '2.13.0',
-  meson_version : '>= 0.37.0',
+  version : '2.14.0',
+  meson_version : '>= 0.53.0',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
@@ -19,7 +19,7 @@
 # - reset micro version to zero when minor version is incremented
 # - reset minor version to zero when major version is incremented
 va_api_major_version = 1
-va_api_minor_version = 13
+va_api_minor_version = 14
 va_api_micro_version = 0
 
 va_api_version = '@0@.@1@.@2@'.format(va_api_major_version,
@@ -103,7 +103,7 @@
   wayland_dep = dependency('wayland-client', version : '>= 1.11.0',
                           required : get_option('with_wayland') == 'yes')
   if wayland_dep.found()
-    wl_prefix = wayland_dep.get_pkgconfig_variable('prefix')
+    wl_prefix = wayland_dep.get_variable(pkgconfig: 'prefix')
     wl_scanner = find_program('wayland-scanner',
                              wl_prefix + '/bin/wayland-scanner')
   endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/pkgconfig/meson.build 
new/libva-2.14.0/pkgconfig/meson.build
--- old/libva-2.13.0/pkgconfig/meson.build      2021-09-16 23:57:25.000000000 
+0200
+++ new/libva-2.14.0/pkgconfig/meson.build      2022-02-16 16:26:40.000000000 
+0100
@@ -1,39 +1,50 @@
-pkgconf = configuration_data()
+pkg = import('pkgconfig')
 
-pkgconf.set('prefix', get_option('prefix'))
-pkgconf.set('exec_prefix', '${prefix}')
-pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir')))
-pkgconf.set('includedir', join_paths(get_option('prefix'), 
get_option('includedir')))
-pkgconf.set('LIBVA_VERSION', libva_version)
-pkgconf.set('VA_API_VERSION', va_api_version)
-pkgconf.set('LIBVA_DRIVERS_PATH', driverdir)
+vars = ['libva_version=' + libva_version, 'va_api_version=' + va_api_version]
 
-pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
-
-pkg_files = [ 'libva' ]
+va_vars = vars + ['driverdir=' + driverdir]
+pkg.generate(libva,
+  description: 'Userspace Video Acceleration (VA) core interface',
+  filebase: 'libva',
+  variables: va_vars,
+  version: va_api_version)
 
 if WITH_DRM
-  pkg_files += [ 'libva-drm' ]
+  drm_vars = vars + ['display=drm']
+  pkg.generate(libva_drm,
+    description: 'Userspace Video Acceleration (VA) DRM interface',
+    filebase: 'libva-drm',
+    requires: 'libva',
+    variables: drm_vars,
+    version: va_api_version)
 endif
 
 if WITH_X11
-  pkg_files += [ 'libva-x11' ]
+  x11_vars = vars + ['display=x11']
+  pkg.generate(libva_x11,
+    description: 'Userspace Video Acceleration (VA) X11 interface',
+    filebase: 'libva-x11',
+    requires: 'libva',
+    variables: x11_vars,
+    version: va_api_version)
 endif
 
 if WITH_GLX
-  pkg_files += [ 'libva-glx' ]
+  glx_vars = vars + ['display=glx']
+  pkg.generate(libva_glx,
+    description: 'Userspace Video Acceleration (VA) GLX interface',
+    filebase: 'libva-glx',
+    requires: 'libva',
+    variables: glx_vars,
+    version: va_api_version)
 endif
 
 if WITH_WAYLAND
-  pkg_files += [ 'libva-wayland' ]
+  wayland_vars = vars + ['display=wayland']
+  pkg.generate(libva_wayland,
+    description: 'Userspace Video Acceleration (VA) Wayland interface',
+    filebase: 'libva-wayland',
+    requires: 'libva, wayland-client',
+    variables: wayland_vars,
+    version: va_api_version)
 endif
-
-foreach p : pkg_files
-  infile = p + '.pc.in'
-  outfile = p + '.pc'
-  configure_file(
-    input : infile,
-    output : outfile,
-    configuration : pkgconf,
-    install_dir : pkg_install_dir)
-endforeach
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/Makefile.am 
new/libva-2.14.0/va/Makefile.am
--- old/libva-2.13.0/va/Makefile.am     2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/va/Makefile.am     2022-02-16 16:26:40.000000000 +0100
@@ -60,6 +60,7 @@
        va_enc_mpeg2.h          \
        va_fei_hevc.h           \
        va_enc_vp9.h            \
+       va_enc_av1.h            \
        va_str.h                \
        va_tpi.h                \
        va_version.h            \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/meson.build 
new/libva-2.14.0/va/meson.build
--- old/libva-2.13.0/va/meson.build     2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/va/meson.build     2022-02-16 16:26:40.000000000 +0100
@@ -39,6 +39,7 @@
   'va_fei_hevc.h',
   'va_enc_mpeg2.h',
   'va_enc_vp9.h',
+  'va_enc_av1.h',
   'va_str.h',
   'va_tpi.h',
   'va_prot.h',
@@ -46,6 +47,9 @@
   version_file,
 ]
 
+# headers that have be copied for subprojects
+libva_headers_subproject = []
+
 libva_headers_priv = [
   'sysdeps.h',
   'va_fool.h',
@@ -88,6 +92,8 @@
     'drm/va_drm.h',
   ]
 
+  libva_headers_subproject += libva_drm_headers
+
   libva_drm_headers_priv = [
     'drm/va_drm_auth.h',
     'drm/va_drm_auth_x11.h',
@@ -134,12 +140,15 @@
     'x11/va_x11.c',
   ]
 
-  libva_x11_headers = [
-    'va_x11.h',
+  libva_dri_headers = [
     'x11/va_dri2.h',
     'x11/va_dricommon.h',
   ]
 
+  libva_x11_headers = ['va_x11.h'] + libva_dri_headers
+
+  libva_headers_subproject += libva_dri_headers
+
   libva_x11_headers_priv = [
     'x11/va_dri2str.h',
     'x11/va_dri2tokens.h',
@@ -178,6 +187,8 @@
     'glx/va_glx.h',
   ]
 
+  libva_headers_subproject += libva_glx_headers
+
   libva_glx_headers_priv = [
     'glx/va_glx_impl.h',
     'glx/va_glx_private.h',
@@ -216,6 +227,8 @@
     'wayland/va_wayland.h',
   ]
 
+  libva_headers_subproject += libva_wayland_headers
+
   libva_wayland_headers_priv = [
     'wayland/va_wayland_drm.h',
     'wayland/va_wayland_emgd.h',
@@ -256,3 +269,8 @@
     include_directories : configinc,
     dependencies : deps)
 endif
+
+fs = import('fs')
+foreach header : libva_headers_subproject
+  configure_file(output: fs.name(header), input: header, copy: true)
+endforeach
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/va.h new/libva-2.14.0/va/va.h
--- old/libva-2.13.0/va/va.h    2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/va/va.h    2022-02-16 16:26:40.000000000 +0100
@@ -119,6 +119,7 @@
  *  - \ref api_enc_mpeg2
  *  - \ref api_enc_vp8
  *  - \ref api_enc_vp9
+ *  - \ref api_enc_av1
  * - Decoder (HEVC, JPEG, VP8, VP9, AV1)
  *      - \ref api_dec_hevc
  *      - \ref api_dec_jpeg
@@ -996,6 +997,30 @@
      * support the VAConfigAttribEncHEVCFeatures attribute.
      */
     VAConfigAttribEncHEVCBlockSizes     = 51,
+    /**
+     * \brief AV1 encoding attribute. Read-only.
+     *
+     * This attribute exposes a number of capabilities of the underlying
+     * AV1 implementation. The attribute value is partitioned into fields as 
defined in the
+     * VAConfigAttribValEncAV1 union.
+     */
+    VAConfigAttribEncAV1                = 52,
+    /**
+     * \brief AV1 encoding attribute extend1. Read-only.
+     *
+     * This attribute exposes a number of capabilities of the underlying
+     * AV1 implementation. The attribute value is partitioned into fields as 
defined in the
+     * VAConfigAttribValEncAV1Ext1 union.
+     */
+    VAConfigAttribEncAV1Ext1            = 53,
+    /**
+     * \brief AV1 encoding attribute extend2. Read-only.
+     *
+     * This attribute exposes a number of capabilities of the underlying
+     * AV1 implementation. The attribute value is partitioned into fields as 
defined in the
+     * VAConfigAttribValEncAV1Ext2 union.
+     */
+    VAConfigAttribEncAV1Ext2            = 54,
     /**@}*/
     VAConfigAttribTypeMax
 } VAConfigAttribType;
@@ -5191,6 +5216,7 @@
 #include <va/va_enc_mpeg2.h>
 #include <va/va_enc_vp8.h>
 #include <va/va_enc_vp9.h>
+#include <va/va_enc_av1.h>
 #include <va/va_fei.h>
 #include <va/va_fei_h264.h>
 #include <va/va_vpp.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/va_drmcommon.h 
new/libva-2.14.0/va/va_drmcommon.h
--- old/libva-2.13.0/va/va_drmcommon.h  2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/va/va_drmcommon.h  2022-02-16 16:26:40.000000000 +0100
@@ -116,6 +116,10 @@
  * support NV12 surfaces when they are contained within a single DRM
  * object, and therefore fail to create such surfaces if the two
  * planes are in different DRM objects.
+ * Note that backend driver will retrieve the resource represent by fd,
+ * and a valid surface ID is generated. Backend driver will not close
+ * the file descriptor. Application should handle the release of the fd.
+ * releasing the fd will not impact the existence of the surface.
  */
 typedef struct _VADRMPRIMESurfaceDescriptor {
     /** Pixel format fourcc of the whole surface (VA_FOURCC_*). */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/va_enc_av1.h 
new/libva-2.14.0/va/va_enc_av1.h
--- old/libva-2.13.0/va/va_enc_av1.h    1970-01-01 01:00:00.000000000 +0100
+++ new/libva-2.14.0/va/va_enc_av1.h    2022-02-16 16:26:40.000000000 +0100
@@ -0,0 +1,986 @@
+/*
+ * Copyright (c) 2021 Intel Corporation. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file va_enc_av1.h
+ * \brief AV1 encoding API
+ *
+ * This file contains the \ref api_enc_av1 "AV1 encoding API".
+ *
+ */
+
+#ifndef VA_ENC_AV1_H
+#define VA_ENC_AV1_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+/**
+ * \defgroup api_enc_av1 AV1 encoding API
+ *
+ * This AV1 encoding API supports 8-bit/10bit 420 format only.
+ *
+ * @{
+ */
+
+/** \brief Attribute value for VAConfigAttribEncAV1.
+ *
+ * This attribute decribes the supported features of an AV1
+ * encoder configuration.
+ *
+ * All of the field values in this attribute are VA_FEATURE_* values,
+ * indicating support for the corresponding feature.
+ *
+ */
+typedef union _VAConfigAttribValEncAV1 {
+    struct {
+        /**
+         * \brief Use 128x128 superblock.
+         *
+         * Allows setting use_128x128_superblock in the SPS.
+         */
+        uint32_t support_128x128_superblock     : 2;
+        /**
+         * \brief Intra  filter.
+         * Allows setting enable_filter_intra in the SPS.
+         */
+        uint32_t support_filter_intra           : 2;
+        /**
+         * \brief  Intra edge filter.
+         * Allows setting enable_intra_edge_filter in the SPS.
+         */
+        uint32_t support_intra_edge_filter      : 2;
+        /**
+         * \brief  Interintra compound.
+         * Allows setting enable_interintra_compound in the SPS.
+         */
+        uint32_t support_interintra_compound    : 2;
+        /**
+         * \brief  Masked compound.
+         * Allows setting enable_masked_compound in the SPS.
+         */
+        uint32_t support_masked_compound        : 2;
+        /**
+         * \brief  Warped motion.
+         * Allows setting enable_warped_motion in the SPS.
+         */
+        uint32_t support_warped_motion          : 2;
+        /**
+         * \brief  Palette mode.
+         * Allows setting palette_mode in the PPS.
+         */
+        uint32_t support_palette_mode           : 2;
+        /**
+         * \brief  Dual filter.
+         * Allows setting enable_dual_filter in the SPS.
+         */
+        uint32_t support_dual_filter            : 2;
+        /**
+         * \brief  Jnt compound.
+         * Allows setting enable_jnt_comp in the SPS.
+         */
+        uint32_t support_jnt_comp               : 2;
+        /**
+         * \brief  Refrence frame mvs.
+         * Allows setting enable_ref_frame_mvs in the SPS.
+         */
+        uint32_t support_ref_frame_mvs          : 2;
+        /**
+         * \brief  Super resolution.
+         * Allows setting enable_superres in the SPS.
+         */
+        uint32_t support_superres               : 2;
+        /**
+         * \brief  Restoration.
+         * Allows setting enable_restoration in the SPS.
+         */
+        uint32_t support_restoration            : 2;
+        /**
+         * \brief  Allow intraBC.
+         * Allows setting allow_intrabc in the PPS.
+         */
+        uint32_t support_allow_intrabc          : 2;
+        /**
+         * \brief  Cdef channel strength.
+         * Allows setting cdef_y_strengths and cdef_uv_strengths in PPS.
+         */
+        uint32_t support_cdef_channel_strength  : 2;
+        /** \brief Reserved bits for future, must be zero. */
+        uint32_t reserved                       : 4;
+    } bits;
+    uint32_t value;
+} VAConfigAttribValEncAV1;
+
+/** \brief Attribute value for VAConfigAttribEncAV1Ext1. */
+typedef union _VAConfigAttribValEncAV1Ext1 {
+    struct {
+        /**
+         * \brief Fields indicate which types of interpolation filter are 
supported.
+         * (interpolation_filter & 0x01) == 1: eight_tap filter is supported, 
0: not.
+         * (interpolation_filter & 0x02) == 1: eight_tap_smooth filter is 
supported, 0: not.
+         * (interpolation_filter & 0x04) == 1: eight_sharp filter is 
supported, 0: not.
+         * (interpolation_filter & 0x08) == 1: bilinear filter is supported, 
0: not.
+         * (interpolation_filter & 0x10) == 1: switchable filter is supported, 
0: not.
+         */
+        uint32_t interpolation_filter          : 5;
+        /**
+         * \brief Min segmentId block size accepted.
+         * Application need to send seg_id_block_size in PPS equal or larger 
than this value.
+         */
+        uint32_t min_segid_block_size_accepted : 8;
+        /**
+         * \brief Type of segment feature supported.
+         * (segment_feature_support & 0x01) == 1: SEG_LVL_ALT_Q is supported, 
0: not.
+         * (segment_feature_support & 0x02) == 1: SEG_LVL_ALT_LF_Y_V is 
supported, 0: not.
+         * (segment_feature_support & 0x04) == 1: SEG_LVL_ALT_LF_Y_H is 
supported, 0: not.
+         * (segment_feature_support & 0x08) == 1: SEG_LVL_ALT_LF_U is 
supported, 0: not.
+         * (segment_feature_support & 0x10) == 1: SEG_LVL_ALT_LF_V is 
supported, 0: not.
+         * (segment_feature_support & 0x20) == 1: SEG_LVL_REF_FRAME is 
supported, 0: not.
+         * (segment_feature_support & 0x40) == 1: SEG_LVL_SKIP is supported, 
0: not.
+         * (segment_feature_support & 0x80) == 1: SEG_LVL_GLOBALMV is 
supported, 0: not.
+         */
+        uint32_t segment_feature_support       : 8;
+        /** \brief Reserved bits for future, must be zero. */
+        uint32_t reserved                      : 11;
+    } bits;
+    uint32_t value;
+} VAConfigAttribValEncAV1Ext1;
+
+/** \brief Attribute value for VAConfigAttribEncAV1Ext2. */
+typedef union _VAConfigAttribValEncAV1Ext2 {
+    struct {
+        /**
+        * \brief Tile size bytes minus1.
+        * Specify the number of bytes needed to code tile size supported.
+        * This value need to be set in frame header obu.
+        */
+        uint32_t tile_size_bytes_minus1        : 2;
+        /**
+        * \brief Tile size bytes minus1.
+        * Specify the fixed number of bytes needed to code syntax obu_size.
+        */
+        uint32_t obu_size_bytes_minus1         : 2;
+        /**
+         * \brief tx_mode supported.
+         * (tx_mode_support & 0x01) == 1: ONLY_4X4 is supported, 0: not.
+         * (tx_mode_support & 0x02) == 1: TX_MODE_LARGEST is supported, 0: not.
+         * (tx_mode_support & 0x04) == 1: TX_MODE_SELECT is supported, 0: not.
+         */
+        uint32_t tx_mode_support               : 3;
+        /**
+         * \brief Max tile num minus1.
+         * Specify the max number of tile supported by driver.
+         */
+        uint32_t max_tile_num_minus1           : 13;
+        /** \brief Reserved bits for future, must be zero. */
+        uint32_t reserved                      : 12;
+    } bits;
+    uint32_t value;
+} VAConfigAttribValEncAV1Ext2;
+
+/**
+ * \brief Packed header types specific to AV1 encoding.
+ *
+ * Types of packed headers generally used for AV1 encoding.
+ *
+ */
+typedef enum {
+    /**
+     * \brief Packed Sequence Parameter Set (SPS).
+     *
+     * The corresponding packed header data buffer shall contain the
+     * complete sequence_header_obu() syntax element.
+     *
+     */
+    VAEncPackedHeaderAV1_SPS = VAEncPackedHeaderSequence,
+    /**
+     * \brief Packed Picture Parameter Set (PPS).
+     *
+     * The corresponding packed header data buffer shall contain the
+     * complete frame_header_obu() syntax element.
+     *
+     */
+    VAEncPackedHeaderAV1_PPS = VAEncPackedHeaderPicture,
+} VAEncPackedHeaderTypeAV1;
+
+/**
+ * \brief AV1 Encoding Sequence Parameter Buffer Structure.
+ *
+ * This structure conveys sequence level parameters.
+ *
+ */
+typedef struct  _VAEncSequenceParameterBufferAV1 {
+    /** \brief AV1 profile setting.
+     *  value range [0..2].
+     */
+    uint8_t     seq_profile;
+
+    /** \brief Level Setting of current operation point.
+     *  value range [0..23].
+     */
+    uint8_t     seq_level_idx;
+
+    /** \brief Tier Setting of current operation point.
+     *  value range [0..1].
+     */
+    uint8_t     seq_tier;
+
+    uint8_t     reserved8b;
+
+    /** \brief Period between intra_only frames. */
+    uint32_t    intra_period;
+
+    /** \brief Period between I/P frames.
+     *  For hierarchical structure, this is the anchor frame distance.
+     */
+    uint32_t    ip_period;
+
+    /* \brief RC related fields. RC modes are set with 
VAConfigAttribRateControl. */
+    /* For AV1, CBR implies HRD conformance and VBR implies no HRD 
conformance. */
+
+    /**
+     * \brief Initial bitrate set for this sequence in CBR or VBR modes.
+     *
+     * This field represents the initial bitrate value for CBR mode or
+     * initial max bitrate value for VBR mode in this sequence.
+     * i.e. if the encoder pipeline was created with a 
#VAConfigAttribRateControl
+     * attribute set to either \ref VA_RC_CBR or \ref VA_RC_VBR.
+     *
+     * The bitrate can be modified later on through
+     * #VAEncMiscParameterRateControl buffers.
+     */
+    uint32_t    bits_per_second;
+
+    union {
+        struct {
+            /** \brief Still picture encoding, no inter frame referencing. */
+            uint32_t    still_picture                               : 1;
+            /** \brief Force using 128x128 or 64x64 Supper block */
+            uint32_t    use_128x128_superblock                      : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_filter_intra                         : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_intra_edge_filter                    : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_interintra_compound                  : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_masked_compound                      : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_warped_motion                        : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_dual_filter                          : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_order_hint                           : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_jnt_comp                             : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_ref_frame_mvs                        : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_superres                             : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_cdef                                 : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    enable_restoration                          : 1;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint32_t    reserved_bits                               : 18;
+        } bits;
+        uint32_t value;
+    } seq_fields;
+
+    /** \brief Corresponds to AV1 syntax element of the same name.
+     *  value range [0..7].
+     */
+    uint8_t     order_hint_bits_minus_1;
+
+    /** \brief Reserved bytes for future use, must be zero */
+    uint32_t                va_reserved[VA_PADDING_HIGH];
+} VAEncSequenceParameterBufferAV1;
+
+#define VA_AV1_MAX_SEGMENTS    8
+#define VA_AV1_SEG_LVL_MAX     8
+
+/**
+ * \brief Segment parameters
+ */
+typedef struct _VAEncSegParamAV1 {
+    union {
+        struct {
+            /** \brief Indicates if segmentation is enabled in the current 
frame.
+             *  If disabled, all the below parameters in the structure should
+             *  be set to 0, and ignored by driver.
+             */
+            uint8_t     segmentation_enabled            : 1;
+
+            /**
+             *  When segmentation_enabled equals 1 and segment_number > 0,
+             *  this parameter equals 1 indicates the segmentation map may
+             *  come from application, and that "Segment map data buffer"
+             *  should be provided with populated segment_id. If equals 0,
+             *  segmentation map should be inherited from a reference frame
+             *  (specified by \c primary_ref_frame). When segmentation_enabled 
or
+             *  segment_number equals 0, this parameter should be set to 0
+             *  and ignored by driver.
+             */
+            uint8_t     segmentation_update_map         : 1;
+            /**
+             * When segmentation_update_map equals 1, this parameter equaling 1
+             * indicates segment id per block will be determined either from
+             * reference frame or from app. Equaling 0 means segment id per 
block
+             * will come from app. When segmentation_temporal_update equals 0,
+             * this parameter should be set to 0 and ignored by driver.
+            */
+            uint8_t     segmentation_temporal_update    : 1;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint8_t     reserved                        : 5;
+
+        } bits;
+        uint8_t value;
+    } seg_flags;
+
+    /**
+     *  If segmentation_enabled equals 1, this parameter indicates
+     *  the number of segments conveyed through VAAPI. In this case,
+     *  if segment_number equals 0, it will force the driver to determine
+     *  how many segments would be created as well as the segmentation map
+     *  to be generated. Also the driver shall write the segmentation_params()
+     *  syntax in the uncompressed header at \c bit_offset_segmentation 
(back-annotation).
+     *  In application, the rest parameters in this structure should be all
+     *  set to 0 and ignored by driver. And app should NOT send the
+     *  "Segment map data buffer". In packed uncompressed header
+     *  bitstream, app should write syntax element segmentation_enabled
+     *  as 0 and segmentation_params() should be only 1-bit-long.
+     *  If segment_number > 0, and segmentation_update_map = 1, app should 
provide
+     *  the "Segment map data buffer" and populate the rest of the
+     *  current data structure. And that underline encoder would honor
+     *  the segmentation parameters feature_data[0..segment_number-1][]
+     *  and feature_mask[0..segment_number-1], etc.
+     *  Value range [0..8].
+     */
+    uint8_t      segment_number;
+
+    /** \brief segment parameters.
+     *  feature_data[][] is equivalent to variable FeatureData[][] in spec,
+     *  which is after clip3() operation.
+     *  Clip3(x, y, z) = (z<x)? x : ((z > y)? y : z);
+     *  The limit is defined in Segmentation_Feature_Max[ SEG_LVL_MAX ] = {
+     *  255, MAX_LOOP_FILTER, MAX_LOOP_FILTER, MAX_LOOP_FILTER,
+     *  MAX_LOOP_FILTER, 7, 0, 0 }
+     */
+    int16_t     feature_data[VA_AV1_MAX_SEGMENTS][VA_AV1_SEG_LVL_MAX];
+
+    /** \brief Bit field to indicate each feature is enabled or not per
+     *  segment_id. Each bit is the feature_id.
+     */
+    uint8_t     feature_mask[VA_AV1_MAX_SEGMENTS];
+
+    /** \brief Reserved bytes for future use, must be zero. */
+    uint32_t                va_reserved[VA_PADDING_LOW];
+} VAEncSegParamAV1;
+
+/**
+ * \brief Segment map data buffer.
+ *
+ * This buffer is optional depending on the value of 
av1_segments.segmentation_enabled.
+ * If av1_segments.segmentation_enabled in the picture parameters equals 1,
+ * and RateControlMethod is not CQP and this surface is not provided by App,
+ * the encoder will determine the per block segmentation map. In this case,
+ * App should not provide the segmentation parameter data structure
+ * in frame header as well. If av1_segments.segmentation_enabled equals 1
+ * and the segmentation map buffer is provided, app should embed the
+ * segmentation info in frame header, populate the VAEncSegParamAV1 structure 
with
+ * #VAEncMacroblockMapBufferType and the driver as well as the underline 
encoder
+ * should honor what is given by the app.
+ */
+typedef struct _VAEncSegMapBufferAV1 {
+    /** \brief Segment map data size. */
+    uint32_t    segmentMapDataSize;
+
+    /**
+     * \brief Segment map.
+     * Size of this map is indicated by \ref segmentMapDataSize and each 
element
+        * in this map contains the segment id of a particular block.
+     * The element is indexed by raster scan order.
+     * The value of each entry should be in the range [0..7], inclusive.
+     */
+    uint8_t    *pSegmentMap;
+} VAEncSegMapBufferAV1;
+
+typedef enum {
+    /** \brief Identity transformation, 0-parameter. */
+    VAAV1EncTransformationIdentity           = 0,
+    /** \brief Translational motion, 2-parameter. */
+    VAAV1EncTransformationTranslation        = 1,
+    /** \brief Simplified affine with rotation + zoom only, 4-parameter. */
+    VAAV1EncTransformationRotzoom            = 2,
+    /** \brief Affine, 6-parameter. */
+    VAAV1EncTransformationAffine             = 3,
+    /** \brief Transformation count. */
+    VAAV1EncTransformationCount
+} VAEncTransformationTypeAV1;
+
+typedef struct _VAEncWarpedMotionParamsAV1{
+
+    /** \brief Specify the type of warped motion. */
+    VAEncTransformationTypeAV1  wmtype;
+
+    /** \brief Specify warp motion parameters.
+     *  wm.wmmat[] corresponds to gm_params[][] in spec.
+     *  Details in AV1 spec section 5.9.24 or refer to libaom code
+     *  
https://aomedia.googlesource.com/aom/+/refs/heads/master/av1/decoder/decodeframe.c.
+     */
+    int32_t                 wmmat[8];
+
+    /** \brief Valid or invalid on affine set. */
+    uint8_t                 invalid;
+
+    /** \brief Reserved bytes for future use, must be zero. */
+    uint32_t                va_reserved[VA_PADDING_LOW];
+
+} VAEncWarpedMotionParamsAV1;
+
+/**
+ * \brief Reference frame control.
+ *
+ * Suggest which frame to be used as reference along with preferred search 
order.
+ *
+ * search_idx#: index into ref_frame_idx[] to indicate that frame will be 
included
+ * in the reference list if value in range [1..7]. Invalid when value is 0.
+ * The order of the search_idx# indicates the preferred search order.
+ *
+ */
+typedef union {
+       struct
+       {
+        /**
+         * \brief Value used as index into ref_frame_idx[] to indicate that 
frame
+         * will be included in the reference list.
+         * valid value range: [1..7], invalid when value is 0.
+         */
+        uint32_t search_idx0 : 3;
+        /**
+         * \brief Value used as index into ref_frame_idx[] to indicate that 
frame
+         * will be included in the reference list.
+         * valid value range: [1..7], invalid when value is 0.
+         */
+        uint32_t search_idx1 : 3;
+        /**
+         * \brief Value used as index into ref_frame_idx[] to indicate that 
frame
+         * will be included in the reference list.
+         * valid value range: [1..7], invalid when value is 0.
+         */
+        uint32_t search_idx2 : 3;
+        /**
+         * \brief Value used as index into ref_frame_idx[] to indicate that 
frame
+         * will be included in the reference list.
+         * valid value range: [1..7], invalid when value is 0.
+         */
+        uint32_t search_idx3 : 3;
+        /**
+         * \brief Value used as index into ref_frame_idx[] to indicate that 
frame
+         * will be included in the reference list.
+         * valid value range: [1..7], invalid when value is 0.
+         */
+        uint32_t search_idx4 : 3;
+        /**
+         * \brief Value used as index into ref_frame_idx[] to indicate that 
frame
+         * will be included in the reference list.
+         * valid value range: [1..7], invalid when value is 0.
+         */
+        uint32_t search_idx5 : 3;
+        /**
+         * \brief Value used as index into ref_frame_idx[] to indicate that 
frame
+         * will be included in the reference list.
+         * valid value range: [1..7], invalid when value is 0.
+         */
+        uint32_t search_idx6 : 3;
+
+        /** \brief Reserved bytes for future use, must be zero. */
+        uint32_t Reserved    : 11;
+       } fields;
+       uint32_t value;
+} VARefFrameCtrlAV1;
+
+/**
+ * \brief AV1 Encoding Picture Parameter Buffer Structure.
+ *
+ * This structure conveys picture level parameters.
+ *
+ */
+typedef struct  _VAEncPictureParameterBufferAV1
+{
+    /** \brief AV1 encoder may support SupRes and dynamic scaling function.
+     *  For SupRes, underline encoder is responsible to do downscaling.
+     *  For dynamic scaling, app should provide the scaled raw source.
+     */
+    /** \brief Raw source frame width in pixels. */
+    uint16_t    frame_width_minus_1;
+    /** \brief Raw source frame height in pixels. */
+    uint16_t    frame_height_minus_1;
+
+    /** \brief Surface to store reconstructed frame, not used for enc only 
case. */
+    VASurfaceID reconstructed_frame;
+
+    /** \brief Buffer to store coded data. */
+    VABufferID  coded_buf;
+
+    /** \brief Reference frame buffers.
+     *  Each entry of the array specifies the surface index of the picture
+     *  that is referred by current picture or will be referred by any future
+     *  picture. The valid entries take value from 0 to 127, inclusive.
+     *  Non-valid entries, those do not point to pictures which are referred
+     *  by current picture or future pictures, should take value 0xFF.
+     *  Other values are not allowed.
+     *
+     *  Application should update this array based on the refreshing
+     *  information expected.
+     */
+    VASurfaceID reference_frames[8];
+
+    /** \brief Reference index list.
+     *  Contains a list of indices into refernce_frames[].
+     *  Indice with refernce frames range: [LAST_FRAME - LAST_FRAME,
+     *  LAST2_FRAME - LAST_FRAME, ..., ALTREF2_FRAME - LAST_FRAME].
+     *  #define LAST_FRAME 1
+     *  #define LAST2_FRAME 2
+     *  #define LAST3_FRAME 3
+     *  #define GOLDEN_FRAME 4
+     *  #define BWDREF_FRAME 5
+     *  #define ALTREF_FRAME 6
+     *  #define ALTREF2_FRAME 7
+     *  value range [0..7].
+     */
+    uint8_t     ref_frame_idx[7];
+
+    uint8_t     reserved8bits0;
+
+    /** \brief primary reference frame.
+     *  Index into reference_frames[]
+     *  segment id map, context table, etc. come from the reference
+     *  frame pointed by this index.
+     *  value range [0..7].
+     */
+    uint8_t     primary_ref_frame;
+
+    /** \brief Corresponds to AV1 syntax element of the same name. */
+    uint8_t     order_hint;
+
+    uint16_t    reserved16bits0;
+
+    /** \brief Suggest which frames to be used as references.
+     *  see struct #VARefFrameCtrl for details.
+     */
+    VARefFrameCtrlAV1     ref_frame_ctrl_l0;
+    VARefFrameCtrlAV1     ref_frame_ctrl_l1;
+
+    union {
+        struct {
+            /** \brief frame type.
+             *  0:  key_frame.
+             *  1:  inter_frame.
+             *  2:  intra_only frame.
+             *  3:  switch_frame (app needs to set error_resilient_mode = 1,
+             *      refresh_frame_flags, etc approperately.).
+             */
+            uint32_t    frame_type                      : 2;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    error_resilient_mode            : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    disable_cdf_update              : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    use_superres                    : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    allow_high_precision_mv         : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    use_ref_frame_mvs               : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    disable_frame_end_update_cdf    : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    reduced_tx_set                  : 1;
+
+            /** \brief For single tile group, app may choose to use one frame 
obu
+             *  to replace one frame header obu + one tile group obu.
+             *  Invalid if num_tile_groups_minus1 > 0.
+             */
+            uint32_t    enable_frame_obu                : 1;
+
+            /** \brief Indicate the current frame will be used as a long term 
reference. */
+            uint32_t    long_term_reference             : 1;
+            /** \brief If the encoded frame will not be referred by other 
frames,
+             * its recon may not be generated in order to save memory 
bandwidth.
+             */
+            uint32_t    disable_frame_recon             : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint32_t    allow_intrabc                   : 1;
+            /** \brief Equal to 1 indicates that intra blocks may use palette 
encoding.
+             * Otherwise disable palette encoding.
+             */
+            uint32_t    palette_mode_enable             : 1;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint32_t    reserved                        : 18;
+        } bits;
+        uint32_t value;
+    } picture_flags;
+
+    /** \brief Block size for each Segment ID in Segment Map.
+     *  0: 16x16 block size, default value;
+     *  1: 32x32 block size;
+     *  2: 64x64 block size;
+     *  3: 8x8 block size.
+     */
+    uint8_t     seg_id_block_size;
+
+    /** \brief Number of tile groups minus 1.
+     *  value range [0..255].
+     */
+    uint8_t     num_tile_groups_minus1;
+
+    /** \brief Temporal id of the frame.*/
+    uint8_t     temporal_id;
+
+    /** \brief Deblock filter parameters.
+     *  value range [0..63].
+     */
+    uint8_t     filter_level[2];
+    uint8_t     filter_level_u;
+    uint8_t     filter_level_v;
+
+    union {
+        struct {
+            /** \brief Sharpness level for deblock filter.
+             *  value range [0..7].
+             */
+            uint8_t     sharpness_level                 : 3;
+            uint8_t     mode_ref_delta_enabled          : 1;
+            uint8_t     mode_ref_delta_update           : 1;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint8_t     reserved                        : 3;
+        } bits;
+        uint8_t    value;
+    } loop_filter_flags;
+
+    /** \brief Super resolution scale denominator.
+     *  value range [9..16].
+     */
+    uint8_t     superres_scale_denominator;
+    /** \brief Corresponds to AV1 syntax element of the same name. */
+    uint8_t     interpolation_filter;
+
+    /** \brief Loop filter ref deltas.
+     *  value range [-63..63].
+     */
+    int8_t      ref_deltas[8];
+
+    /** \brief Loop filter mode deltas.
+     *  value range [-63..63].
+     */
+    int8_t      mode_deltas[2];
+
+    /** \brief Quantization params. */
+    uint8_t     base_qindex;
+    int8_t      y_dc_delta_q;
+    int8_t      u_dc_delta_q;
+    int8_t      u_ac_delta_q;
+    int8_t      v_dc_delta_q;
+    int8_t      v_ac_delta_q;
+
+    /** \brief Min value for base q index for BRC.
+     *  value range [1..255].
+     */
+    uint8_t     min_base_qindex;
+
+    /** \brief Max value for base q index for BRC.
+     *  value range [1..255].
+     */
+    uint8_t     max_base_qindex;
+
+    /** \brief Quantization matrix. */
+    union {
+        struct {
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint16_t    using_qmatrix                   : 1;
+            /** \brief Following parameters only valid when using_qmatrix == 
1. */
+            uint16_t    qm_y                            : 4;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint16_t    qm_u                            : 4;
+            /** \brief Corresponds to AV1 syntax element of the same name. */
+            uint16_t    qm_v                            : 4;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint16_t    reserved                        : 3;
+        } bits;
+        uint16_t    value;
+    } qmatrix_flags;
+
+    uint16_t reserved16bits1;
+
+    union {
+        struct {
+            /** \brief Specify whether quantizer index delta values are 
present.
+             *  value range [0..1]. */
+            uint32_t    delta_q_present                 : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..3]. */
+            uint32_t    delta_q_res                     : 2;
+
+            /** \brief Specify whether loop filter delta values are present.
+             *  value range [0..1]. */
+            uint32_t    delta_lf_present                : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..3]. */
+            uint32_t    delta_lf_res                    : 2;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..1]. */
+            uint32_t    delta_lf_multi                  : 1;
+
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  0: ONLY_4X4;
+             *  1: TX_MODE_LARGEST;
+             *  2: TX_MODE_SELECT;
+             *  3: Invalid.
+             */
+            uint32_t    tx_mode                         : 2;
+
+            /** \brief Indicates whether to use single or compound reference 
prediction.
+             *  0: SINGLE_REFERENCE;
+             *  1: COMPOUND_REFERENCE;
+             *  2: REFERENCE_MODE_SELECT.
+             *  3: Invalid.
+             *
+             *  Value 2 means driver make decision to use single reference or 
compound reference.
+             */
+            uint32_t    reference_mode                  : 2;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..1].
+             */
+            uint32_t    skip_mode_present               : 1;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint32_t    reserved                        : 20;
+        } bits;
+        uint32_t    value;
+    } mode_control_flags;
+
+    /** \brief Segmentation parameters. */
+    VAEncSegParamAV1    segments;
+
+    /** \brief Number of tile columns. */
+    uint8_t     tile_cols;
+    /** \brief Number of tile rows. */
+    uint8_t     tile_rows;
+
+    uint16_t    reserved16bits2;
+
+    /** \brief The last tile column or row size needs to be derived. */
+    uint16_t    width_in_sbs_minus_1[63];
+    uint16_t    height_in_sbs_minus_1[63];
+
+    /** \brief specify which tile to use for the CDF update.
+     *  value range [0..127]*/
+    uint16_t     context_update_tile_id;
+
+    /** \brief Corresponds to AV1 syntax element of the same name.
+     *  value range [0..3].
+     */
+    uint8_t     cdef_damping_minus_3;
+    /** \brief Corresponds to AV1 syntax element of the same name.
+     *  value range [0..3].
+     */
+    uint8_t     cdef_bits;
+    /** \brief CDEF Y strengths.
+     *  value range [0..63]*/
+    uint8_t     cdef_y_strengths[8];
+    /** \brief CDEF UV strengths.
+     *  value range [0..63]*/
+    uint8_t     cdef_uv_strengths[8];
+
+    union {
+        struct {
+            /** \brief Restoration type for Y frame.
+             *  value range [0..3].
+             */
+            uint16_t    yframe_restoration_type         : 2;
+            /** \brief Restoration type for Cb frame.
+             *  value range [0..3].
+             */
+            uint16_t    cbframe_restoration_type        : 2;
+            /** \brief Restoration type for Cr frame.
+             *  value range [0..3].
+             */
+            uint16_t    crframe_restoration_type        : 2;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..2].
+             */
+            uint16_t    lr_unit_shift                   : 2;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..1].
+             */
+            uint16_t    lr_uv_shift                     : 1;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint16_t    reserved                        : 7;
+        } bits;
+        uint16_t    value;
+    } loop_restoration_flags;
+
+    /** \brief Global motion. */
+    VAEncWarpedMotionParamsAV1    wm[7];
+
+    /**
+     *  Offset in bits for syntax base_q_idx in packed frame header bit stream
+     *  from the start of the packed header data.
+     *  In BRC mode, this parameter should be set and driver will update 
base_q_idx in
+     *  uncompressed header according to this offset.
+     *  In CQP mode, this parameter should be set to 0 and ignored by driver.
+     */
+    uint32_t    bit_offset_qindex;
+    /**
+     *  Offset in bits for syntax segmentation_enabled of frame header OBU
+     *  in packed frame header bit stream from the start of the packed header 
data.
+     *  Valid only in auto segmentation mode. Other than that, this parameter
+     *  should be set to 0 and ignored by driver.
+     */
+    uint32_t    bit_offset_segmentation;
+    /**
+     *  Offset in bits for syntax loop_filter_params() in packed frame
+     *  header bit stream from the start of the packed header data.
+     *  In BRC mode, this parameter should be set and driver will update 
filter params
+     *  in packed frame header according to this offset.
+     *  In CQP mode, this parameter should be set to 0 and ignored by driver.
+     */
+    uint32_t    bit_offset_loopfilter_params;
+    /**
+     *  In BRC mode, underline encoder should generate the approperiate
+     *  CDEF values and write back into uncompressed header. And app
+     *  should provide default CDEF values in packed header. This parameter
+     *  should point to the starting bit of cdef_params() syntax structure
+     *  in packed header.
+     *  In CQP mode, this parameter should be set to 0 and ignored by driver.
+     */
+    uint32_t    bit_offset_cdef_params;
+    /**
+     *  In BRC mode, this parameter indicates the actual bit usage of
+     *  cdef_params() syntax structure in packed uncompressed header.
+     *  In CQP mode, this parameter should be set to 0 and ignored by driver.
+     */
+    uint32_t    size_in_bits_cdef_params;
+
+    /**
+     *  Offset in bytes for syntax obu_size of frame header OBU in packed
+     *  frame header bit stream from the start of the packed header. The frame
+     *  header OBU size depends on the encoded tile sizes. It applies to both
+     *  Frame Header OBU and Frame OBU if obu_size needs to be updated by
+     *  underline encoder. Otherwise, app can set it to 0 and ignored by 
driver.
+     *
+     *  In BRC mode, obu_size needs to be updated and this parameter should be 
set.
+     *  In CQP mode, this parameter should be set to 0 and ignored by driver.
+     */
+    uint32_t    byte_offset_frame_hdr_obu_size;
+
+    /**
+     * Frame header OBU bit stream size in bits. The frame header obu packed 
bit
+     * stream contains an obu header, a 4-byte long obu_size field, 
frame_header_obu()
+     * syntax chain, and a trailing bit if not inside a frame obu. If \c 
enable_frame_obu == 1,
+     * the value should include and up to the last bit of frame_header_obu() 
and
+     * excluding the bits generated by byte_alignment(). If \c 
enable_frame_obu == 0,
+     * the value should include and up to the trailing bit at the end of the 
frame
+     * header obu. The size will be used by encoder to calculate the final 
frame
+     * header size after bit shifting due to auto segmentation.
+     * In CQP mode, this parameter should be set to 0 and ignored by driver.
+     */
+    uint32_t    size_in_bits_frame_hdr_obu;
+
+    /** \brief Tile Group OBU header */
+    union {
+        struct {
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..1].
+             */
+            uint8_t     obu_extension_flag              : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..1].
+             */
+            uint8_t     obu_has_size_field              : 1;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..7].
+             */
+            uint8_t     temporal_id                     : 3;
+            /** \brief Corresponds to AV1 syntax element of the same name.
+             *  value range [0..2].
+             */
+            uint8_t     spatial_id                      : 2;
+            /** \brief Reserved bytes for future use, must be zero. */
+            uint8_t     reserved                        : 1;
+        } bits;
+        uint8_t     value;
+    } tile_group_obu_hdr_info;
+
+    /** \brief The number of frames skipped prior to the current frame.
+     *  It includes only the skipped frames that were not counted before.
+     *  App may generate the "show_existing_frame" short frame header OBUs
+     *  and send to driver with the next frame. Default value 0.
+     */
+    uint8_t     number_skip_frames;
+
+    uint16_t    reserved16bits3;
+
+    /** \brief Indicates the application forced frame size change in bytes.
+     * When the value is positive, the frame size is reduced. Otherwise, the 
frame
+     * size increases. The parameter can be used when application skips frames 
with
+     * setting of NumSkipFrames. And application can also use it for other 
scenarios
+     * such as inserting "show_existing_frame" at very end of the sequence.
+     */
+    int32_t    skip_frames_reduced_size;
+
+    /** \brief Reserved bytes for future use, must be zero. */
+    uint32_t    va_reserved[VA_PADDING_HIGH];
+} VAEncPictureParameterBufferAV1;
+
+/**
+ * \brief Tile Group Buffer.
+ */
+typedef struct _VAEncTileGroupBufferAV1 {
+    /** \brief Tile group start location.
+     *  The position of the first tile in current tile group
+     *  in raster scan order across the frame.
+     *  value range [0..127].
+     */
+    uint8_t  tg_start;
+    /** \brief Tile group end location.
+     *  The position of the last tile in current tile group
+     *  in raster scan order across the frame.
+     *  value range [0..127].
+     */
+    uint8_t  tg_end;
+
+    /** \brief Reserved bytes for future use, must be zero. */
+    uint32_t                va_reserved[VA_PADDING_LOW];
+} VAEncTileGroupBufferAV1;
+
+/**@}*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* VA_ENC_AV1_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/va_str.c new/libva-2.14.0/va/va_str.c
--- old/libva-2.13.0/va/va_str.c        2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/va/va_str.c        2022-02-16 16:26:40.000000000 +0100
@@ -144,6 +144,9 @@
         TOSTR(VAConfigAttribProtectedContentUsage);
         TOSTR(VAConfigAttribEncHEVCFeatures);
         TOSTR(VAConfigAttribEncHEVCBlockSizes);
+        TOSTR(VAConfigAttribEncAV1);
+        TOSTR(VAConfigAttribEncAV1Ext1);
+        TOSTR(VAConfigAttribEncAV1Ext2);
     case VAConfigAttribTypeMax:
         break;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/va_trace.c 
new/libva-2.14.0/va/va_trace.c
--- old/libva-2.13.0/va/va_trace.c      2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/va/va_trace.c      2022-02-16 16:26:40.000000000 +0100
@@ -3315,6 +3315,7 @@
     va_TraceMsg(trace_ctx, "\tdelta_pic_order_cnt[1] = %d\n", 
p->delta_pic_order_cnt[1]);
     va_TraceMsg(trace_ctx, "\tdirect_spatial_mv_pred_flag = %d\n", 
p->direct_spatial_mv_pred_flag);
     va_TraceMsg(trace_ctx, "\tnum_ref_idx_active_override_flag = %d\n", 
p->num_ref_idx_active_override_flag);
+    va_TraceMsg(trace_ctx, "\tnum_ref_idx_l0_active_minus1 = %d\n", 
p->num_ref_idx_l0_active_minus1);
     va_TraceMsg(trace_ctx, "\tnum_ref_idx_l1_active_minus1 = %d\n", 
p->num_ref_idx_l1_active_minus1);
     va_TraceMsg(trace_ctx, "\tslice_beta_offset_div2 = %d\n", 
p->slice_beta_offset_div2);
 
@@ -3468,6 +3469,8 @@
         va_TraceMsg(trace_ctx, "\trc_flags.frame_tolerance_mode = %d\n", 
p->rc_flags.bits.frame_tolerance_mode);
         va_TraceMsg(trace_ctx, "\tICQ_quality_factor = %d\n", 
p->ICQ_quality_factor);
         va_TraceMsg(trace_ctx, "\tmax_qp = %d\n", p->max_qp);
+        va_TraceMsg(trace_ctx, "\tquality_factor = %d\n", p->quality_factor);
+        va_TraceMsg(trace_ctx, "\ttarget_frame_size = %d\n", 
p->target_frame_size);
         break;
     }
     case VAEncMiscParameterTypeMaxSliceSize: {
@@ -4027,6 +4030,213 @@
     return;
 }
 
+static void va_TraceVAEncSequenceParameterBufferAV1(
+    VADisplay dpy,
+    VAContextID context,
+    VABufferID buffer,
+    VABufferType type,
+    unsigned int size,
+    unsigned int num_elements,
+    void *data)
+{
+    VAEncSequenceParameterBufferAV1 *p = (VAEncSequenceParameterBufferAV1 
*)data;
+    DPY2TRACECTX(dpy, context, VA_INVALID_ID);
+
+    va_TraceMsg(trace_ctx, "\t--VAEncSequenceParameterBufferAV1\n");
+
+    va_TraceMsg(trace_ctx, "\tseq_profile = %d\n", p->seq_profile);
+    va_TraceMsg(trace_ctx, "\tseq_level_idx = %d\n", p->seq_level_idx);
+    va_TraceMsg(trace_ctx, "\tseq_tier = %d\n", p->seq_tier);
+    va_TraceMsg(trace_ctx, "\tintra_period = %d\n", p->intra_period);
+    va_TraceMsg(trace_ctx, "\tip_period = %d\n", p->ip_period);
+    va_TraceMsg(trace_ctx, "\tbits_per_second = %d\n", p->bits_per_second);
+
+    va_TraceMsg(trace_ctx, "\tseq_fields.still_picture = %d\n", 
p->seq_fields.bits.still_picture);
+    va_TraceMsg(trace_ctx, "\tseq_fields.use_128x128_superblock = %d\n", 
p->seq_fields.bits.use_128x128_superblock);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_filter_intra = %d\n", 
p->seq_fields.bits.enable_filter_intra);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_intra_edge_filter = %d\n", 
p->seq_fields.bits.enable_intra_edge_filter);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_interintra_compound = %d\n", 
p->seq_fields.bits.enable_interintra_compound);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_masked_compound = %d\n", 
p->seq_fields.bits.enable_masked_compound);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_warped_motion = %d\n", 
p->seq_fields.bits.enable_warped_motion);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_dual_filter = %d\n", 
p->seq_fields.bits.enable_dual_filter);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_order_hint = %d\n", 
p->seq_fields.bits.enable_order_hint);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_jnt_comp = %d\n", 
p->seq_fields.bits.enable_jnt_comp);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_ref_frame_mvs = %d\n", 
p->seq_fields.bits.enable_ref_frame_mvs);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_superres = %d\n", 
p->seq_fields.bits.enable_superres);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_cdef = %d\n", 
p->seq_fields.bits.enable_cdef);
+    va_TraceMsg(trace_ctx, "\tseq_fields.enable_restoration = %d\n", 
p->seq_fields.bits.enable_restoration);
+
+    va_TraceMsg(trace_ctx, "\torder_hint_bits_minus_1 = %d\n", 
p->order_hint_bits_minus_1);
+
+    va_TraceMsg(trace_ctx, NULL);
+
+    return;
+}
+
+static void va_TraceVAEncPictureParameterBufferAV1(
+    VADisplay dpy,
+    VAContextID context,
+    VABufferID buffer,
+    VABufferType type,
+    unsigned int size,
+    unsigned int num_elements,
+    void *data)
+{
+    VAEncPictureParameterBufferAV1 *p = (VAEncPictureParameterBufferAV1 *)data;
+    DPY2TRACECTX(dpy, context, VA_INVALID_ID);
+    int i, j;
+
+    va_TraceMsg(trace_ctx, "\t--VAEncPictureParameterBufferAV1\n");
+
+    va_TraceMsg(trace_ctx, "\tframe_width_minus_1 = %d\n", 
p->frame_width_minus_1);
+    va_TraceMsg(trace_ctx, "\tframe_height_minus_1 = %d\n", 
p->frame_height_minus_1);
+    va_TraceMsg(trace_ctx, "\treconstructed_frame = 0x%08x\n", 
p->reconstructed_frame);
+    va_TraceMsg(trace_ctx, "\tcoded_buf = 0x%08x\n", p->coded_buf);
+
+    for (i = 0; i < 8; i++)
+        va_TraceMsg(trace_ctx, "\treference_frames[%d] = 0x%08x\n", i, 
p->reference_frames[i]);
+    for (i = 0; i < 7; i++)
+        va_TraceMsg(trace_ctx, "\tref_frame_idx[%d] = %d\n", i, 
p->ref_frame_idx[i]);
+
+    va_TraceMsg(trace_ctx, "\tprimary_ref_frame = %d\n", p->primary_ref_frame);
+    va_TraceMsg(trace_ctx, "\torder_hint = %d\n", p->order_hint);
+
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx0 = %d\n", 
p->ref_frame_ctrl_l0.fields.search_idx0);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx1 = %d\n", 
p->ref_frame_ctrl_l0.fields.search_idx1);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx2 = %d\n", 
p->ref_frame_ctrl_l0.fields.search_idx2);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx3 = %d\n", 
p->ref_frame_ctrl_l0.fields.search_idx3);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx4 = %d\n", 
p->ref_frame_ctrl_l0.fields.search_idx4);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx5 = %d\n", 
p->ref_frame_ctrl_l0.fields.search_idx5);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l0.fields.search_idx6 = %d\n", 
p->ref_frame_ctrl_l0.fields.search_idx6);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx0 = %d\n", 
p->ref_frame_ctrl_l1.fields.search_idx0);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx1 = %d\n", 
p->ref_frame_ctrl_l1.fields.search_idx1);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx2 = %d\n", 
p->ref_frame_ctrl_l1.fields.search_idx2);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx3 = %d\n", 
p->ref_frame_ctrl_l1.fields.search_idx3);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx4 = %d\n", 
p->ref_frame_ctrl_l1.fields.search_idx4);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx5 = %d\n", 
p->ref_frame_ctrl_l1.fields.search_idx5);
+    va_TraceMsg(trace_ctx, "\tref_frame_ctrl_l1.fields.search_idx6 = %d\n", 
p->ref_frame_ctrl_l1.fields.search_idx6);
+
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.frame_type = %d\n", 
p->picture_flags.bits.frame_type);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.error_resilient_mode = %d\n", 
p->picture_flags.bits.error_resilient_mode);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_cdf_update = %d\n", 
p->picture_flags.bits.disable_cdf_update);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.use_superres = %d\n", 
p->picture_flags.bits.use_superres);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.allow_high_precision_mv = 
%d\n", p->picture_flags.bits.allow_high_precision_mv);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.use_ref_frame_mvs = %d\n", 
p->picture_flags.bits.use_ref_frame_mvs);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_frame_end_update_cdf 
= %d\n", p->picture_flags.bits.disable_frame_end_update_cdf);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.reduced_tx_set = %d\n", 
p->picture_flags.bits.reduced_tx_set);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.enable_frame_obu = %d\n", 
p->picture_flags.bits.enable_frame_obu);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.long_term_reference = %d\n", 
p->picture_flags.bits.long_term_reference);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.disable_frame_recon = %d\n", 
p->picture_flags.bits.disable_frame_recon);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.allow_intrabc = %d\n", 
p->picture_flags.bits.allow_intrabc);
+    va_TraceMsg(trace_ctx, "\tpicture_flags.bits.palette_mode_enable = %d\n", 
p->picture_flags.bits.palette_mode_enable);
+
+    va_TraceMsg(trace_ctx, "\tseg_id_block_size = %d\n", p->seg_id_block_size);
+    va_TraceMsg(trace_ctx, "\tnum_tile_groups_minus1 = %d\n", 
p->num_tile_groups_minus1);
+    va_TraceMsg(trace_ctx, "\ttemporal_id = %d\n", p->temporal_id);
+
+    for (i = 0; i < 2; i++)
+        va_TraceMsg(trace_ctx, "\filter_level[%d] = %d\n", i, 
p->filter_level[i]);
+
+    va_TraceMsg(trace_ctx, "\tfilter_level_u = %d\n", p->filter_level_u);
+    va_TraceMsg(trace_ctx, "\tfilter_level_v = %d\n", p->filter_level_v);
+
+    va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.sharpness_level = %d\n", 
p->loop_filter_flags.bits.sharpness_level);
+    va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.mode_ref_delta_enabled = 
%d\n", p->loop_filter_flags.bits.mode_ref_delta_enabled);
+    va_TraceMsg(trace_ctx, "\tloop_filter_flags.bits.mode_ref_delta_update = 
%d\n", p->loop_filter_flags.bits.mode_ref_delta_update);
+
+    va_TraceMsg(trace_ctx, "\tsuperres_scale_denominator = %d\n", 
p->superres_scale_denominator);
+    va_TraceMsg(trace_ctx, "\tinterpolation_filter = %d\n", 
p->interpolation_filter);
+
+    for (i = 0; i < 8; i++)
+        va_TraceMsg(trace_ctx, "\tref_deltas[%d] = %d\n", i, p->ref_deltas[i]);
+    for (i = 0; i < 2; i++)
+        va_TraceMsg(trace_ctx, "\tmode_deltas[%d] = %d\n", i, 
p->mode_deltas[i]);
+
+    va_TraceMsg(trace_ctx, "\tbase_qindex = %d\n", p->base_qindex);
+    va_TraceMsg(trace_ctx, "\ty_dc_delta_q = %d\n", p->y_dc_delta_q);
+    va_TraceMsg(trace_ctx, "\tu_dc_delta_q = %d\n", p->u_dc_delta_q);
+    va_TraceMsg(trace_ctx, "\tu_ac_delta_q = %d\n", p->u_ac_delta_q);
+    va_TraceMsg(trace_ctx, "\tv_dc_delta_q = %d\n", p->v_dc_delta_q);
+    va_TraceMsg(trace_ctx, "\tv_ac_delta_q = %d\n", p->v_ac_delta_q);
+    va_TraceMsg(trace_ctx, "\tmin_base_qindex = %d\n", p->min_base_qindex);
+    va_TraceMsg(trace_ctx, "\tmax_base_qindex = %d\n", p->max_base_qindex);
+
+    va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.using_qmatrix = %d\n", 
p->qmatrix_flags.bits.using_qmatrix);
+    va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_y = %d\n", 
p->qmatrix_flags.bits.qm_y);
+    va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_u = %d\n", 
p->qmatrix_flags.bits.qm_u);
+    va_TraceMsg(trace_ctx, "\tqmatrix_flags.bits.qm_v = %d\n", 
p->qmatrix_flags.bits.qm_v);
+
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_q_present = %d\n", 
p->mode_control_flags.bits.delta_q_present);
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_q_res = %d\n", 
p->mode_control_flags.bits.delta_q_res);
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_present = 
%d\n", p->mode_control_flags.bits.delta_lf_present);
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_res = %d\n", 
p->mode_control_flags.bits.delta_lf_res);
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.delta_lf_multi = %d\n", 
p->mode_control_flags.bits.delta_lf_multi);
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.tx_mode = %d\n", 
p->mode_control_flags.bits.tx_mode);
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.reference_mode = %d\n", 
p->mode_control_flags.bits.reference_mode);
+    va_TraceMsg(trace_ctx, "\tmode_control_flags.bits.skip_mode_present = 
%d\n", p->mode_control_flags.bits.skip_mode_present);
+
+    va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_enabled = 
%d\n", p->segments.seg_flags.bits.segmentation_enabled);
+    va_TraceMsg(trace_ctx, "\tsegments.seg_flags.bits.segmentation_update_map 
= %d\n", p->segments.seg_flags.bits.segmentation_update_map);
+    va_TraceMsg(trace_ctx, 
"\tsegments.seg_flags.bits.segmentation_temporal_update = %d\n", 
p->segments.seg_flags.bits.segmentation_temporal_update);
+    va_TraceMsg(trace_ctx, "\tsegments.segment_number = %d\n", 
p->segments.segment_number);
+
+    for (i = 0; i < 8; i++){
+        for (j = 0; j < 8; j++)
+            va_TraceMsg(trace_ctx, "\tsegments.feature_data[%d][%d] = %d\n", 
i, j, p->segments.feature_data[i][j]);
+    }
+    for (i = 0; i < 8; i++)
+        va_TraceMsg(trace_ctx, "\tsegments.feature_mask[%d] = %d\n", i, 
p->segments.feature_mask[i]);
+
+    va_TraceMsg(trace_ctx, "\ttile_cols = %d\n", p->tile_cols);
+    va_TraceMsg(trace_ctx, "\ttile_rows = %d\n", p->tile_rows);
+
+    for (i = 0; i < 63; i++)
+        va_TraceMsg(trace_ctx, "\twidth_in_sbs_minus_1[%d] = %d\n", i, 
p->width_in_sbs_minus_1[i]);
+    for (i = 0; i < 63; i++)
+        va_TraceMsg(trace_ctx, "\theight_in_sbs_minus_1[%d] = %d\n", i, 
p->height_in_sbs_minus_1[i]);
+
+    va_TraceMsg(trace_ctx, "\tcontext_update_tile_id = %d\n", 
p->context_update_tile_id);
+    va_TraceMsg(trace_ctx, "\tcdef_damping_minus_3 = %d\n", 
p->cdef_damping_minus_3);
+    va_TraceMsg(trace_ctx, "\tcdef_bits= %d\n", p->cdef_bits);
+
+    for (i = 0; i < 8; i++)
+        va_TraceMsg(trace_ctx, "\tcdef_y_strengths[%d] = %d\n", i, 
p->cdef_y_strengths[i]);
+    for (i = 0; i < 8; i++)
+        va_TraceMsg(trace_ctx, "\tcdef_uv_strengths[%d] = %d\n", i, 
p->cdef_uv_strengths[i]);
+
+    va_TraceMsg(trace_ctx, 
"\tloop_restoration_flags.bits.yframe_restoration_type = %d\n", 
p->loop_restoration_flags.bits.yframe_restoration_type);
+    va_TraceMsg(trace_ctx, 
"\tloop_restoration_flags.bits.cbframe_restoration_type = %d\n", 
p->loop_restoration_flags.bits.cbframe_restoration_type);
+    va_TraceMsg(trace_ctx, 
"\tloop_restoration_flags.bits.crframe_restoration_type = %d\n", 
p->loop_restoration_flags.bits.crframe_restoration_type);
+    va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.lr_unit_shift = 
%d\n", p->loop_restoration_flags.bits.lr_unit_shift);
+    va_TraceMsg(trace_ctx, "\tloop_restoration_flags.bits.lr_uv_shift = %d\n", 
p->loop_restoration_flags.bits.lr_uv_shift);
+
+    for (i = 0; i < 7; i++){
+        va_TraceMsg(trace_ctx, "\twm[%d].wmtype= %d\n", i, p->wm[i].wmtype);
+        for (j = 0; j < 8; j++)
+            va_TraceMsg(trace_ctx, "\twm[%d].wmmat[%d]= %d\n", i, j, 
p->wm[i].wmmat[j]);
+        va_TraceMsg(trace_ctx, "\twm[%d].invalid= %d\n", i, p->wm[i].invalid);
+    }
+
+    va_TraceMsg(trace_ctx, "\tbit_offset_qindex = %d\n", p->bit_offset_qindex);
+    va_TraceMsg(trace_ctx, "\tbit_offset_segmentation = %d\n", 
p->bit_offset_segmentation);
+    va_TraceMsg(trace_ctx, "\tbit_offset_loopfilter_params = %d\n", 
p->bit_offset_loopfilter_params);
+    va_TraceMsg(trace_ctx, "\tbit_offset_cdef_params = %d\n", 
p->bit_offset_cdef_params);
+    va_TraceMsg(trace_ctx, "\tsize_in_bits_cdef_params = %d\n", 
p->size_in_bits_cdef_params);
+    va_TraceMsg(trace_ctx, "\tbyte_offset_frame_hdr_obu_size = %d\n", 
p->byte_offset_frame_hdr_obu_size);
+    va_TraceMsg(trace_ctx, "\tsize_in_bits_frame_hdr_obu = %d\n", 
p->size_in_bits_frame_hdr_obu);
+
+    va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.obu_extension_flag 
= %d\n", p->tile_group_obu_hdr_info.bits.obu_extension_flag);
+    va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.obu_has_size_field 
= %d\n", p->tile_group_obu_hdr_info.bits.obu_has_size_field);
+    va_TraceMsg(trace_ctx, "\ttile_group_obu_hdr_info.bits.spatial_id = %d\n", 
p->tile_group_obu_hdr_info.bits.spatial_id);
+
+    va_TraceMsg(trace_ctx, "\tnumber_skip_frames = %d\n", 
p->number_skip_frames);
+    va_TraceMsg(trace_ctx, "\tskip_frames_reduced_size = %d\n", 
p->skip_frames_reduced_size);
+
+    va_TraceMsg(trace_ctx, NULL);
+
+    return;
+}
+
 static void va_TraceVAPictureParameterBufferAV1(
     VADisplay dpy,
     VAContextID context,
@@ -5104,6 +5314,12 @@
     case VASliceParameterBufferType:
         va_TraceVASliceParameterBufferAV1(dpy, context, buffer, type, size, 
num_elements, pbuf);
         break;
+    case VAEncSequenceParameterBufferType:
+        va_TraceVAEncSequenceParameterBufferAV1(dpy, context, buffer, type, 
size, num_elements, pbuf);
+        break;
+    case VAEncPictureParameterBufferType:
+        va_TraceVAEncPictureParameterBufferAV1(dpy, context, buffer, type, 
size, num_elements, pbuf);
+        break;
     default:
         va_TraceVABuffers(dpy, context, buffer, type, size, num_elements, 
pbuf);
         break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.13.0/va/x11/va_x11.c 
new/libva-2.14.0/va/x11/va_x11.c
--- old/libva-2.13.0/va/x11/va_x11.c    2021-09-16 23:57:25.000000000 +0200
+++ new/libva-2.14.0/va/x11/va_x11.c    2022-02-16 16:26:40.000000000 +0100
@@ -55,6 +55,7 @@
     { "i965",       4, "i965"   }, // Intel i965 VAAPI driver with i965 DRI 
driver
     { "iris",       4, "iHD"    }, // Intel iHD  VAAPI driver with iris DRI 
driver
     { "iris",       4, "i965"   }, // Intel i965 VAAPI driver with iris DRI 
driver
+    { "crocus",     6, "i965"   }, // Intel i965 VAAPI driver with crocus DRI 
driver
     { NULL,         0, NULL }
 };
 

Reply via email to