Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libva for openSUSE:Factory checked 
in at 2026-01-07 16:00:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libva (Old)
 and      /work/SRC/openSUSE:Factory/.libva.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libva"

Wed Jan  7 16:00:46 2026 rev:77 rq:1325622 version:2.23.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libva/libva.changes      2024-07-04 
16:22:57.838830548 +0200
+++ /work/SRC/openSUSE:Factory/.libva.new.1928/libva.changes    2026-01-07 
16:01:01.430141120 +0100
@@ -1,0 +2,23 @@
+Sun Dec 28 23:41:21 UTC 2025 - Dirk Müller <[email protected]>
+
+- update to 2.23.0:
+  * va: add VAProfileH264High422
+  * va: add av1 profile2
+  * va: correct the description of segment id map buffer for vp9e
+  * va: encode segmentation map refine
+  * va: add defintions for segment id block size
+  * trace: support more format surface dump
+  * trace:add vpp output surface dump support
+  * trace: add Y410 support in dump surface
+  * trace: add trace for vaDeriveImage
+  * trace: add missing trace fields for
+    VAProcPipelineParameterBuffer
+  * doc: add backward compatibility declarison declaration
+  * android: Remove unnecessary Android code
+  * android: Include directories and generated header files in
+    Android.bp
+  * android: Update Android.bp to generate va_version.h and build
+    only for x86_64
+  * android: Add Android.bp to replace mk files
+
+-------------------------------------------------------------------

Old:
----
  libva-2.22.0.tar.gz

New:
----
  libva-2.23.0.tar.gz

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

Other differences:
------------------
++++++ libva.spec ++++++
--- /var/tmp/diff_new_pack.x8oNpe/_old  2026-01-07 16:01:02.046166760 +0100
+++ /var/tmp/diff_new_pack.x8oNpe/_new  2026-01-07 16:01:02.050166926 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libva
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -30,7 +30,7 @@
 
 Name:           libva%{name_suffix}
 %define _name   libva
-Version:        2.22.0
+Version:        2.23.0
 Release:        0
 Summary:        Video Acceleration (VA) API
 License:        MIT

++++++ libva-2.22.0.tar.gz -> libva-2.23.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/.github/workflows/docs.yml 
new/libva-2.23.0/.github/workflows/docs.yml
--- old/libva-2.22.0/.github/workflows/docs.yml 2024-06-20 08:49:27.000000000 
+0200
+++ new/libva-2.23.0/.github/workflows/docs.yml 2025-12-12 08:58:13.000000000 
+0100
@@ -17,7 +17,7 @@
   build:
     runs-on: ubuntu-22.04
     steps:
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@v6
     - name: install prerequisites
       run: |
         sudo apt-get update
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/.github/workflows/freebsd.yml 
new/libva-2.23.0/.github/workflows/freebsd.yml
--- old/libva-2.22.0/.github/workflows/freebsd.yml      2024-06-20 
08:49:27.000000000 +0200
+++ new/libva-2.23.0/.github/workflows/freebsd.yml      2025-12-12 
08:58:13.000000000 +0100
@@ -10,7 +10,7 @@
     runs-on: ubuntu-latest
     steps:
     - name: 'Checkout'
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
     - name: 'Install prerequisites and build'
       uses: vmactions/freebsd-vm@v1
       with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/.github/workflows/ghpages.yml 
new/libva-2.23.0/.github/workflows/ghpages.yml
--- old/libva-2.22.0/.github/workflows/ghpages.yml      2024-06-20 
08:49:27.000000000 +0200
+++ new/libva-2.23.0/.github/workflows/ghpages.yml      2025-12-12 
08:58:13.000000000 +0100
@@ -22,7 +22,7 @@
     runs-on: ubuntu-22.04
     steps:
     - name: 'Checkout'
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
       with:
         fetch-depth: 0
     - name: 'Get latest tag'
@@ -47,7 +47,7 @@
 
     - name: 'Upload the artifacts'
       if: github.ref_name == env.GIT_LATEST_TAG
-      uses: actions/upload-pages-artifact@v3
+      uses: actions/upload-pages-artifact@v4
       with:
         path: "_build/doc/html-out"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/.github/workflows/install-clang.sh 
new/libva-2.23.0/.github/workflows/install-clang.sh
--- old/libva-2.22.0/.github/workflows/install-clang.sh 2024-06-20 
08:49:27.000000000 +0200
+++ new/libva-2.23.0/.github/workflows/install-clang.sh 2025-12-12 
08:58:13.000000000 +0100
@@ -10,13 +10,13 @@
 if ! which $CC >/dev/null 2>&1; then
        case $DISTRO in
                "ubuntu-22.04") distro_name=jammy;;
-               "ubuntu-20.04") distro_name=focal;;
+               "ubuntu-24.04") distro_name=noble;;
                *)
                echo "Unknown distribution $DISTRO"
                exit 1
        esac
        case $1 in
-               "14" | "15") llvm_version=$1;;
+               "18" | "15") llvm_version=$1;;
                *)
                echo "Unknown llvm version $1"
                exit 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/.github/workflows/style.yml 
new/libva-2.23.0/.github/workflows/style.yml
--- old/libva-2.22.0/.github/workflows/style.yml        2024-06-20 
08:49:27.000000000 +0200
+++ new/libva-2.23.0/.github/workflows/style.yml        2025-12-12 
08:58:13.000000000 +0100
@@ -10,7 +10,7 @@
     runs-on: ubuntu-22.04
     steps:
     - name: 'Checkout'
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
     - name: 'Install prerequisites'
       run: |
         sudo apt-get update
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/.github/workflows/ubuntu.yml 
new/libva-2.23.0/.github/workflows/ubuntu.yml
--- old/libva-2.22.0/.github/workflows/ubuntu.yml       2024-06-20 
08:49:27.000000000 +0200
+++ new/libva-2.23.0/.github/workflows/ubuntu.yml       2025-12-12 
08:58:13.000000000 +0100
@@ -12,8 +12,8 @@
   test:
     strategy:
       matrix:
-        compiler: [clang-15, gcc]
-        os: [ubuntu-22.04, ubuntu-20.04]
+        compiler: [clang, gcc]
+        os: [ubuntu-24.04, ubuntu-22.04]
         build: [meson, autotools]
     runs-on: ${{ matrix.os }}
     env:
@@ -21,10 +21,13 @@
       DISTRO: ${{ matrix.os }}
     steps:
     - name: 'Checkout'
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
     - name: 'Install toolchain'
-      if: ${{ (matrix.compiler == 'clang-15') }}
+      if: ${{ (matrix.compiler == 'clang') && (matrix.os == 'ubuntu-22.04') }}
       run: .github/workflows/install-clang.sh 15
+    - name: 'Install toolchain'
+      if: ${{ (matrix.compiler == 'clang') && (matrix.os == 'ubuntu-24.04') }}
+      run: .github/workflows/install-clang.sh 18
     - name: 'Install prerequisites'
       run: |
         sudo apt-get update
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/.github/workflows/windows.yml 
new/libva-2.23.0/.github/workflows/windows.yml
--- old/libva-2.22.0/.github/workflows/windows.yml      2024-06-20 
08:49:27.000000000 +0200
+++ new/libva-2.23.0/.github/workflows/windows.yml      2025-12-12 
08:58:13.000000000 +0100
@@ -10,9 +10,9 @@
     runs-on: windows-2022
     steps:
     - name: 'Checkout'
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
     - name: 'Setup Python'
