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; /**
