Hello community, here is the log from the commit of package libva for openSUSE:Factory checked in at 2020-03-06 21:26:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libva (Old) and /work/SRC/openSUSE:Factory/.libva.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libva" Fri Mar 6 21:26:05 2020 rev:51 rq:781543 version:2.6.1 Changes: -------- --- /work/SRC/openSUSE:Factory/libva/libva-gl.changes 2020-01-21 17:17:33.990800663 +0100 +++ /work/SRC/openSUSE:Factory/.libva.new.26092/libva-gl.changes 2020-03-06 21:26:24.409519365 +0100 @@ -1,0 +2,26 @@ +Wed Feb 26 11:49:43 UTC 2020 - Stefan Dirsch <sndir...@suse.com> + +- Update to version 2.6.1 + * adjust call sequence to ensure authenticate operation is + executed this patch is not needed for media-driver, but + needed for i965 driver which check authentication. + +------------------------------------------------------------------- +Fri Jan 10 23:49:36 UTC 2020 - Aaron Stern <ukbeas...@protonmail.com> + +- Update to version 2.6.0: + * enable the mutiple driver selection logic and enable it for DRM. + * drm: Add iHD to driver_name_map + * Add missed slice parameter 'slice_data_num_emu_prevn_bytes' + * ensure that all meson files are part of the release tarball + * configure: use correct comparison operator + * trace: support VAConfigAttribMultipleFrame in trace + * remove incorrect field of VAConfigAttribValDecJPEG + * va/va_trace: Dump VP9 parameters for profile 1~3 + * add multiple frame capability report + * add variable to indicate layer infromation + * trace: fix memory leak on closing the trace + * add prediction direction caps report + * Add comments for colour primaries and transfer characteristics in VAProcColorProperties + +------------------------------------------------------------------- libva.changes: same change Old: ---- libva-2.5.0.tar.bz2 libva-2.5.0.tar.bz2.sha1sum New: ---- libva-2.6.1.tar.bz2 libva-2.6.1.tar.bz2.sha1sum ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libva-gl.spec ++++++ --- /var/tmp/diff_new_pack.UbgpGr/_old 2020-03-06 21:26:25.405519916 +0100 +++ /var/tmp/diff_new_pack.UbgpGr/_new 2020-03-06 21:26:25.405519916 +0100 @@ -1,7 +1,7 @@ # # spec file for package libva-gl # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,12 +29,12 @@ Name: libva-gl %define _name libva -Version: 2.5.0 +Version: 2.6.1 Release: 0 Summary: Video Acceleration (VA) API License: MIT Group: Development/Libraries/C and C++ -Url: http://freedesktop.org/wiki/Software/vaapi +URL: http://freedesktop.org/wiki/Software/vaapi Source0: https://github.com/intel/libva/releases/download/%{version}/%{_name}-%{version}.tar.bz2 Source1: https://github.com/intel/libva/releases/download/%{version}/%{_name}-%{version}.tar.bz2.sha1sum Source2: baselibs.conf ++++++ libva.spec ++++++ --- /var/tmp/diff_new_pack.UbgpGr/_old 2020-03-06 21:26:25.425519927 +0100 +++ /var/tmp/diff_new_pack.UbgpGr/_new 2020-03-06 21:26:25.433519931 +0100 @@ -1,7 +1,7 @@ # # spec file for package libva # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,12 +29,12 @@ Name: libva %define _name libva -Version: 2.5.0 +Version: 2.6.1 Release: 0 Summary: Video Acceleration (VA) API License: MIT Group: Development/Libraries/C and C++ -Url: http://freedesktop.org/wiki/Software/vaapi +URL: http://freedesktop.org/wiki/Software/vaapi Source0: https://github.com/intel/libva/releases/download/%{version}/%{_name}-%{version}.tar.bz2 Source1: https://github.com/intel/libva/releases/download/%{version}/%{_name}-%{version}.tar.bz2.sha1sum Source2: baselibs.conf ++++++ libva-2.5.0.tar.bz2 -> libva-2.6.1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/Makefile.am new/libva-2.6.1/Makefile.am --- old/libva-2.5.0/Makefile.am 2019-06-17 12:35:14.000000000 +0200 +++ new/libva-2.6.1/Makefile.am 2019-12-17 14:46:07.000000000 +0100 @@ -30,7 +30,7 @@ SUBDIRS += doc endif -EXTRA_DIST=doc/va_footer.html +EXTRA_DIST=doc/va_footer.html meson.build meson_options.txt # Extra clean files so that maintainer-clean removes *everything* MAINTAINERCLEANFILES = \ aclocal.m4 compile config.guess config.sub \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/Makefile.in new/libva-2.6.1/Makefile.in --- old/libva-2.5.0/Makefile.in 2019-07-05 16:14:46.000000000 +0200 +++ new/libva-2.6.1/Makefile.in 2020-01-17 12:30:10.000000000 +0100 @@ -380,7 +380,7 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} AUTOMAKE_OPTIONS = foreign SUBDIRS = va pkgconfig $(am__append_1) -EXTRA_DIST = doc/va_footer.html +EXTRA_DIST = doc/va_footer.html meson.build meson_options.txt # Extra clean files so that maintainer-clean removes *everything* MAINTAINERCLEANFILES = \ aclocal.m4 compile config.guess config.sub \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/NEWS new/libva-2.6.1/NEWS --- old/libva-2.5.0/NEWS 2019-07-05 15:08:40.000000000 +0200 +++ new/libva-2.6.1/NEWS 2019-12-25 16:46:11.000000000 +0100 @@ -1,6 +1,21 @@ -libva NEWS -- summary of user visible changes. 2019-07-05 +libva NEWS -- summary of user visible changes. 2019-12-25 Copyright (C) 2009-2019 Intel Corporation +version 2.6.0 - 15.Dec.2019 +* enable the mutiple driver selection logic and enable it for DRM. +* drm: Add iHD to driver_name_map +* Add missed slice parameter 'slice_data_num_emu_prevn_bytes' +* ensure that all meson files are part of the release tarball +* configure: use correct comparison operator +* trace: support VAConfigAttribMultipleFrame in trace +* remove incorrect field of VAConfigAttribValDecJPEG +* va/va_trace: Dump VP9 parameters for profile 1~3 +* add multiple frame capability report +* add variable to indicate layer infromation +* trace: fix memory leak on closing the trace +* add prediction direction caps report +* Add comments for colour primaries and transfer characteristics in VAProcColorProperties + version 2.5.0 - 05.Jul.2019 * Correct the comment of color_range. * Add VA_FOURCC_A2B10G10R10 for format a2b10g10r10. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/configure new/libva-2.6.1/configure --- old/libva-2.5.0/configure 2019-07-05 16:14:46.000000000 +0200 +++ new/libva-2.6.1/configure 2020-01-17 12:30:10.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libva 2.5.0. +# Generated by GNU Autoconf 2.69 for libva 2.6.1. # # Report bugs to <https://github.com/intel/libva/issues/new>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='libva' PACKAGE_TARNAME='libva' -PACKAGE_VERSION='2.5.0' -PACKAGE_STRING='libva 2.5.0' +PACKAGE_VERSION='2.6.1' +PACKAGE_STRING='libva 2.6.1' PACKAGE_BUGREPORT='https://github.com/intel/libva/issues/new' PACKAGE_URL='https://github.com/intel/libva' @@ -1394,7 +1394,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libva 2.5.0 to adapt to many kinds of systems. +\`configure' configures libva 2.6.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1465,7 +1465,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libva 2.5.0:";; + short | recursive ) echo "Configuration of libva 2.6.1:";; esac cat <<\_ACEOF @@ -1603,7 +1603,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libva configure 2.5.0 +libva configure 2.6.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2093,7 +2093,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libva $as_me 2.5.0, which was +It was created by libva $as_me 2.6.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2959,7 +2959,7 @@ # Define the identity of the package. PACKAGE='libva' - VERSION='2.5.0' + VERSION='2.6.1' cat >>confdefs.h <<_ACEOF @@ -3099,26 +3099,26 @@ VA_API_MAJOR_VERSION=1 -VA_API_MINOR_VERSION=5 +VA_API_MINOR_VERSION=6 VA_API_MICRO_VERSION=0 -VA_API_VERSION=1.5.0 +VA_API_VERSION=1.6.0 LIBVA_MAJOR_VERSION=2 -LIBVA_MINOR_VERSION=5 -LIBVA_MICRO_VERSION=0 -LIBVA_VERSION=2.5.0 +LIBVA_MINOR_VERSION=6 +LIBVA_MICRO_VERSION=1 +LIBVA_VERSION=2.6.1 -LIBVA_LT_CURRENT=502 +LIBVA_LT_CURRENT=602 LIBVA_LT_REV=0 -LIBVA_LT_AGE=500 +LIBVA_LT_AGE=600 LIBVA_LT_VERSION="$LIBVA_LT_CURRENT:$LIBVA_LT_REV:$LIBVA_LT_AGE" LIBVA_LT_LDFLAGS="-version-info $LIBVA_LT_VERSION" @@ -17653,7 +17653,7 @@ as_fn_error $? "VA/GLX explicitly enabled, but VA/X11 isn't built" "$LINENO" 5 fi -if test "$USE_X11" == "yes" -a "$enable_glx" != "no"; then +if test "$USE_X11" = "yes" -a "$enable_glx" != "no"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLX" >&5 @@ -18522,7 +18522,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libva $as_me 2.5.0, which was +This file was extended by libva $as_me 2.6.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18589,7 +18589,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libva config.status 2.5.0 +libva config.status 2.6.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/configure.ac new/libva-2.6.1/configure.ac --- old/libva-2.5.0/configure.ac 2019-07-05 15:11:21.000000000 +0200 +++ new/libva-2.6.1/configure.ac 2020-01-17 12:12:33.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], [5]) +m4_define([va_api_minor_version], [6]) m4_define([va_api_micro_version], [0]) m4_define([va_api_version], @@ -42,7 +42,7 @@ # - reset micro version to zero when VA-API major or minor version is changed m4_define([libva_major_version], [m4_eval(va_api_major_version + 1)]) m4_define([libva_minor_version], [m4_eval(va_api_minor_version)]) -m4_define([libva_micro_version], [0]) +m4_define([libva_micro_version], [1]) m4_define([libva_pre_version], [0]) m4_define([libva_version], @@ -259,7 +259,7 @@ AC_MSG_ERROR([VA/GLX explicitly enabled, but VA/X11 isn't built]) fi -if test "$USE_X11" == "yes" -a "$enable_glx" != "no"; then +if test "$USE_X11" = "yes" -a "$enable_glx" != "no"; then PKG_CHECK_MODULES([GLX], [gl x11], [USE_GLX="yes"], [:]) saved_CPPFLAGS="$CPPFLAGS" saved_LIBS="$LIBS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/doc/Makefile.am new/libva-2.6.1/doc/Makefile.am --- old/libva-2.5.0/doc/Makefile.am 2018-12-26 11:22:45.000000000 +0100 +++ new/libva-2.6.1/doc/Makefile.am 2019-12-17 14:46:07.000000000 +0100 @@ -25,6 +25,7 @@ EXTRA_DIST = \ Doxyfile.in \ + meson.build \ $(NULL) VA_HEADER_DIR = $(top_srcdir)/va diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/doc/Makefile.in new/libva-2.6.1/doc/Makefile.in --- old/libva-2.5.0/doc/Makefile.in 2019-07-05 16:14:46.000000000 +0200 +++ new/libva-2.6.1/doc/Makefile.in 2020-01-17 12:30:10.000000000 +0100 @@ -295,6 +295,7 @@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ Doxyfile.in \ + meson.build \ $(NULL) VA_HEADER_DIR = $(top_srcdir)/va diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/doc/meson.build new/libva-2.6.1/doc/meson.build --- old/libva-2.5.0/doc/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/libva-2.6.1/doc/meson.build 2018-12-26 11:22:45.000000000 +0100 @@ -0,0 +1,49 @@ + headerdir = join_paths(meson.source_root(), 'va') +footer = join_paths(meson.current_source_dir(), 'va_footer.html') + +libva_headers_doc = [ + 'va.h', + 'va_enc_h264.h', + 'va_enc_mpeg2.h', + 'va_enc_jpeg.h', + 'va_enc_hevc.h', + 'va_enc_vp8.h', + 'va_enc_vp9.h', + 'va_fei.h', + 'va_fei_h264.h', + 'va_fei_hevc.h', + 'va_dec_hevc.h', + 'va_dec_jpeg.h', + 'va_dec_vp8.h', + 'va_dec_vp9.h', + 'va_vpp.h' +] + +libva_doc_files = [] +headers = '' +foreach h : libva_headers_doc + libva_doc_files += join_paths (headerdir, h) + headers += ' ' + join_paths (headerdir, h) +endforeach + +config = configuration_data() +config.set('PACKAGE_VERSION', meson.project_version()) +config.set('VA_HEADER_DIR', headerdir) +config.set('VA_HEADER_FILES', headers) +config.set('VA_HTML_FOOTER', footer) +config.set('OUTDIR', meson.current_build_dir()) + +doxyfile = configure_file( + input: 'Doxyfile.in', + output: 'Doxyfile', + configuration: config) + +doc_install_dir = join_paths(get_option('datadir'), 'doc', meson.project_name()) +custom_target( + 'doc', + command: [ doxygen, doxyfile ], + depend_files: libva_doc_files, + input: doxyfile, + output: 'html-out', + install: true, + install_dir: doc_install_dir) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/meson.build new/libva-2.6.1/meson.build --- old/libva-2.5.0/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/libva-2.6.1/meson.build 2020-01-17 12:12:50.000000000 +0100 @@ -0,0 +1,132 @@ +# libva package version number, (as distinct from shared library version) +# XXX: we want the package version to remain at 1.0.x for VA-API 0.32.y +# +# - major version is automatically generated from VA-API major version +# - minor version is automatically generated from VA-API minor version +# - increment micro for any library release +# - reset micro version to zero when VA-API major or minor version is changed +project( + 'libva', 'c', + version : '2.6.1', + meson_version : '>= 0.37.0', + default_options : [ 'warning_level=1', + 'buildtype=debugoptimized' ]) + +# VA-API version +# - increment major for any ABI change +# - increment minor for any interface change (e.g. new/modified function) +# - increment micro for any other change (new flag, new codec definition, etc.) +# - 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 = 6 +va_api_micro_version = 0 + +va_api_version = '@0@.@1@.@2@'.format(va_api_major_version, + va_api_minor_version, + va_api_micro_version) + +version_arr = meson.project_version().split('.') +libva_major_version = version_arr[0] +libva_minor_version = version_arr[1] +libva_micro_version = version_arr[2] +libva_version = '@0@.@1@.@2@'.format(libva_major_version, + libva_minor_version, + libva_micro_version) +if version_arr.length() == 4 + libva_version = '@0@.pre@1@'.format(libva_version, version_arr[3]) +endif + + +# libva library version number (generated, do not change) +# XXX: we want the SONAME to remain at libva.so.1 for VA-API major == 0 +# +# The library name is generated libva.<x>.<y>.0 where +# <x> = VA-API major version + 1 +# <y> = 100 * VA-API minor version + VA-API micro version +# +# For example: +# VA-API 0.32.0 generates libva.so.1.3200.0 +# VA-API 0.34.1 generates libva.so.1.3401.0 +# VA-API 1.2.13 generates libva.so.2.213.0 +libva_interface_bias = va_api_major_version + 1 +libva_interface_age = 0 +libva_binary_age = 100 * va_api_minor_version + va_api_micro_version - libva_interface_age + +libva_lt_current = 100 * va_api_minor_version + va_api_micro_version + libva_interface_bias +libva_lt_revision = libva_interface_age +libva_lt_age = libva_binary_age - libva_interface_age + +libva_lt_current = libva_lt_current - libva_lt_age + +libva_lt_version = '@0@.@1@.@2@'.format(libva_lt_current, + libva_lt_age, + libva_lt_revision) + +driverdir = get_option('driverdir') +if driverdir == '' + driverdir = '@0@/@1@/@2@'.format(get_option('prefix'), get_option('libdir'), 'dri') +endif + +configinc = include_directories('.') + +cc = meson.get_compiler('c') +dl_dep = cc.find_library('dl', required : false) + +libdrm_dep = dependency('libdrm', version : '>= 2.4') + +WITH_DRM = not get_option('disable_drm') + +WITH_X11 = false +if get_option('with_x11') != 'no' + x11_dep = dependency('x11', required : get_option('with_x11') == 'yes') + xext_dep = dependency('xext', required : get_option('with_x11') == 'yes') + xfixes_dep = dependency('xfixes', required : get_option('with_x11') == 'yes') + + WITH_X11 = (x11_dep.found() and xext_dep.found() and xfixes_dep.found()) +endif + +if not WITH_X11 and get_option('with_glx') == 'yes' + error('VA/GLX explicitly enabled, but VA/X11 isn\'t built') +endif + +WITH_GLX = false +if WITH_X11 and get_option('with_glx') != 'no' + gl_dep = dependency('gl', required : get_option('with_glx') == 'yes') + WITH_GLX = gl_dep.found() +endif + +WITH_WAYLAND = false +if get_option('with_wayland') != 'no' + wayland_dep = dependency('wayland-client', version : '>= 1.11.0', + required : get_option('with_wayland') == 'yes') + if wayland_dep.found() + prefix = wayland_dep.get_pkgconfig_variable('prefix') + wl_scanner = find_program('wayland-scanner', + prefix + '/bin/wayland-scanner') + endif + WITH_WAYLAND = wayland_dep.found() +endif + +va_c_args = [] +if get_option('enable_va_messaging') + va_c_args += ['-DENABLE_VA_MESSAGING=1'] +endif + +# Symbol visibility +if cc.has_argument('-fvisibility=hidden') + va_c_args += ['-DHAVE_GNUC_VISIBILITY_ATTRIBUTE'] +endif + +if (not WITH_DRM and not WITH_X11 and not WITH_WAYLAND) + error('Please install at least one backend dev files (DRM, X11, Wayland)') +endif + +subdir('va') +subdir('pkgconfig') + +doxygen = find_program('doxygen', required: false) + +if get_option('enable_docs') and doxygen.found() + subdir('doc') +endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/meson_options.txt new/libva-2.6.1/meson_options.txt --- old/libva-2.5.0/meson_options.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/libva-2.6.1/meson_options.txt 2019-11-15 10:51:03.000000000 +0100 @@ -0,0 +1,7 @@ +option('driverdir', type : 'string', description : 'drivers path') +option('disable_drm', type : 'boolean', value : false) +option('with_x11', type : 'combo', choices : ['yes', 'no', 'auto'], value : 'auto') +option('with_glx', type : 'combo', choices : ['yes', 'no', 'auto'], value : 'auto') +option('with_wayland', type : 'combo', choices : ['yes', 'no', 'auto'], value : 'auto') +option('enable_docs', type : 'boolean', value : false) +option('enable_va_messaging', type : 'boolean', value : true) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/pkgconfig/Makefile.am new/libva-2.6.1/pkgconfig/Makefile.am --- old/libva-2.5.0/pkgconfig/Makefile.am 2018-12-26 11:22:41.000000000 +0100 +++ new/libva-2.6.1/pkgconfig/Makefile.am 2019-12-17 14:46:07.000000000 +0100 @@ -43,7 +43,7 @@ pkgconfigdir = @pkgconfigdir@ pkgconfig_DATA = $(pcfiles) -EXTRA_DIST = $(all_pcfiles_in) +EXTRA_DIST = $(all_pcfiles_in) meson.build DISTCLEANFILES = $(pcfiles) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/pkgconfig/Makefile.in new/libva-2.6.1/pkgconfig/Makefile.in --- old/libva-2.5.0/pkgconfig/Makefile.in 2019-07-05 16:14:46.000000000 +0200 +++ new/libva-2.6.1/pkgconfig/Makefile.in 2020-01-17 12:30:10.000000000 +0100 @@ -335,7 +335,7 @@ all_pcfiles_in = libva.pc.in libva-drm.pc.in libva-x11.pc.in \ libva-glx.pc.in libva-wayland.pc.in pkgconfig_DATA = $(pcfiles) -EXTRA_DIST = $(all_pcfiles_in) +EXTRA_DIST = $(all_pcfiles_in) meson.build DISTCLEANFILES = $(pcfiles) # Extra clean files so that maintainer-clean removes *everything* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/pkgconfig/meson.build new/libva-2.6.1/pkgconfig/meson.build --- old/libva-2.5.0/pkgconfig/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/libva-2.6.1/pkgconfig/meson.build 2018-12-26 11:22:41.000000000 +0100 @@ -0,0 +1,39 @@ +pkgconf = configuration_data() + +pkgconf.set('prefix', get_option('prefix')) +pkgconf.set('exec_prefix', '${prefix}') +pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) +pkgconf.set('LIBVA_VERSION', libva_version) +pkgconf.set('VA_API_VERSION', va_api_version) +pkgconf.set('LIBVA_DRIVERS_PATH', driverdir) + +pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir')) + +pkg_files = [ 'libva' ] + +if WITH_DRM + pkg_files += [ 'libva-drm' ] +endif + +if WITH_X11 + pkg_files += [ 'libva-x11' ] +endif + +if WITH_GLX + pkg_files += [ 'libva-glx' ] +endif + +if WITH_WAYLAND + pkg_files += [ 'libva-wayland' ] +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.5.0/va/Makefile.am new/libva-2.6.1/va/Makefile.am --- old/libva-2.5.0/va/Makefile.am 2019-01-25 18:59:24.000000000 +0100 +++ new/libva-2.6.1/va/Makefile.am 2019-12-17 14:46:07.000000000 +0100 @@ -147,4 +147,5 @@ EXTRA_DIST = \ libva.syms \ va_version.h.in \ + meson.build \ $(NULL) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/Makefile.in new/libva-2.6.1/va/Makefile.in --- old/libva-2.5.0/va/Makefile.in 2019-07-05 16:14:46.000000000 +0200 +++ new/libva-2.6.1/va/Makefile.in 2020-01-17 12:30:10.000000000 +0100 @@ -547,6 +547,7 @@ EXTRA_DIST = \ libva.syms \ va_version.h.in \ + meson.build \ $(NULL) all: all-recursive diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/drm/va_drm.c new/libva-2.6.1/va/drm/va_drm.c --- old/libva-2.5.0/va/drm/va_drm.c 2018-12-26 11:22:42.000000000 +0100 +++ new/libva-2.6.1/va/drm/va_drm.c 2019-12-25 16:38:29.000000000 +0100 @@ -51,24 +51,19 @@ free(pDisplayContext->pDriverContext); free(pDisplayContext); } - -static VAStatus -va_DisplayContextGetDriverName( +static VAStatus va_DisplayContextGetNumCandidates( VADisplayContextP pDisplayContext, - char **driver_name_ptr + int *num_candidates ) { - VADriverContextP const ctx = pDisplayContext->pDriverContext; struct drm_state * const drm_state = ctx->drm_state; + VAStatus status = VA_STATUS_SUCCESS; drm_magic_t magic; - VAStatus status; int ret; - - status = VA_DRM_GetDriverName(ctx, driver_name_ptr); + status = VA_DRM_GetNumCandidates(ctx, num_candidates); if (status != VA_STATUS_SUCCESS) return status; - /* Authentication is only needed for a legacy DRM device */ if (ctx->display_type != VA_DISPLAY_DRM_RENDERNODES) { ret = drmGetMagic(drm_state->fd, &magic); @@ -80,10 +75,22 @@ } drm_state->auth_type = VA_DRM_AUTH_CUSTOM; - return VA_STATUS_SUCCESS; } +static VAStatus +va_DisplayContextGetDriverNameByIndex( + VADisplayContextP pDisplayContext, + char **driver_name_ptr, + int candidate_index +) +{ + + VADriverContextP const ctx = pDisplayContext->pDriverContext; + + return VA_DRM_GetDriverName(ctx, driver_name_ptr, candidate_index); +} + VADisplay vaGetDisplayDRM(int fd) { @@ -108,7 +115,8 @@ pDisplayContext->vaIsValid = va_DisplayContextIsValid; pDisplayContext->vaDestroy = va_DisplayContextDestroy; - pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName; + pDisplayContext->vaGetNumCandidates = va_DisplayContextGetNumCandidates; + pDisplayContext->vaGetDriverNameByIndex = va_DisplayContextGetDriverNameByIndex; pDriverContext = va_newDriverContext(pDisplayContext); if (!pDriverContext) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/drm/va_drm_utils.c new/libva-2.6.1/va/drm/va_drm_utils.c --- old/libva-2.5.0/va/drm/va_drm_utils.c 2019-06-17 12:35:14.000000000 +0200 +++ new/libva-2.6.1/va/drm/va_drm_utils.c 2019-12-25 16:38:29.000000000 +0100 @@ -37,6 +37,7 @@ }; static const struct driver_name_map g_driver_name_map[] = { + { "i915", 4, "iHD" }, // Intel Media driver { "i915", 4, "i965" }, // Intel OTC GenX driver { "pvrsrvkm", 8, "pvr" }, // Intel UMG PVR driver { "emgd", 4, "emgd" }, // Intel ECG PVR driver @@ -47,14 +48,39 @@ { NULL, 0, NULL } }; +/* Returns the VA driver candidate num for the active display*/ +VAStatus +VA_DRM_GetNumCandidates(VADriverContextP ctx, int * num_candidates) +{ + struct drm_state * const drm_state = ctx->drm_state; + drmVersionPtr drm_version; + int num_of_candidate = 0; + const struct driver_name_map *m = NULL; + if (!drm_state || drm_state->fd < 0) + return VA_STATUS_ERROR_INVALID_DISPLAY; + drm_version = drmGetVersion(drm_state->fd); + if (!drm_version) + return VA_STATUS_ERROR_UNKNOWN; + for (m = g_driver_name_map; m->key != NULL; m++) { + if (drm_version->name_len >= m->key_len && + strncmp(drm_version->name, m->key, m->key_len) == 0) { + num_of_candidate ++; + } + } + drmFreeVersion(drm_version); + *num_candidates = num_of_candidate; + return VA_STATUS_SUCCESS; +} + /* Returns the VA driver name for the active display */ VAStatus -VA_DRM_GetDriverName(VADriverContextP ctx, char **driver_name_ptr) +VA_DRM_GetDriverName(VADriverContextP ctx, char **driver_name_ptr, int candidate_index) { struct drm_state * const drm_state = ctx->drm_state; drmVersionPtr drm_version; char *driver_name = NULL; const struct driver_name_map *m; + int current_index = 0; *driver_name_ptr = NULL; @@ -67,8 +93,12 @@ for (m = g_driver_name_map; m->key != NULL; m++) { if (drm_version->name_len >= m->key_len && - strncmp(drm_version->name, m->key, m->key_len) == 0) - break; + strncmp(drm_version->name, m->key, m->key_len) == 0) { + if (current_index == candidate_index) { + break; + } + current_index ++; + } } drmFreeVersion(drm_version); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/drm/va_drm_utils.h new/libva-2.6.1/va/drm/va_drm_utils.h --- old/libva-2.5.0/va/drm/va_drm_utils.h 2018-12-26 11:22:42.000000000 +0100 +++ new/libva-2.6.1/va/drm/va_drm_utils.h 2019-12-25 16:38:29.000000000 +0100 @@ -41,7 +41,9 @@ #ifdef __cplusplus extern "C" { #endif - +DLL_HIDDEN +VAStatus +VA_DRM_GetNumCandidates(VADriverContextP ctx, int * num_candidates); /** * \brief Returns the VA driver name for the active display. * @@ -62,7 +64,7 @@ */ DLL_HIDDEN VAStatus -VA_DRM_GetDriverName(VADriverContextP ctx, char **driver_name_ptr); +VA_DRM_GetDriverName(VADriverContextP ctx, char **driver_name_ptr, int candidate_index); /** * \brief Checks whether the file descriptor is a DRM Render-Nodes one diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/meson.build new/libva-2.6.1/va/meson.build --- old/libva-2.5.0/va/meson.build 1970-01-01 01:00:00.000000000 +0100 +++ new/libva-2.6.1/va/meson.build 2019-11-15 10:51:03.000000000 +0100 @@ -0,0 +1,255 @@ +version_cfg = configuration_data() +version_cfg.set('VA_API_MAJOR_VERSION', va_api_major_version) +version_cfg.set('VA_API_MINOR_VERSION', va_api_minor_version) +version_cfg.set('VA_API_MICRO_VERSION', va_api_micro_version) +version_cfg.set('VA_API_VERSION', va_api_version) + +version_file = configure_file( + input : 'va_version.h.in', + output : 'va_version.h', + configuration : version_cfg) + +libva_sources = [ + 'va.c', + 'va_compat.c', + 'va_fool.c', + 'va_str.c', + 'va_trace.c', +] + +libva_headers = [ + 'va.h', + 'va_backend.h', + 'va_backend_vpp.h', + 'va_compat.h', + 'va_dec_hevc.h', + 'va_dec_jpeg.h', + 'va_dec_vp8.h', + 'va_dec_vp9.h', + 'va_drmcommon.h', + 'va_egl.h', + 'va_enc_hevc.h', + 'va_enc_h264.h', + 'va_enc_jpeg.h', + 'va_enc_vp8.h', + 'va_fei.h', + 'va_fei_h264.h', + 'va_fei_hevc.h', + 'va_enc_mpeg2.h', + 'va_enc_vp9.h', + 'va_str.h', + 'va_tpi.h', + 'va_vpp.h', + version_file, +] + +libva_headers_priv = [ + 'sysdeps.h', + 'va_fool.h', + 'va_internal.h', + 'va_trace.h', +] + +libva_sym = 'libva.syms' +libva_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libva_sym) + +install_headers(libva_headers, subdir : 'va') + +libva = shared_library( + 'va', + sources : libva_sources + + libva_headers + + libva_headers_priv, + soversion : libva_lt_current, + version : libva_lt_version, + c_args : ['-DVA_DRIVERS_PATH="' + driverdir + '"'] + va_c_args, + include_directories : configinc, + link_args : '-Wl,-version-script,' + libva_sym_path, + link_depends : libva_sym, + install : true, + dependencies : [ dl_dep ]) + +libva_dep = declare_dependency( + link_with : libva, + include_directories : configinc, + dependencies : [ dl_dep ]) + +if WITH_DRM + libva_drm_sources = [ + 'drm/va_drm.c', + 'drm/va_drm_auth.c', + 'drm/va_drm_utils.c', + ] + + libva_drm_headers = [ + 'drm/va_drm.h', + ] + + libva_drm_headers_priv = [ + 'drm/va_drm_auth.h', + 'drm/va_drm_auth_x11.h', + 'drm/va_drm_utils.h', + ] + + deps = [ libdrm_dep ] + + libva_drm_args = [] + if get_option('with_x11') != 'no' and x11_dep.found() + libva_drm_sources += [ 'drm/va_drm_auth_x11.c' ] + libva_drm_args += [ + '-DLIBVA_MAJOR_VERSION=@0@'.format(libva_major_version) + ] + deps += [ x11_dep ] + endif + + install_headers(libva_drm_headers, subdir : 'va') + + libva_drm = shared_library( + 'va-drm', + sources : libva_drm_sources + + libva_drm_headers + + libva_drm_headers_priv, + soversion : libva_lt_current, + version : libva_lt_version, + install : true, + c_args : libva_drm_args, + dependencies : deps + [ libva_dep ]) + + libva_drm_dep = declare_dependency( + link_with : libva_drm, + include_directories : configinc, + dependencies : deps) +endif + +if WITH_X11 + libva_x11_sources = [ + 'x11/dri2_util.c', + 'x11/va_dri2.c', + 'x11/va_dricommon.c', + 'x11/va_fglrx.c', + 'x11/va_nvctrl.c', + 'x11/va_x11.c', + ] + + libva_x11_headers = [ + 'va_x11.h', + 'x11/va_dri2.h', + 'x11/va_dricommon.h', + ] + + libva_x11_headers_priv = [ + 'x11/va_dri2str.h', + 'x11/va_dri2tokens.h', + 'x11/va_fglrx.h', + 'x11/va_nvctrl.h', + ] + + install_headers(libva_x11_headers, subdir : 'va') + + deps = [ libdrm_dep, x11_dep, xext_dep, xfixes_dep, libva_dep ] + + libva_x11 = shared_library( + 'va-x11', + sources : libva_x11_sources + + libva_x11_headers + + libva_x11_headers_priv, + soversion : libva_lt_current, + version : libva_lt_version, + install : true, + dependencies : deps) + + libva_x11_dep = declare_dependency( + link_with : libva_x11, + include_directories : configinc, + dependencies : deps) +endif + +if WITH_GLX + libva_glx_sources = [ + 'glx/va_glx.c', + 'glx/va_glx_impl.c', + ] + + libva_glx_headers = [ + 'glx/va_backend_glx.h', + 'glx/va_glx.h', + ] + + libva_glx_headers_priv = [ + 'glx/va_glx_impl.h', + 'glx/va_glx_private.h', + ] + + install_headers(libva_glx_headers, subdir : 'va') + + deps = [ gl_dep, libva_x11_dep ] + + libva_glx = shared_library( + 'va-glx', + sources : libva_glx_sources + + libva_glx_headers + + libva_glx_headers_priv, + soversion : libva_lt_current, + version : libva_lt_version, + install : true, + dependencies : deps) + + libva_glx_dep = declare_dependency( + link_with : libva_glx, + include_directories : configinc, + dependencies : deps) +endif + +if WITH_WAYLAND + libva_wayland_sources = [ + 'wayland/va_wayland.c', + 'wayland/va_wayland_drm.c', + 'wayland/va_wayland_emgd.c', + 'drm/va_drm_utils.c', + ] + + libva_wayland_headers = [ + 'wayland/va_backend_wayland.h', + 'wayland/va_wayland.h', + ] + + libva_wayland_headers_priv = [ + 'wayland/va_wayland_drm.h', + 'wayland/va_wayland_emgd.h', + 'wayland/va_wayland_private.h', + ] + + protocol_files = [ + custom_target( + 'wayland-drm-client-protocol.c', + output : 'wayland-drm-client-protocol.c', + input : 'wayland/wayland-drm.xml', + command : [wl_scanner, 'code', '@INPUT@', '@OUTPUT@']), + + custom_target( + 'wayland-drm-client-protocol.h', + output : 'wayland-drm-client-protocol.h', + input : 'wayland/wayland-drm.xml', + command : [wl_scanner, 'client-header', '@INPUT@', '@OUTPUT@']) + ] + + install_headers(libva_wayland_headers, subdir : 'va') + + deps = [ libdrm_dep, wayland_dep, libva_dep ] + + libva_wayland = shared_library( + 'va-wayland', + sources : libva_wayland_sources + + libva_wayland_headers + + libva_wayland_headers_priv + + protocol_files, + soversion : libva_lt_current, + version : libva_lt_version, + install : true, + dependencies : deps) + + libva_wayland_dep = declare_dependency( + link_with : libva_wayland, + include_directories : configinc, + dependencies : deps) +endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va.c new/libva-2.6.1/va/va.c --- old/libva-2.5.0/va/va.c 2019-06-17 12:35:14.000000000 +0200 +++ new/libva-2.6.1/va/va.c 2020-01-17 12:11:32.000000000 +0100 @@ -341,12 +341,65 @@ int ret = snprintf(name, namelen, "__vaDriverInit_%d_%d", major, minor); return ret > 0 && ret < namelen; } +/** retrieve the back end driver candidate num , by default it should be 1 + * if there are no vaGetNumCandidates implementation in the display context + * it should be 1 to avoid backward compatible issue */ +static VAStatus va_getDriverNumCandidates(VADisplay dpy, int *num_candidates) +{ + VADisplayContextP pDisplayContext = (VADisplayContextP)dpy; + *num_candidates = 1; + const char *driver_name_env = NULL; + VAStatus vaStatus = VA_STATUS_SUCCESS; + VADriverContextP ctx; + + ctx = CTX(dpy); + driver_name_env = getenv("LIBVA_DRIVER_NAME"); + + if (pDisplayContext->vaGetNumCandidates) + vaStatus = pDisplayContext->vaGetNumCandidates(pDisplayContext, num_candidates); + if ((ctx->override_driver_name) || (driver_name_env && (geteuid() == getuid()))) + *num_candidates = 1; + return vaStatus; +} -static VAStatus va_getDriverName(VADisplay dpy, char **driver_name) +static VAStatus va_getDriverNameByIndex(VADisplay dpy, char **driver_name, int candidate_index) { VADisplayContextP pDisplayContext = (VADisplayContextP)dpy; + const char *driver_name_env = NULL; + VADriverContextP ctx; + VAStatus status = VA_STATUS_SUCCESS; - return pDisplayContext->vaGetDriverName(pDisplayContext, driver_name); + ctx = CTX(dpy); + if (pDisplayContext->vaGetDriverNameByIndex) { + /*if vaGetDriverNameByIndex is implemented*/ + status = pDisplayContext->vaGetDriverNameByIndex(pDisplayContext, driver_name, candidate_index); + } else { + if (candidate_index == 0) + status = pDisplayContext->vaGetDriverName(pDisplayContext, driver_name); + else + status = VA_STATUS_ERROR_INVALID_PARAMETER; + } + driver_name_env = getenv("LIBVA_DRIVER_NAME"); + /*if user set driver name by vaSetDriverName */ + if (ctx->override_driver_name){ + if(*driver_name) + free(*driver_name); + *driver_name = strdup(ctx->override_driver_name); + if (!(*driver_name)) { + va_errorMessage(dpy, "va_getDriverNameByIndex failed with %s, out of memory\n",vaErrorStr(VA_STATUS_ERROR_ALLOCATION_FAILED)); + return VA_STATUS_ERROR_ALLOCATION_FAILED; + } + va_infoMessage(dpy, "User requested driver '%s'\n", *driver_name); + return VA_STATUS_SUCCESS; + } else if (driver_name_env && (geteuid() == getuid())) { + if(*driver_name) + free(*driver_name); + /*if user set driver name by environment variable*/ + *driver_name = strdup(driver_name_env); + va_infoMessage(dpy, "User environment variable requested driver '%s'\n", *driver_name); + return VA_STATUS_SUCCESS; + } + return status; } static char *va_getDriverPath(const char *driver_dir, const char *driver_name) @@ -417,6 +470,7 @@ int minor; } compatible_versions[] = { { VA_MAJOR_VERSION, VA_MINOR_VERSION }, + { VA_MAJOR_VERSION, 5 }, { VA_MAJOR_VERSION, 4 }, { VA_MAJOR_VERSION, 3 }, { VA_MAJOR_VERSION, 2 }, @@ -656,15 +710,13 @@ int *minor_version /* out */ ) { - const char *driver_name_env = NULL; char *driver_name = NULL; + int num_candidates = 1; + int candidate_index = 0; VAStatus vaStatus; - VADriverContextP ctx; CHECK_DISPLAY(dpy); - ctx = CTX(dpy); - va_TraceInit(dpy); va_FoolInit(dpy); @@ -672,46 +724,31 @@ va_MessagingInit(); va_infoMessage(dpy, "VA-API version %s\n", VA_VERSION_S); - - vaStatus = va_getDriverName(dpy, &driver_name); - - if (!ctx->override_driver_name) { - va_infoMessage(dpy, "va_getDriverName() returns %d\n", vaStatus); - - driver_name_env = getenv("LIBVA_DRIVER_NAME"); - } else if (vaStatus == VA_STATUS_SUCCESS) { - if (driver_name) + /*get backend driver candidate number, by default the value should be 1*/ + vaStatus = va_getDriverNumCandidates(dpy, &num_candidates); + if (vaStatus != VA_STATUS_SUCCESS) { + num_candidates = 1; + } + /*load driver one by one, until load success */ + for (candidate_index = 0; candidate_index < num_candidates; candidate_index ++) { + if(driver_name) free(driver_name); - - driver_name = strdup(ctx->override_driver_name); - if (!driver_name) { - vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; - va_errorMessage(dpy, "vaInitialize() failed with %s, out of memory\n", - vaErrorStr(vaStatus)); - return vaStatus; + vaStatus = va_getDriverNameByIndex(dpy, &driver_name, candidate_index); + if(vaStatus != VA_STATUS_SUCCESS) { + va_errorMessage(dpy, "vaGetDriverNameByIndex() failed with %s, driver_name = %s\n", vaErrorStr(vaStatus), driver_name); + break; } - va_infoMessage(dpy, "User requested driver '%s'\n", driver_name); - } + vaStatus = va_openDriver(dpy, driver_name); + va_infoMessage(dpy, "va_openDriver() returns %d\n", vaStatus); - if (driver_name_env && (geteuid() == getuid())) { - /* Don't allow setuid apps to use LIBVA_DRIVER_NAME */ - if (driver_name) /* memory is allocated in va_getDriverName */ - free(driver_name); + if (vaStatus == VA_STATUS_SUCCESS) { + break; + } - driver_name = strdup(driver_name_env); - vaStatus = VA_STATUS_SUCCESS; - va_infoMessage(dpy, "User requested driver '%s'\n", driver_name); } - if ((VA_STATUS_SUCCESS == vaStatus) && (driver_name != NULL)) { - vaStatus = va_openDriver(dpy, driver_name); - va_infoMessage(dpy, "va_openDriver() returns %d\n", vaStatus); - - *major_version = VA_MAJOR_VERSION; - *minor_version = VA_MINOR_VERSION; - } else - va_errorMessage(dpy, "va_getDriverName() failed with %s,driver_name=%s\n", - vaErrorStr(vaStatus), driver_name); + *major_version = VA_MAJOR_VERSION; + *minor_version = VA_MINOR_VERSION; if (driver_name) free(driver_name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va.h new/libva-2.6.1/va/va.h --- old/libva-2.5.0/va/va.h 2019-06-28 16:38:52.000000000 +0200 +++ new/libva-2.6.1/va/va.h 2019-12-17 14:46:07.000000000 +0100 @@ -761,6 +761,22 @@ * attribute value \c VAConfigAttribValMaxFrameSize represent max frame size support */ VAConfigAttribMaxFrameSize = 38, + /** \brief inter frame prediction directrion attribute. Read-only. + * this attribute conveys the prediction direction (backward or forword) for specific config + * the value could be VA_PREDICTION_DIRECTION_XXXX. it can be combined with VAConfigAttribEncMaxRefFrames + * to describe reference list , and the prediction direction. if this attrib is not present,both direction + * should be supported, no restriction. + * for example: normal HEVC encoding , maximum reference frame number in reflist 0 and reflist 1 is deduced + * by VAConfigAttribEncMaxRefFrames. so there are typical P frame, B frame, + * if VAConfigAttribPredictionDirection is also present. it will stipulate prediction direction in both + * reference list. if only one prediction direction present(such as PREVIOUS),all reference frame should be + * previous frame (PoC < current). + */ + VAConfigAttribPredictionDirection = 39, + /** \brief combined submission of multiple frames from different streams, it is optimization for different HW + * implementation, multiple frames encode/decode can improve HW concurrency + */ + VAConfigAttribMultipleFrame = 40, /**@}*/ VAConfigAttribTypeMax } VAConfigAttribType; @@ -863,14 +879,13 @@ /** @name Attribute values for VAConfigAttribDecJPEG */ /**@{*/ typedef union _VAConfigAttribValDecJPEG { - struct{ + struct { /** \brief Set to (1 << VA_ROTATION_xxx) for supported rotation angles. */ uint32_t rotation : 4; /** \brief Reserved for future use. */ uint32_t reserved : 28; - }bits; + } bits; uint32_t value; - uint32_t va_reserved[VA_PADDING_LOW]; } VAConfigAttribValDecJPEG; /** @name Attribute values for VAConfigAttribDecProcessing */ /**@{*/ @@ -990,6 +1005,19 @@ #define VA_ENC_QUANTIZATION_TRELLIS_SUPPORTED 0x00000001 /**@}*/ +/** @name Attribute values for VAConfigAttribPredictionDirection */ +/**@{*/ +/** \brief Driver support forward reference frame (inter frame for vpx, P frame for H26x MPEG) + * can work with the VAConfigAttribEncMaxRefFrames. for example: low delay B frame of HEVC. + * these value can be OR'd together. typical value should be VA_PREDICTION_DIRECTION_PREVIOUS + * or VA_PREDICTION_DIRECTION_PREVIOUS | VA_PREDICTION_DIRECTION_FUTURE, theoretically, there + * are no stream only include future reference frame. + */ +#define VA_PREDICTION_DIRECTION_PREVIOUS 0x00000001 +/** \brief Driver support backward prediction frame/slice */ +#define VA_PREDICTION_DIRECTION_FUTURE 0x00000002 +/**@}*/ + /** @name Attribute values for VAConfigAttribEncIntraRefresh */ /**@{*/ /** \brief Driver does not support intra refresh */ @@ -1086,6 +1114,21 @@ uint32_t value; } VAConfigAttribValEncRateControlExt; +/** \brief Attribute value for VAConfigAttribMultipleFrame*/ +typedef union _VAConfigAttribValMultipleFrame { + struct { + /** \brief max num of concurrent frames from different stream */ + uint32_t max_num_concurrent_frames : 8; + /** \brief indicate whether all stream must support same quality level + * if mixed_quality_level == 0, same quality level setting for multple streams is required + * if mixed_quality_level == 1, different stream can have different quality level*/ + uint32_t mixed_quality_level : 1; + /** \brief reserved bit for future, must be zero */ + uint32_t reserved : 23; + } bits; + uint32_t value; +}VAConfigAttribValMultipleFrame; + /** @name Attribute values for VAConfigAttribProcessingRate. */ /**@{*/ /** \brief Driver does not support processing rate report */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va_backend.h new/libva-2.6.1/va/va_backend.h --- old/libva-2.5.0/va/va_backend.h 2019-06-17 12:35:14.000000000 +0200 +++ new/libva-2.6.1/va/va_backend.h 2019-12-25 16:38:29.000000000 +0100 @@ -651,9 +651,19 @@ void *error_callback_user_context; VAMessageCallback info_callback; void *info_callback_user_context; + VAStatus (*vaGetNumCandidates) ( + VADisplayContextP ctx, + int * num_candidates + ); + + VAStatus (*vaGetDriverNameByIndex) ( + VADisplayContextP ctx, + char **driver_name, + int candidate_index + ); /** \brief Reserved bytes for future use, must be zero */ - unsigned long reserved[32]; + unsigned long reserved[30]; }; typedef VAStatus (*VADriverInit) ( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va_dec_hevc.h new/libva-2.6.1/va/va_dec_hevc.h --- old/libva-2.5.0/va/va_dec_hevc.h 2019-03-04 17:20:41.000000000 +0100 +++ new/libva-2.6.1/va/va_dec_hevc.h 2019-12-17 14:46:07.000000000 +0100 @@ -485,10 +485,12 @@ uint16_t num_entry_point_offsets; /** HEVC syntax element. */ uint16_t entry_offset_to_subset_array; + /** \brief Number of emulation prevention bytes in slice header. */ + uint16_t slice_data_num_emu_prevn_bytes; /**@}*/ /** \brief Reserved bytes for future use, must be zero */ - uint32_t va_reserved[VA_PADDING_LOW - 1]; + uint32_t va_reserved[VA_PADDING_LOW - 2]; } VASliceParameterBufferHEVC; /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va_enc_hevc.h new/libva-2.6.1/va/va_enc_hevc.h --- old/libva-2.5.0/va/va_enc_hevc.h 2019-06-14 18:36:08.000000000 +0200 +++ new/libva-2.6.1/va/va_enc_hevc.h 2019-12-17 14:46:07.000000000 +0100 @@ -222,8 +222,19 @@ uint32_t pcm_loop_filter_disabled_flag : 1; /** \brief Same as the HEVC bitstream syntax element. */ uint32_t sps_temporal_mvp_enabled_flag : 1; - - uint32_t reserved_bits : 16; + /** \brief Indicates whether or not the encoding is in low delay mode. + * 0 normal sequence + * 1 no random access B will be coded . and the coding type could be only I, P or LDB + * this flag only indicates the frame coding type of the sequence. + */ + uint32_t low_delay_seq : 1; + /** \brief Indicates whether or not the encoding is in dyadic hierarchical GOP structure + * the default value 0, BRC would treat is as flat structure. if HierachicalFlag == 1, + * application would enable Qp Modulation + */ + uint32_t hierachical_flag : 1; + /** \brief keep for future , should be set to 0 */ + uint32_t reserved_bits : 14; } bits; uint32_t value; } seq_fields; @@ -316,7 +327,6 @@ uint8_t max_bytes_per_pic_denom; /** \brief Same as the HEVC bitstream syntax element. */ uint8_t max_bits_per_min_cu_denom; - /** \brief Reserved bytes for future use, must be zero */ uint32_t va_reserved[VA_PADDING_MEDIUM]; /**@}*/ @@ -521,8 +531,16 @@ uint32_t value; } pic_fields; + /** \brief When hierachical_level_plus1 > 0, hierachical_level_plus1-1 indicates + *the current frame's level.when it > 0. B1, B2 setting in CodingType can be treated as B, + *hirachical level is determined by this variable.When hierachical_level_plus1 == 0, + *hierarchical level information still comes from coding_type. + */ + uint8_t hierarchical_level_plus1; + /** \brief Reserved bytes for future use, must be zero */ + uint8_t va_byte_reserved[3]; /** \brief Reserved bytes for future use, must be zero */ - uint32_t va_reserved[VA_PADDING_HIGH]; + uint32_t va_reserved[VA_PADDING_HIGH - 1]; } VAEncPictureParameterBufferHEVC; /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va_str.c new/libva-2.6.1/va/va_str.c --- old/libva-2.5.0/va/va_str.c 2019-06-28 16:38:52.000000000 +0200 +++ new/libva-2.6.1/va/va_str.c 2019-12-17 14:46:07.000000000 +0100 @@ -124,6 +124,8 @@ TOSTR(VAConfigAttribQPBlockSize); TOSTR(VAConfigAttribStats); TOSTR(VAConfigAttribMaxFrameSize); + TOSTR(VAConfigAttribPredictionDirection); + TOSTR(VAConfigAttribMultipleFrame); case VAConfigAttribTypeMax: break; } return "<unknown config attribute type>"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va_trace.c new/libva-2.6.1/va/va_trace.c --- old/libva-2.5.0/va/va_trace.c 2019-06-26 12:21:11.000000000 +0200 +++ new/libva-2.6.1/va/va_trace.c 2019-12-17 14:46:07.000000000 +0100 @@ -99,8 +99,6 @@ }; struct trace_log_files_manager { - int num; - struct trace_log_file log_file[MAX_TRACE_THREAD_NUM]; }; @@ -848,9 +846,6 @@ for(i = 0;i < MAX_TRACE_THREAD_NUM;i++) { struct trace_log_file *plog_file = NULL; - if(pva_trace->log_files_manager.num <= 0) - break; - plog_file = &pva_trace->log_files_manager.log_file[i]; if(plog_file) { if(plog_file->fn_log) @@ -858,8 +853,6 @@ if(plog_file->fp_log) fclose(plog_file->fp_log); - - pva_trace->log_files_manager.num--; } } @@ -5026,6 +5019,9 @@ } break; case VAProfileVP9Profile0: + case VAProfileVP9Profile1: + case VAProfileVP9Profile2: + case VAProfileVP9Profile3: for (j=0; j<num_elements; j++) { va_TraceMsg(trace_ctx, "\telement[%d] = \n", j); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va_version.h new/libva-2.6.1/va/va_version.h --- old/libva-2.5.0/va/va_version.h 2019-07-05 16:14:49.000000000 +0200 +++ new/libva-2.6.1/va/va_version.h 2020-01-17 12:30:16.000000000 +0100 @@ -37,7 +37,7 @@ * * The minor version of VA-API (2, if %VA_VERSION is 1.2.3) */ -#define VA_MINOR_VERSION 5 +#define VA_MINOR_VERSION 6 /** * VA_MICRO_VERSION: @@ -51,7 +51,7 @@ * * The full version of VA-API, like 1.2.3 */ -#define VA_VERSION 1.5.0 +#define VA_VERSION 1.6.0 /** * VA_VERSION_S: @@ -59,7 +59,7 @@ * The full version of VA-API, in string form (suited for string * concatenation) */ -#define VA_VERSION_S "1.5.0" +#define VA_VERSION_S "1.6.0" /** * VA_VERSION_HEX: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/va_vpp.h new/libva-2.6.1/va/va_vpp.h --- old/libva-2.5.0/va/va_vpp.h 2019-06-26 13:06:02.000000000 +0200 +++ new/libva-2.6.1/va/va_vpp.h 2019-12-17 14:46:07.000000000 +0100 @@ -687,12 +687,53 @@ * * See ISO/IEC 23001-8 or ITU H.273, section 8.1 and table 2. * Only used if the color standard in use is \c VAColorStandardExplicit. + * Below list the typical colour primaries for the reference. + * --------------------------------------------------------------------------------- + * | Value | Primaries | Informative Remark | + * -------------------------------------------------------------------------------- + * | 1 |primary x y |Rec.ITU-R BT.709-5 | + * | |green 0.300 0.600 |IEC 61966-2-1(sRGB or sYCC) | + * | |blue 0.150 0.060 | | + * | |red 0.640 0.330 | | + * | |whiteD65 0.3127 0.3290 | | + * --------------------------------------------------------------------------------- + * | 6 |primary x y |Rec.ITU-R BT.601-6 525 | + * | |green 0.310 0.595 | | + * | |blue 0.155 0.070 | | + * | |red 0.630 0.340 | | + * | |whiteD65 0.3127 0.3290 | | + * --------------------------------------------------------------------------------- + * | 9 |primary x y |Rec.ITU-R BT.2020 | + * | |green 0.170 0.797 | | + * | |blue 0.131 0.046 | | + * | |red 0.708 0.292 | | + * | |whiteD65 0.3127 0.3290 | | + * --------------------------------------------------------------------------------- */ uint8_t colour_primaries; /** Transfer characteristics. * * See ISO/IEC 23001-8 or ITU H.273, section 8.2 and table 3. * Only used if the color standard in use is \c VAColorStandardExplicit. + * Below list the typical transfer characteristics for the reference. + * ----------------------------------------------------------- + * | Value | Informative Remark | + * ----------------------------------------------------------- + * | 1 |Rec.ITU-R BT.709-5 | + * | |colour gamut system | + * ----------------------------------------------------------- + * | 4 |Assumed display gamma 2.2 | + * ----------------------------------------------------------- + * | 6 |Rec.ITU-R BT.601-6 525 or 625 | + * ----------------------------------------------------------- + * | 8 |Linear transfer characteristics | + * ----------------------------------------------------------- + * | 13 |IEC 61966-2-1(sRGB or sYCC) | + * ----------------------------------------------------------- + * | 14,15 |Rec.ITU-R BT.2020 | + * ----------------------------------------------------------- + * | 16 |SMPTE ST 2084 for 10,12,14 and 16bit system | + * ----------------------------------------------------------- */ uint8_t transfer_characteristics; /** Matrix coefficients. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/wayland/va_wayland_drm.c new/libva-2.6.1/va/wayland/va_wayland_drm.c --- old/libva-2.5.0/va/wayland/va_wayland_drm.c 2019-06-17 12:35:14.000000000 +0200 +++ new/libva-2.6.1/va/wayland/va_wayland_drm.c 2019-12-25 16:38:29.000000000 +0100 @@ -117,6 +117,29 @@ }; static VAStatus +va_DisplayContextGetNumCandidates( + VADisplayContextP pDisplayContext, + int *candidate_index +) +{ + VADriverContextP const ctx = pDisplayContext->pDriverContext; + + return VA_DRM_GetNumCandidates(ctx, candidate_index); +} + +static VAStatus +va_DisplayContextGetDriverNameByIndex( + VADisplayContextP pDisplayContext, + char **driver_name_ptr, + int candidate_index +) +{ + VADriverContextP const ctx = pDisplayContext->pDriverContext; + + return VA_DRM_GetDriverName(ctx, driver_name_ptr, candidate_index); +} + +static VAStatus va_DisplayContextGetDriverName( VADisplayContextP pDisplayContext, char **driver_name_ptr @@ -124,7 +147,7 @@ { VADriverContextP const ctx = pDisplayContext->pDriverContext; - return VA_DRM_GetDriverName(ctx, driver_name_ptr); + return VA_DRM_GetDriverName(ctx, driver_name_ptr, 0); } void @@ -237,6 +260,8 @@ wl_drm_ctx->is_authenticated = 0; pDisplayContext->opaque = wl_drm_ctx; pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName; + pDisplayContext->vaGetNumCandidates = va_DisplayContextGetNumCandidates; + pDisplayContext->vaGetDriverNameByIndex = va_DisplayContextGetDriverNameByIndex; drm_state = calloc(1, sizeof(struct drm_state)); if (!drm_state) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libva-2.5.0/va/wayland/wayland-drm-client-protocol.c new/libva-2.6.1/va/wayland/wayland-drm-client-protocol.c --- old/libva-2.5.0/va/wayland/wayland-drm-client-protocol.c 2019-04-26 17:23:39.000000000 +0200 +++ new/libva-2.6.1/va/wayland/wayland-drm-client-protocol.c 2019-12-24 14:45:00.000000000 +0100 @@ -1,5 +1,5 @@ #include "sysdeps.h" -/* Generated by wayland-scanner 1.14.0 */ +/* Generated by wayland-scanner 1.16.0 */ /* * Copyright © 2008-2011 Kristian Høgsberg ++++++ libva-2.5.0.tar.bz2.sha1sum -> libva-2.6.1.tar.bz2.sha1sum ++++++ --- /work/SRC/openSUSE:Factory/libva/libva-2.5.0.tar.bz2.sha1sum 2020-01-21 17:17:32.886800044 +0100 +++ /work/SRC/openSUSE:Factory/.libva.new.26092/libva-2.6.1.tar.bz2.sha1sum 2020-03-06 21:26:24.345519330 +0100 @@ -1 +1 @@ -5bd2b0bc9d1e49cf1e21d9a63696f13a1483bd86 libva-2.5.0.tar.bz2 +6b218e5622174a37fd0cfd8777b10717c95bd20e libva-2.6.1.tar.bz2