-      uses: actions/setup-python@v5
+      uses: actions/setup-python@v6
       with:
         python-version: '3.x'
     - name: 'Install Meson'
@@ -31,9 +31,9 @@
     runs-on: windows-2022
     steps:
     - name: 'Checkout'
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
     - name: 'Setup Python'
-      uses: actions/setup-python@v5
+      uses: actions/setup-python@v6
       with:
         python-version: '3.x'
     - name: 'Install Meson'
@@ -57,7 +57,7 @@
         shell: msys2 {0}
     steps:
     - name: 'Checkout'
-      uses: actions/checkout@v4
+      uses: actions/checkout@v6
     - name: 'Setup MSYS2'
       uses: msys2/setup-msys2@v2
       with:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/Android.bp new/libva-2.23.0/Android.bp
--- old/libva-2.22.0/Android.bp 1970-01-01 01:00:00.000000000 +0100
+++ new/libva-2.23.0/Android.bp 2025-12-12 08:58:13.000000000 +0100
@@ -0,0 +1,137 @@
+// Copyright (c) 2017-2023 Intel Corporation
+//
+// 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, sublicense, 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 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 NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS 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.
+
+package {
+    default_applicable_licenses: ["external_intel_libva_license"],
+}
+
+license {
+    name: "external_intel_libva_license",
+    visibility: [":__subpackages__"],
+    license_text: [
+        "COPYING",
+    ],
+}
+
+sh_binary_host {
+    name: "libva_gen_version_script",
+    src: "build/gen_version.sh",
+}
+
+genrule {
+    name: "libva_gen_headers",
+    srcs: [
+        "configure.ac",
+        "va/va_version.h.in",
+        "va/drm/va_drm.h",
+    ],
+    tools: [
+        "libva_gen_version_script",
+    ],
+    out: [
+        "va/va_version.h",
+        "va/va_drm.h",
+    ],
+    cmd: "$(location libva_gen_version_script) " +
+        "$$(dirname $(location configure.ac)) " +
+        "$(location va/va_version.h.in) > $(location va/va_version.h);" +
+        "cp $(location va/drm/va_drm.h) $(location va/va_drm.h)",
+}
+
+cc_library_headers {
+    name: "libva_headers",
+
+    export_include_dirs: [
+        ".",
+        "va",
+        "va/drm",
+    ],
+
+    generated_headers: [
+        "libva_gen_headers",
+    ],
+    export_generated_headers: [
+        "libva_gen_headers",
+    ],
+
+    vendor: true,
+    enabled: false,
+    arch: {
+        x86_64: {
+            enabled: true,
+        },
+    },
+}
+
+cc_library_shared {
+    name: "libva",
+
+    shared_libs: [
+        "libdl",
+        "libdrm",
+        "libcutils",
+        "liblog",
+    ],
+
+    local_include_dirs: [
+        "va",
+    ],
+
+    generated_headers: [
+        "libva_gen_headers",
+    ],
+    export_generated_headers: [
+        "libva_gen_headers",
+    ],
+    export_include_dirs: [
+        ".",
+    ],
+
+    header_libs: [
+        "liblog_headers",
+    ],
+
+    srcs: [
+        "va/va.c",
+        "va/va_trace.c",
+        "va/va_str.c",
+        "va/drm/va_drm.c",
+        "va/drm/va_drm_auth.c",
+        "va/drm/va_drm_utils.c",
+    ],
+
+    cflags: [
+        "-Werror",
+        "-Winvalid-pch",
+        "-DANDROID",
+        "-DSYSCONFDIR=\"/vendor/etc\"",
+        "-DLOG_TAG=\"libva\"",
+    ],
+
+    arch: {
+        x86_64: {
+            cflags: ["-DVA_DRIVERS_PATH=\"/vendor/lib64\""],
+            enabled: true,
+        },
+    },
+
+    vendor: true,
+    enabled: false,
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/Android.mk new/libva-2.23.0/Android.mk
--- old/libva-2.22.0/Android.mk 2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/Android.mk 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-# Recursive call sub-folder Android.mk
-#
-
- include $(call all-subdir-makefiles)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/NEWS new/libva-2.23.0/NEWS
--- old/libva-2.22.0/NEWS       2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/NEWS       2025-12-12 08:58:13.000000000 +0100
@@ -1,5 +1,22 @@
-libva NEWS -- summary of user visible changes.  2024-06-20
-Copyright (C) 2009-2024 Intel Corporation
+libva NEWS -- summary of user visible changes.  2025-12-12
+Copyright (C) 2009-2025 Intel Corporation
+
+version 2.23.0 - 12.Dec.2025
+* va: add VAProfileH264High422
+* va: add av1 profile2
+* va: correct the description of segment id map buffer for vp9e
+* va: encode segmentation map refine
+* va: add defintions for segment id block size
+* trace: support more format surface dump
+* trace:add vpp output surface dump support
+* trace: add Y410 support in dump surface
+* trace: add trace for vaDeriveImage
+* trace: add missing trace fields for VAProcPipelineParameterBuffer
+* doc: add backward compatibility declarison declaration
+* android: Remove unnecessary Android code
+* android: Include directories and generated header files in Android.bp
+* android: Update Android.bp to generate va_version.h and build only for x86_64
+* android: Add Android.bp to replace mk files
 
 version 2.22.0 - 20.Jun.2024
 * va:Add VVC decode LibVA interface.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/README.md new/libva-2.23.0/README.md
--- old/libva-2.22.0/README.md  2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/README.md  2025-12-12 08:58:13.000000000 +0100
@@ -14,6 +14,12 @@
 
 The libva development team can be reached via github issues.
 
+# Backward Compatibility
+No code changes may be introduced that would regress support for existing API. 
 All contributions must ensure continued compatibility and functionality. 
Failure to maintain API compatibility may result in the rejection or reversion 
of the contribution.
+
+Any deliberate modifications or removal of existing API will be transparently 
communicated in the release notes.
+
+API options are solely considered as a stable interface. Any debug parameters, 
environmental variables, and internal data structures, are not considered as an 
interface and may be changed or removed at any time.
 
 # Build and Install Libva
 *This build documentation was tested under clear Ubuntu Server 18.04 (with 
gcc-7.3.0, gcc-8.1.0 and clang-6.0 compilers) but it should work on another OS 
distributions with various versions of gcc and clang.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/configure.ac 
new/libva-2.23.0/configure.ac
--- old/libva-2.22.0/configure.ac       2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/configure.ac       2025-12-12 08:58:13.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], [22])
+m4_define([va_api_minor_version], [23])
 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.22.0/meson.build new/libva-2.23.0/meson.build
--- old/libva-2.22.0/meson.build        2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/meson.build        2025-12-12 08:58:13.000000000 +0100
@@ -7,7 +7,7 @@
 # - reset micro version to zero when VA-API major or minor version is changed
 project(
   'libva', 'c',
-  version : '2.22.0',
+  version : '2.23.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 = 22
+va_api_minor_version = 23
 va_api_micro_version = 0
 
 va_api_version = '@0@.@1@.@2@'.format(va_api_major_version,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/Android.mk 
new/libva-2.23.0/va/Android.mk
--- old/libva-2.22.0/va/Android.mk      2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/Android.mk      1970-01-01 01:00:00.000000000 +0100
@@ -1,102 +0,0 @@
-# Copyright (c) 2007 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 PRECISION INSIGHT 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.
-
-# For libva
-# =====================================================
-
-LOCAL_PATH:= $(call my-dir)
-
-LIBVA_DRIVERS_PATH_32 := /vendor/lib/dri
-LIBVA_DRIVERS_PATH_64 := /vendor/lib64/dri
-
-include $(CLEAR_VARS)
-
-#LIBVA_MINOR_VERSION := 31
-#LIBVA_MAJOR_VERSION := 0
-
-IGNORED_WARNNING = \
-       -Wno-sign-compare \
-       -Wno-missing-field-initializers \
-       -Wno-unused-parameter \
-
-LOCAL_SRC_FILES := \
-       va.c \
-       va_trace.c \
-       va_str.c
-
-LOCAL_CFLAGS_32 += \
-       -DVA_DRIVERS_PATH="\"$(LIBVA_DRIVERS_PATH_32)\"" \
-
-LOCAL_CFLAGS_64 += \
-       -DVA_DRIVERS_PATH="\"$(LIBVA_DRIVERS_PATH_64)\"" \
-
-LOCAL_CFLAGS := \
-       $(IGNORED_WARNNING) \
-       -DLOG_TAG=\"libva\"
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := libva
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_PROPRIETARY_MODULE := true
-
-LOCAL_SHARED_LIBRARIES := libdl libdrm libcutils liblog
-
-intermediates := $(call local-generated-sources-dir)
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := \
-       $(intermediates) \
-       $(LOCAL_C_INCLUDES)
-
-GEN := $(intermediates)/va/va_version.h
-$(GEN): SCRIPT := $(LOCAL_PATH)/../build/gen_version.sh
-$(GEN): PRIVATE_CUSTOM_TOOL = sh $(SCRIPT) $(<D)/.. $< > $@
-$(GEN): $(intermediates)/va/%.h : $(LOCAL_PATH)/%.h.in 
$(LOCAL_PATH)/../configure.ac
-       $(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN) 
-
-include $(BUILD_SHARED_LIBRARY)
-
-# For libva-android
-# =====================================================
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-       android/va_android.cpp \
-       drm/va_drm_utils.c
-
-LOCAL_CFLAGS += \
-       -DLOG_TAG=\"libva-android\" \
-       $(IGNORED_WARNNING)
-
-LOCAL_C_INCLUDES += \
-       $(LOCAL_PATH)/drm
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := libva-android
-LOCAL_PROPRIETARY_MODULE := true
-
-LOCAL_SHARED_LIBRARIES := libva libdrm liblog
-
-include $(BUILD_SHARED_LIBRARY)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/android/Makefile.am 
new/libva-2.23.0/va/android/Makefile.am
--- old/libva-2.22.0/va/android/Makefile.am     2024-06-20 08:49:27.000000000 
+0200
+++ new/libva-2.23.0/va/android/Makefile.am     1970-01-01 01:00:00.000000000 
+0100
@@ -1,24 +0,0 @@
-# Copyright (c) 2007 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 PRECISION INSIGHT 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.
-
-# Extra clean files so that maintainer-clean removes *everything*
-MAINTAINERCLEANFILES = Makefile.in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/android/va_android.cpp 
new/libva-2.23.0/va/android/va_android.cpp
--- old/libva-2.22.0/va/android/va_android.cpp  2024-06-20 08:49:27.000000000 
+0200
+++ new/libva-2.23.0/va/android/va_android.cpp  1970-01-01 01:00:00.000000000 
+0100
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2007 Intel Corporation. All Rights Reserved.
- * Copyright (c) 2023 Emil Velikov
- *
- * 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 PRECISION INSIGHT 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.
- */
-
-#define _GNU_SOURCE 1
-#include "sysdeps.h"
-#include "va.h"
-#include "va_backend.h"
-#include "va_internal.h"
-#include "va_trace.h"
-#include "va_android.h"
-#include "va_drmcommon.h"
-#include "va_drm_utils.h"
-#include <stdarg.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <dlfcn.h>
-#include <errno.h>
-
-
-#define CHECK_SYMBOL(func) { if (!func) printf("func %s not found\n", #func); 
return VA_STATUS_ERROR_UNKNOWN; }
-#define DEVICE_NAME "/dev/dri/renderD128"
-
-static void va_DisplayContextDestroy(
-    VADisplayContextP pDisplayContext
-)
-{
-    struct drm_state *drm_state;
-
-    if (pDisplayContext == NULL)
-        return;
-
-    /* close the open-ed DRM fd */
-    drm_state = (struct drm_state *)pDisplayContext->pDriverContext->drm_state;
-    close(drm_state->fd);
-
-    free(pDisplayContext->pDriverContext->drm_state);
-    free(pDisplayContext->pDriverContext);
-    free(pDisplayContext);
-}
-
-static VAStatus va_DisplayContextConnect(
-    VADisplayContextP pDisplayContext
-)
-{
-    VADriverContextP const ctx = pDisplayContext->pDriverContext;
-    struct drm_state * const drm_state = (struct drm_state *)ctx->drm_state;
-
-    drm_state->fd = open(DEVICE_NAME, O_RDWR | O_CLOEXEC);
-    if (drm_state->fd < 0) {
-        fprintf(stderr, "Cannot open DRM device '%s': %d, %s\n",
-                DEVICE_NAME, errno, strerror(errno));
-        return VA_STATUS_ERROR_UNKNOWN;
-    }
-    drm_state->auth_type = VA_DRM_AUTH_CUSTOM;
-    return VA_STATUS_SUCCESS;
-}
-
-static VAStatus
-va_DisplayContextGetDriverNames(
-    VADisplayContextP pDisplayContext,
-    char            **drivers,
-    unsigned         *num_drivers
-)
-{
-    VADriverContextP const ctx = pDisplayContext->pDriverContext;
-    VAStatus status = va_DisplayContextConnect(pDisplayContext);
-    if (status != VA_STATUS_SUCCESS)
-        return status;
-
-    return VA_DRM_GetDriverNames(ctx, drivers, num_drivers);
-}
-
-VADisplay vaGetDisplay(
-    void *native_dpy /* implementation specific */
-)
-{
-    VADisplayContextP pDisplayContext;
-    VADriverContextP  pDriverContext;
-    struct drm_state *drm_state;
-
-    if (!native_dpy)
-        return NULL;
-
-    pDisplayContext = va_newDisplayContext();
-    if (!pDisplayContext)
-        return NULL;
-
-    pDisplayContext->vaDestroy       = va_DisplayContextDestroy;
-    pDisplayContext->vaGetDriverNames = va_DisplayContextGetDriverNames;
-
-    pDriverContext = va_newDriverContext(pDisplayContext);
-    if (!pDriverContext) {
-        free(pDisplayContext);
-        return NULL;
-    }
-
-    pDriverContext->native_dpy   = (void *)native_dpy;
-    pDriverContext->display_type = VA_DISPLAY_ANDROID;
-
-    drm_state = (struct drm_state*)calloc(1, sizeof(*drm_state));
-    if (!drm_state) {
-        free(pDisplayContext);
-        free(pDriverContext);
-        return NULL;
-    }
-
-    pDriverContext->drm_state = drm_state;
-
-    return (VADisplay)pDisplayContext;
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va.c new/libva-2.23.0/va/va.c
--- old/libva-2.22.0/va/va.c    2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va.c    2025-12-12 08:58:13.000000000 +0100
@@ -1938,6 +1938,7 @@
     ctx = CTX(dpy);
 
     va_status = ctx->vtable->vaDeriveImage(ctx, surface, image);
+    VA_TRACE_LOG(va_TraceDeriveImage, dpy, surface, image);
     VA_TRACE_RET(dpy, va_status);
     return va_status;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va.h new/libva-2.23.0/va/va.h
--- old/libva-2.22.0/va/va.h    2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va.h    2025-12-12 08:58:13.000000000 +0100
@@ -541,7 +541,9 @@
     VAProfileProtected                  = 35,
     VAProfileH264High10                 = 36,
     VAProfileVVCMain10                  = 37,
-    VAProfileVVCMultilayerMain10        = 38
+    VAProfileVVCMultilayerMain10        = 38,
+    VAProfileAV1Profile2                = 39,
+    VAProfileH264High422                = 40
 } VAProfile;
 
 /**
@@ -1053,6 +1055,14 @@
      * columns supported for encoding with tile support.
      */
     VAConfigAttribEncMaxTileCols        = 57,
+    /**
+     * \brief VP9 encoding attribute. Read-only.
+     *
+     * This attribute exposes a number of capabilities of the underlying
+     * VP9 implementation. The attribute value is partitioned into fields as 
defined in the
+     * VAConfigAttribValEncVP9 union.
+     */
+    VAConfigAttribEncVP9                = 58,
     /**@}*/
     VAConfigAttribTypeMax
 } VAConfigAttribType;
@@ -1491,6 +1501,19 @@
 /** \brief Driver supports decode processing rate report  */
 #define VA_PROCESSING_RATE_DECODE                     0x00000002
 /**@}*/
+
+/** @name segment ID map block size */
+/**@{*/
+/** \brief each segmentID represent a 16x16 block */
+#define VA_SEGID_BLOCK_16X16                          0
+/** \brief each segmentID represent a 32x32 block */
+#define VA_SEGID_BLOCK_32X32                          1
+/** \brief each segmentID represent a 64x64 block */
+#define VA_SEGID_BLOCK_64X64                          2
+/** \brief each segmentID represent a 8x8 block */
+#define VA_SEGID_BLOCK_8X8                            3
+/**@}*/
+
 /**
  * if an attribute is not applicable for a given
  * profile/entrypoint pair, then set the value to the following
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_android.h 
new/libva-2.23.0/va/va_android.h
--- old/libva-2.22.0/va/va_android.h    2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_android.h    2025-12-12 08:58:13.000000000 +0100
@@ -31,19 +31,4 @@
 /** \brief Android ION buffer memory type. */
 #define VA_SURFACE_ATTRIB_MEM_TYPE_ANDROID_ION      0x00200000
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Returns a suitable VADisplay for VA API
- */
-VADisplay vaGetDisplay(
-    void *android_dpy
-);
-
-#ifdef __cplusplus
-}
-#endif
-
 #endif /* _VA_ANDROID_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_backend.h 
new/libva-2.23.0/va/va_backend.h
--- old/libva-2.22.0/va/va_backend.h    2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_backend.h    2025-12-12 08:58:13.000000000 +0100
@@ -44,7 +44,7 @@
     /** \brief VA/GLX API is used, through vaGetDisplayGLX() entry-point. */
     VA_DISPLAY_GLX      = (VA_DISPLAY_X11 | (1 << 0)),
     /** \brief VA/Android API is used, through vaGetDisplay() entry-point. */
-    VA_DISPLAY_ANDROID  = 0x20,
+    VA_DISPLAY_ANDROID va_deprecated_enum = 0x20,
     /** \brief VA/DRM API is used, through vaGetDisplayDRM() entry-point. */
     VA_DISPLAY_DRM      = 0x30,
     /** \brief VA/DRM API is used, with a render-node device path */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_enc_av1.h 
new/libva-2.23.0/va/va_enc_av1.h
--- old/libva-2.22.0/va/va_enc_av1.h    2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_enc_av1.h    2025-12-12 08:58:13.000000000 +0100
@@ -148,8 +148,10 @@
          */
         uint32_t interpolation_filter          : 5;
         /**
-         * \brief Min segmentId block size accepted.
+         * \brief segmentId block size accepted.
          * Application need to send seg_id_block_size in PPS equal or larger 
than this value.
+         * one bit represent one block size defined as VA_SEGID_BLOCKXXXX
+         * should be (1 << VA_SEGID_BLOCKXXX | 1 << VA_SEGID_BLOCKXXX ... )
          */
         uint32_t min_segid_block_size_accepted : 8;
         /**
@@ -667,10 +669,7 @@
     } 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.
+     *  should be \c VA_SEGID_BLOCK_XXXX;
      */
     uint8_t     seg_id_block_size;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_enc_vp9.h 
new/libva-2.23.0/va/va_enc_vp9.h
--- old/libva-2.22.0/va/va_enc_vp9.h    2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_enc_vp9.h    2025-12-12 08:58:13.000000000 +0100
@@ -507,8 +507,16 @@
      */
     uint32_t    skip_frames_size;
 
+    /** \brief Block size for each Segment ID in Segment Map.
+     *  This specify the granularity of media driver of reading and processing 
the segment map.
+     *  value should be VA_SEGID_BLOCK_XXX
+     */
+    uint8_t     seg_id_block_size;
+
+    uint8_t     va_reserved8[3];
+
     /** \brief Reserved bytes for future use, must be zero */
-    uint32_t    va_reserved[VA_PADDING_MEDIUM];
+    uint32_t    va_reserved[VA_PADDING_MEDIUM - 1];
 } VAEncPictureParameterBufferVP9;
 
 
@@ -587,13 +595,41 @@
  * \brief VP9 Block Segmentation ID Buffer
  *
  * The application provides a buffer of VAEncMacroblockMapBufferType containing
- * the initial segmentation id for each 8x8 block, one byte each, in raster 
scan order.
- * Rate control may reassign it.  For example, a 640x480 video, the buffer has 
4800 entries.
+ * the initial segmentation id for each block, block size is specified by 
seg_id_block_size
+ * in VAEncPictureParameterBufferVP9  , one byte each, in raster scan order.
+ * Rate control may reassign it.  For example, a 640x480 video, 
seg_id_block_size is
+ * VA_SEGID_BLOCK_16X16 , the buffer has 1200 entries.
  * The value of each entry should be in the range [0..7], inclusive.
  * If segmentation is not enabled, the application does not need to provide it.
  */
 
 
+/** \brief Attribute value for VAConfigAttribEncVP9. */
+typedef union _VAConfigAttribValEncVP9 {
+    struct {
+        /**
+         * \brief segmentId block size accepted.
+         * This is the granularity of segmentation map.
+         * one bit represent one block size defined as VA_SEGID_BLOCKXXXX
+         * should be (1 << VA_SEGID_BLOCKXXX | 1 << VA_SEGID_BLOCKXXX ... )
+         */
+        uint32_t seg_id_block_size             : 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_L is supported, 
0: not.
+         * (segment_feature_support & 0x04) == 1: SEG_LVL_REF_FRAME is 
supported, 0: not.
+         * (segment_feature_support & 0x08) == 1: SEG_LVL_SKIP is supported, 
0: not.
+         */
+        uint32_t segment_feature_support       : 4;
+
+        /** \brief Reserved bits for future, must be zero. */
+        uint32_t reserved                      : 20;
+    } bits;
+    uint32_t value;
+} VAConfigAttribValEncVP9;
+
 /**@}*/
 
 #ifdef __cplusplus
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_str.c new/libva-2.23.0/va/va_str.c
--- old/libva-2.22.0/va/va_str.c        2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_str.c        2025-12-12 08:58:13.000000000 +0100
@@ -38,6 +38,7 @@
         TOSTR(VAProfileH264Main);
         TOSTR(VAProfileH264High);
         TOSTR(VAProfileH264High10);
+        TOSTR(VAProfileH264High422);
         TOSTR(VAProfileVC1Simple);
         TOSTR(VAProfileVC1Main);
         TOSTR(VAProfileVC1Advanced);
@@ -64,6 +65,7 @@
         TOSTR(VAProfileHEVCSccMain444);
         TOSTR(VAProfileAV1Profile0);
         TOSTR(VAProfileAV1Profile1);
+        TOSTR(VAProfileAV1Profile2);
         TOSTR(VAProfileHEVCSccMain444_10);
         TOSTR(VAProfileProtected);
         TOSTR(VAProfileVVCMain10);
@@ -153,6 +155,7 @@
         TOSTR(VAConfigAttribEncPerBlockControl);
         TOSTR(VAConfigAttribEncMaxTileRows);
         TOSTR(VAConfigAttribEncMaxTileCols);
+        TOSTR(VAConfigAttribEncVP9);
     case VAConfigAttribTypeMax:
         break;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_trace.c 
new/libva-2.23.0/va/va_trace.c
--- old/libva-2.22.0/va/va_trace.c      2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_trace.c      2025-12-12 08:58:13.000000000 +0100
@@ -846,6 +846,11 @@
             va_trace_flag |= VA_TRACE_FLAG_SURFACE_ENCODE;
         if (strstr(env_value, "jpeg") || strstr(env_value, "jpg"))
             va_trace_flag |= VA_TRACE_FLAG_SURFACE_JPEG;
+        /* now one context only support 1 surface dump file
+         * may add vpp input in future
+         */
+        if (strstr(env_value, "vppout"))
+            va_trace_flag |= VA_TRACE_FLAG_SURFACE_VPPOUT;
 
         if (va_parseConfig("LIBVA_TRACE_SURFACE_GEOMETRY", &env_value[0]) == 
0) {
             char *p = env_value, *q;
@@ -995,6 +1000,247 @@
     va_end(args);
 }
 
+typedef struct _TracePictureLayout {
+    /*input*/
+    uint32_t fourcc;
+    uint32_t width;
+    uint32_t height;
+    uint32_t start_x;
+    uint32_t start_y;
+    /*output*/
+    uint32_t num_planes;
+    uint32_t plane_start_x[4];
+    uint32_t plane_start_y[4];
+    uint32_t plane_width[4]; /*width in bytes*/
+    uint32_t plane_height[4]; /*lines*/
+    uint32_t reserved[4];
+} TracePictureLayout;
+
+static void va_TraceRetrieveImageInfo(TracePictureLayout * pLayout)
+{
+    uint32_t fourcc = pLayout->fourcc;
+    uint32_t width = pLayout->width;
+    uint32_t height = pLayout->height;
+    uint32_t start_x = pLayout->start_x;
+    uint32_t start_y = pLayout->start_y;
+
+    if ((!fourcc) || (!width) || (!height)) {
+        pLayout->num_planes = 0;
+        return;
+    }
+    /* set initial values*/
+    pLayout->plane_width[0] = width;
+    pLayout->plane_height[0] = height;
+    pLayout->plane_start_x[0] = start_x;
+    pLayout->plane_start_y[0] = start_y;
+
+    pLayout->num_planes = 1;
+
+    switch (fourcc) {
+    case VA_FOURCC_NV12:
+    case VA_FOURCC_NV21:
+        pLayout->plane_width[1] = width;
+        pLayout->plane_height[1] = height / 2;
+        pLayout->plane_start_x[1] = start_x;
+        pLayout->plane_start_y[1] = start_y / 2;
+        pLayout->num_planes = 2;
+        break;
+    case VA_FOURCC_RGBA:
+    case VA_FOURCC_RGBX:
+    case VA_FOURCC_BGRA:
+    case VA_FOURCC_BGRX:
+    case VA_FOURCC_ARGB:
+    case VA_FOURCC_XRGB:
+    case VA_FOURCC_ABGR:
+    case VA_FOURCC_XBGR:
+    case VA_FOURCC_AYUV:
+    case VA_FOURCC_Y410:
+    case VA_FOURCC_A2R10G10B10:
+    case VA_FOURCC_A2B10G10R10:
+    case VA_FOURCC_X2R10G10B10:
+    case VA_FOURCC_X2B10G10R10:
+    case VA_FOURCC_XYUV:
+        pLayout->plane_width[0] = width * 4;
+        pLayout->plane_start_x[0] = start_x * 4;
+        break;
+
+    case VA_FOURCC_UYVY:
+    case VA_FOURCC_YUY2:
+    case VA_FOURCC_Y16:
+    case VA_FOURCC_VYUY:
+    case VA_FOURCC_YVYU:
+        pLayout->plane_width[0] = width * 2;
+        pLayout->plane_start_x[0] = start_x * 2;
+        break;
+
+    case VA_FOURCC_YV12:
+    case VA_FOURCC_I420:
+    case VA_FOURCC_IMC3:
+    case VA_FOURCC_411P:
+    case VA_FOURCC_411R:
+        pLayout->plane_width[1] = width / 2;
+        pLayout->plane_width[2] = width / 2;
+        pLayout->plane_height[1] = height / 2;
+        pLayout->plane_height[2] = height / 2;
+        pLayout->plane_start_x[1] = start_x / 2;
+        pLayout->plane_start_x[2] = start_x / 2;
+        pLayout->plane_start_y[1] = start_y / 2;
+        pLayout->plane_start_y[2] = start_y / 2;
+        pLayout->num_planes = 3;
+        break;
+
+    case VA_FOURCC_P208:
+        pLayout->plane_width[1] = width;
+        pLayout->plane_height[1] = height;
+        pLayout->plane_start_x[1] = start_x;
+        pLayout->plane_start_y[1] = start_y;
+        pLayout->num_planes = 2;
+        break;
+
+    case VA_FOURCC_YV32:
+        pLayout->plane_width[1] =
+            pLayout->plane_width[2] =
+                pLayout->plane_width[3] = width;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] =
+                pLayout->plane_height[3] = height;
+        pLayout->plane_start_x[1] =
+            pLayout->plane_start_x[2] =
+                pLayout->plane_start_x[3] = start_x;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] =
+                pLayout->plane_start_y[3] = start_y;
+        pLayout->num_planes = 4;
+        break;
+
+
+    case VA_FOURCC_YV24:
+    case VA_FOURCC_444P:
+    case VA_FOURCC_RGBP:
+    case VA_FOURCC_BGRP:
+        pLayout->plane_width[1] =
+            pLayout->plane_width[2] = width;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] = height;
+        pLayout->plane_start_x[1] =
+            pLayout->plane_start_x[2] = start_x;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] = start_y;
+        pLayout->num_planes = 3;
+        break;
+
+    case VA_FOURCC_422H:
+        pLayout->plane_width[1] =
+            pLayout->plane_width[2] = width / 2;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] = height;
+        pLayout->plane_start_x[1] =
+            pLayout->plane_start_x[2] = start_x / 2;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] = start_y;
+        pLayout->num_planes = 3;
+        break;
+    case VA_FOURCC_422V:
+        pLayout->plane_width[1] =
+            pLayout->plane_width[2] = width;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] = height / 2;
+        pLayout->plane_start_x[1] =
+            pLayout->plane_start_x[2] = start_x;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] = start_y / 2;
+        pLayout->num_planes = 3;
+        break;
+    case VA_FOURCC_RGB565:
+    case VA_FOURCC_BGR565:
+        pLayout->plane_width[0] = width * 2;
+        pLayout->plane_start_x[0] = start_x * 2;
+        break;
+
+    case VA_FOURCC_Y210:
+    case VA_FOURCC_Y212:
+    case VA_FOURCC_Y216:
+    case VA_FOURCC_Y412:
+    case VA_FOURCC_Y416:
+        pLayout->plane_width[0] = width * 8;
+        pLayout->plane_start_x[0] = start_x * 8;
+        break;
+
+    case VA_FOURCC_YV16:
+        pLayout->plane_width[1] =
+            pLayout->plane_width[2] = width / 2;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] = height;
+        pLayout->plane_start_x[1] =
+            pLayout->plane_start_x[2] = start_x / 2;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] = start_y;
+        pLayout->num_planes = 3;
+        break;
+    case VA_FOURCC_P010:
+    case VA_FOURCC_P012:
+    case VA_FOURCC_P016:
+        pLayout->plane_width[0] = width * 2;
+        pLayout->plane_width[1] = width * 2;
+        pLayout->plane_height[1] = height / 2;
+        pLayout->plane_start_x[0] = start_x * 2;
+        pLayout->plane_start_x[1] = start_x * 2;
+        pLayout->plane_start_y[1] = start_y / 2;
+        pLayout->num_planes = 2;
+        break;
+    case VA_FOURCC_I010:
+        pLayout->plane_width[0] = width * 2;
+        pLayout->plane_width[1] =
+            pLayout->plane_width[2] = width;
+        pLayout->plane_height[0] = height;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] = height / 2;
+        pLayout->plane_start_x[0] = start_x * 2;
+        pLayout->plane_start_x[1] =
+            pLayout->plane_start_x[2] = start_x;
+        pLayout->plane_start_y[0] = start_y;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] = start_y / 2;
+        pLayout->num_planes = 3;
+
+        break;
+
+    case VA_FOURCC_ARGB64:
+    case VA_FOURCC_ABGR64:
+        pLayout->plane_width[0] =
+            pLayout->plane_width[1] =
+                pLayout->plane_width[2] =
+                    pLayout->plane_width[3] = width * 2;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] =
+                pLayout->plane_height[3] = height;
+        pLayout->plane_start_x[0] =
+            pLayout->plane_start_x[1] =
+                pLayout->plane_start_x[2] =
+                    pLayout->plane_start_x[3] = start_x * 2;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] =
+                pLayout->plane_start_y[3] = start_y;
+        pLayout->num_planes = 4;
+        break;
+    case VA_FOURCC_Q416:
+        pLayout->plane_width[0] =
+            pLayout->plane_width[1] =
+                pLayout->plane_width[2] = width * 2;
+        pLayout->plane_height[1] =
+            pLayout->plane_height[2] = height;
+        pLayout->plane_start_x[0] =
+            pLayout->plane_start_x[1] =
+                pLayout->plane_start_x[2] = start_x * 2;
+        pLayout->plane_start_y[1] =
+            pLayout->plane_start_y[2] = start_y;
+        break;
+
+    default: /*Y800 Y8*/
+        break;
+    }
+}
+
 static void va_TraceSurface(VADisplay dpy, VAContextID context)
 {
     unsigned int i;
@@ -1007,9 +1253,9 @@
     unsigned int chroma_v_offset;
     unsigned int buffer_name;
     void *buffer = NULL;
-    unsigned char *Y_data, *UV_data, *tmp;
-    unsigned int pixel_byte;
+    unsigned char *Y_data, *U_data, *V_data, *tmp;
     VAStatus va_status;
+    TracePictureLayout layout = {0};
     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
 
     if (!trace_ctx->trace_fp_surface)
@@ -1053,34 +1299,48 @@
     va_TraceMsg(trace_ctx, NULL);
 
     Y_data = (unsigned char*)buffer;
-    UV_data = (unsigned char*)buffer + chroma_u_offset;
-
-    if (fourcc == VA_FOURCC_P010)
-        pixel_byte = 2;
-    else
-        pixel_byte = 1;
+    U_data = (unsigned char*)buffer + chroma_u_offset;
+    V_data = (unsigned char*)buffer + chroma_v_offset;
 
-    tmp = Y_data + luma_stride * trace_ctx->trace_surface_yoff;
-
-    for (i = 0; i < trace_ctx->trace_surface_height; i++) {
-        fwrite(tmp + trace_ctx->trace_surface_xoff,
-               trace_ctx->trace_surface_width,
-               pixel_byte, trace_ctx->trace_fp_surface);
+    layout.width = trace_ctx->trace_surface_width;
+    layout.height = trace_ctx->trace_surface_height;
+    layout.start_x = trace_ctx->trace_surface_xoff;
+    layout.start_y = trace_ctx->trace_surface_yoff;
+    layout.fourcc = fourcc;
+
+    va_TraceRetrieveImageInfo(&layout);
+
+    tmp = Y_data + luma_stride * layout.plane_start_y[0];
+
+    for (i = 0; i < layout.plane_height[0]; i++) {
+        fwrite(tmp + layout.plane_start_x[0],
+               layout.plane_width[0],
+               1, trace_ctx->trace_fp_surface);
 
         tmp += luma_stride;
     }
 
-    tmp = UV_data + chroma_u_stride * trace_ctx->trace_surface_yoff / 2;
-    if (fourcc == VA_FOURCC_NV12 || fourcc == VA_FOURCC_P010) {
-        for (i = 0; i < trace_ctx->trace_surface_height / 2; i++) {
-            fwrite(tmp + trace_ctx->trace_surface_xoff,
-                   trace_ctx->trace_surface_width,
-                   pixel_byte, trace_ctx->trace_fp_surface);
-
+    if (layout.num_planes > 1) {
+        tmp = U_data + chroma_u_stride * layout.plane_start_y[1];
+        for (i = 0; i < layout.plane_height[1]; i++) {
+            fwrite(tmp + layout.plane_start_x[1],
+                   layout.plane_width[1],
+                   1, trace_ctx->trace_fp_surface);
             tmp += chroma_u_stride;
         }
     }
 
+    if (layout.num_planes > 2) {
+        tmp = V_data + chroma_v_stride * layout.plane_start_y[2];
+        for (i = 0; i < layout.plane_height[2]; i++) {
+            fwrite(tmp + layout.plane_start_x[2],
+                   layout.plane_width[2],
+                   1, trace_ctx->trace_fp_surface);
+            tmp += chroma_v_stride;
+        }
+    }
+
+
     fflush(trace_ctx->trace_fp_surface);
 
     vaUnlockSurface(dpy, trace_ctx->trace_rendertarget);
@@ -1438,7 +1698,7 @@
     struct va_trace *pva_trace = NULL;
     struct trace_context *trace_ctx = NULL;
     int tra_ctx_id = 0;
-    int encode = 0, decode = 0, jpeg = 0;
+    int encode = 0, decode = 0, jpeg = 0, vpp = 0;
     int i;
 
     pva_trace = (struct va_trace *)(((VADisplayContextP)dpy)->vatrace);
@@ -1523,9 +1783,12 @@
     encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
     decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
     jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
+    vpp = (trace_ctx->trace_entrypoint == VAEntrypointVideoProc);
+
     if ((encode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
         (decode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) ||
-        (jpeg && (va_trace_flag & VA_TRACE_FLAG_SURFACE_JPEG))) {
+        (jpeg && (va_trace_flag & VA_TRACE_FLAG_SURFACE_JPEG)) ||
+        (vpp && (va_trace_flag & VA_TRACE_FLAG_SURFACE_VPPOUT))) {
         if (open_tracing_specil_file(pva_trace, trace_ctx, 1) < 0) {
             va_errorMessage(dpy, "Open surface fail failed for ctx 0x%08x\n", 
*context);
 
@@ -6606,7 +6869,62 @@
         }
     }
 
-    /* FIXME: add other info later */
+    va_TraceMsg(trace_ctx, "\t  rotation_state = 0x%08x\n", p->rotation_state);
+
+    if (p->blend_state) {
+        va_TraceMsg(trace_ctx, "\t  blend_state\n");
+        va_TraceMsg(trace_ctx, "\t    flags = 0x%08x\n", 
p->blend_state->flags);
+        va_TraceMsg(trace_ctx, "\t    global_alpha = %f\n", 
p->blend_state->global_alpha);
+        va_TraceMsg(trace_ctx, "\t    min_luma = %f\n", 
p->blend_state->min_luma);
+        va_TraceMsg(trace_ctx, "\t    max_luma = %f\n", 
p->blend_state->max_luma);
+    } else {
+        va_TraceMsg(trace_ctx, "\t  blend_state = (NULL)\n");
+    }
+
+    va_TraceMsg(trace_ctx, "\t  mirror_state = 0x%08x\n", p->mirror_state);
+    va_TraceMsg(trace_ctx, "\t  num_additional_outputs = %d\n", 
p->num_additional_outputs);
+
+    if (p->num_additional_outputs) {
+        va_TraceMsg(trace_ctx, "\t  additional_outputs\n");
+
+        if (p->additional_outputs) {
+            /* only dump the first 5 additional outputs */
+            for (i = 0; i < p->num_additional_outputs && i < 5; i++) {
+                va_TraceMsg(trace_ctx, "\t    additional_outputs[%d] = 
0x%08x\n", i, p->additional_outputs[i]);
+            }
+        } else {
+            for (i = 0; i < p->num_additional_outputs && i < 5; i++) {
+                va_TraceMsg(trace_ctx, "\t    additional_outputs[%d] = 
(NULL)\n", i);
+            }
+        }
+    }
+
+    va_TraceMsg(trace_ctx, "\t  input_surface_flag = 0x%08x\n", 
p->input_surface_flag);
+    va_TraceMsg(trace_ctx, "\t  output_surface_flag = 0x%08x\n", 
p->output_surface_flag);
+
+    va_TraceMsg(trace_ctx, "\t  input_color_properties\n");
+    va_TraceMsg(trace_ctx, "\t    chroma_sample_location = 0x%02x\n", 
p->input_color_properties.chroma_sample_location);
+    va_TraceMsg(trace_ctx, "\t    color_range = %d\n", 
p->input_color_properties.color_range);
+    va_TraceMsg(trace_ctx, "\t    colour_primaries = %d\n", 
p->input_color_properties.colour_primaries);
+    va_TraceMsg(trace_ctx, "\t    transfer_characteristics = %d\n", 
p->input_color_properties.transfer_characteristics);
+    va_TraceMsg(trace_ctx, "\t    matrix_coefficients = %d\n", 
p->input_color_properties.matrix_coefficients);
+
+    va_TraceMsg(trace_ctx, "\t  output_color_properties\n");
+    va_TraceMsg(trace_ctx, "\t    chroma_sample_location = 0x%02x\n", 
p->output_color_properties.chroma_sample_location);
+    va_TraceMsg(trace_ctx, "\t    color_range = %d\n", 
p->output_color_properties.color_range);
+    va_TraceMsg(trace_ctx, "\t    colour_primaries = %d\n", 
p->output_color_properties.colour_primaries);
+    va_TraceMsg(trace_ctx, "\t    transfer_characteristics = %d\n", 
p->output_color_properties.transfer_characteristics);
+    va_TraceMsg(trace_ctx, "\t    matrix_coefficients = %d\n", 
p->output_color_properties.matrix_coefficients);
+
+    va_TraceMsg(trace_ctx, "\t  processing_mode = %d\n", p->processing_mode);
+
+    if (p->output_hdr_metadata) {
+        va_TraceMsg(trace_ctx, "\t  output_hdr_metadata\n");
+        va_TraceMsg(trace_ctx, "\t    metadata_type = %d\n", 
p->output_hdr_metadata->metadata_type);
+        va_TraceMsg(trace_ctx, "\t    metadata_size = %d\n", 
p->output_hdr_metadata->metadata_size);
+    } else {
+        va_TraceMsg(trace_ctx, "\t  output_hdr_metadata = (NULL)\n");
+    }
 
     va_TraceMsg(trace_ctx, NULL);
 }
@@ -6688,6 +7006,7 @@
             }
             break;
         case VAProfileH264High10:
+        case VAProfileH264High422:
         case VAProfileH264Main:
         case VAProfileH264High:
         case VAProfileH264ConstrainedBaseline:
@@ -6775,6 +7094,7 @@
             break;
         case VAProfileAV1Profile0:
         case VAProfileAV1Profile1:
+        case VAProfileAV1Profile2:
             for (j = 0; j < num_elements; j++) {
                 va_TraceMsg(trace_ctx, "\telement[%d] = \n", j);
 
@@ -6812,12 +7132,13 @@
     int endpic_done
 )
 {
-    int encode, decode, jpeg;
+    int encode, decode, jpeg, vpp;
     DPY2TRACECTX(dpy, context, VA_INVALID_ID);
     /* avoid to create so many empty files */
     encode = (trace_ctx->trace_entrypoint == VAEntrypointEncSlice);
     decode = (trace_ctx->trace_entrypoint == VAEntrypointVLD);
     jpeg = (trace_ctx->trace_entrypoint == VAEntrypointEncPicture);
+    vpp = (trace_ctx->trace_entrypoint == VAEntrypointVideoProc);
 
     /* trace encode source surface, can do it before HW completes rendering */
     if ((encode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_ENCODE)) ||
@@ -6825,7 +7146,8 @@
         va_TraceSurface(dpy, context);
 
     /* trace decoded surface, do it after HW completes rendering */
-    if (decode && ((va_trace_flag & VA_TRACE_FLAG_SURFACE_DECODE))) {
+    if ((decode && (va_trace_flag & VA_TRACE_FLAG_SURFACE_DECODE)) ||
+        (vpp && (va_trace_flag & VA_TRACE_FLAG_SURFACE_VPPOUT))) {
         vaSyncSurface(dpy, trace_ctx->trace_rendertarget);
         va_TraceSurface(dpy, context);
     }
@@ -7246,3 +7568,40 @@
 
     DPY2TRACE_VIRCTX_EXIT(pva_trace);
 }
+
+void va_TraceDeriveImage(VADisplay dpy, VASurfaceID surface, VAImage *image)
+{
+    DPY2TRACE_VIRCTX(dpy);
+
+    TRACE_FUNCNAME(idx);
+
+    va_TraceMsg(trace_ctx, "surfaceID = %d, imageID = %d\n", surface, 
image->image_id);
+    va_TraceMsg(trace_ctx, "format:\n");
+    va_TraceMsg(trace_ctx, "\tfourcc = 0x%08x\n", image->format.fourcc);
+    if (image->format.byte_order == VA_LSB_FIRST)
+        va_TraceMsg(trace_ctx, "byte_order = VA_LSB_FIRST\n");
+    else if (image->format.byte_order == VA_MSB_FIRST)
+        va_TraceMsg(trace_ctx, "byte_order = VA_MSB_FIRST\n");
+    else
+        va_TraceMsg(trace_ctx, "byte_order = %d\n", image->format.byte_order);
+    va_TraceMsg(trace_ctx, "\tformat.bits_per_pixel = %d\n", 
image->format.bits_per_pixel);
+    va_TraceMsg(trace_ctx, "\tformat.depth= %d\n", image->format.depth);
+    va_TraceMsg(trace_ctx, "\tformat.red_mask = 0x%08x\n", 
image->format.red_mask);
+    va_TraceMsg(trace_ctx, "\tformat.greeen_mask = 0x%08x\n", 
image->format.green_mask);
+    va_TraceMsg(trace_ctx, "\tformat.blue_mask = 0x%08x\n", 
image->format.blue_mask);
+    va_TraceMsg(trace_ctx, "\tformat.alpha_mask = 0x%08x\n", 
image->format.alpha_mask);
+
+    va_TraceMsg(trace_ctx, "bufferID = %d\n", image->buf);
+    va_TraceMsg(trace_ctx, "width = %d\n", image->width);
+    va_TraceMsg(trace_ctx, "height = %d\n", image->height);
+    va_TraceMsg(trace_ctx, "data_size = %d\n", image->data_size);
+    va_TraceMsg(trace_ctx, "num_planes = %d\n", image->num_planes);
+    va_TraceMsg(trace_ctx, "pitches = %d, %d, %d\n", image->pitches[0], 
image->pitches[1], image->pitches[2]);
+    va_TraceMsg(trace_ctx, "offsets = %d, %d, %d\n", image->offsets[0], 
image->offsets[1], image->offsets[2]);
+
+    va_TraceMsg(trace_ctx, "num_palette_entries = %d\n", 
image->num_palette_entries);
+    va_TraceMsg(trace_ctx, "entry_bytes= %d\n", image->entry_bytes);
+    va_TraceMsg(trace_ctx, "component_order = %c%c%c%c\n", 
image->component_order[0], image->component_order[1], 
image->component_order[2], image->component_order[3]);
+
+    DPY2TRACE_VIRCTX_EXIT(pva_trace);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_trace.h 
new/libva-2.23.0/va/va_trace.h
--- old/libva-2.22.0/va/va_trace.h      2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_trace.h      2025-12-12 08:58:13.000000000 +0100
@@ -37,6 +37,8 @@
 #define VA_TRACE_FLAG_SURFACE_DECODE  0x8
 #define VA_TRACE_FLAG_SURFACE_ENCODE  0x10
 #define VA_TRACE_FLAG_SURFACE_JPEG    0x20
+#define VA_TRACE_FLAG_SURFACE_VPPOUT  0x80
+
 #define VA_TRACE_FLAG_SURFACE         (VA_TRACE_FLAG_SURFACE_DECODE | \
                                        VA_TRACE_FLAG_SURFACE_ENCODE | \
                                        VA_TRACE_FLAG_SURFACE_JPEG)
@@ -44,6 +46,7 @@
 #define VA_TRACE_FLAG_FTRACE_BUFDATA  (VA_TRACE_FLAG_FTRACE | \
                                        VA_TRACE_FLAG_BUFDATA)
 
+
 #define VA_TRACE_LOG(trace_func,...)            \
     if (va_trace_flag & VA_TRACE_FLAG_LOG) {    \
         trace_func(__VA_ARGS__);                \
@@ -506,6 +509,14 @@
     uint32_t         flags,
     void             *descriptor);
 
+/** \brief va_TraceDeriveImage
+ * trace derive image */
+DLL_HIDDEN
+void va_TraceDeriveImage(
+    VADisplay dpy,
+    VASurfaceID surface,
+    VAImage *image);
+
 #ifdef __cplusplus
 }
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libva-2.22.0/va/va_vpp.h new/libva-2.23.0/va/va_vpp.h
--- old/libva-2.22.0/va/va_vpp.h        2024-06-20 08:49:27.000000000 +0200
+++ new/libva-2.23.0/va/va_vpp.h        2025-12-12 08:58:13.000000000 +0100
@@ -909,7 +909,7 @@
      * be queried with vaQueryVideoProcPipelineCaps().
      *
      * If this is set to VAProcColorStandardExplicit, the color properties
-     * are specified explicitly in surface_color_properties instead.
+     * are specified explicitly in input_color_properties instead.
      */
     VAProcColorStandardType surface_color_standard;
     /**

Reply via email to