Compare commits
41 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eba7bec474 | ||
|
|
225a761a31 | ||
|
|
b4cecbae28 | ||
|
|
29c1b9692b | ||
|
|
5cba9df9f5 | ||
|
|
2933153067 | ||
|
|
fe6ef1ccdf | ||
|
|
586037da1b | ||
|
|
bce7c7ba94 | ||
|
|
5ebad15d9b | ||
|
|
0b9b2b1bb9 | ||
|
|
05d82bf6b0 | ||
|
|
c55df45eea | ||
|
|
100d0a81a6 | ||
|
|
bb1b6240de | ||
|
|
3fd432b7b3 | ||
|
|
386d409055 | ||
|
|
46ec64d60c | ||
|
|
c0ac8d3ecb | ||
|
|
7b9f8de56a | ||
|
|
cd9aef0eb3 | ||
|
|
725e7ac366 | ||
|
|
cfe1645245 | ||
|
|
bdd79b9a00 | ||
|
|
4d8326672e | ||
|
|
fe1af83b4e | ||
|
|
1729aaf5cf | ||
|
|
1b504add43 | ||
|
|
b90081532b | ||
|
|
08ba518990 | ||
|
|
6c0aac4537 | ||
|
|
79e1887050 | ||
|
|
971c884e11 | ||
|
|
0719e09c44 |
||
|
|
28d2f47751 | ||
|
|
e9dd0ece9c | ||
|
|
5c1a69815b | ||
|
|
89f26d9039 | ||
|
|
44d23d4ca3 | ||
|
|
f0bccee935 | ||
|
|
241b88a584 |
21 changed files with 29425 additions and 1125 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -13,3 +13,11 @@
|
|||
/qtwebengine-everywhere-src-6.7.2-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.8.0-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.8.1-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.8.2-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.9.0-rc-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.9.0-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.9.1-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.9.2-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.10.0-rc-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.10.0-clean.tar.xz
|
||||
/qtwebengine-everywhere-src-6.10.1-clean.tar.xz
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
if [ -z "$1" ] ; then
|
||||
echo "usage: ./clean_qtwebengine.sh VERSION"
|
||||
echo "e.g.: ./clean_qtwebengine.sh 6.8.0"
|
||||
echo "e.g.: ./clean_qtwebengine.sh 6.10.0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
|
|||
52
prepare-ppc64.sh
Normal file
52
prepare-ppc64.sh
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
#! /bin/bash
|
||||
#
|
||||
# Prepare ppc64le patchset for qtwebengine from Chromium patches using
|
||||
# - https://quickbuild.io/~raptor-engineering-public/+archive/ubuntu/chromium/ or
|
||||
# - https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches
|
||||
#
|
||||
# Usage
|
||||
# - check the base Chromium release in CHROMIUM_VERSION
|
||||
# - get the patches from the URLs above
|
||||
# - run "prepare-ppc64.sh <path_to_chromium_patches>"
|
||||
#
|
||||
|
||||
patch_cleanup ()
|
||||
{
|
||||
file=$1
|
||||
patch=$2
|
||||
|
||||
[ -f $file ] || { echo "File $file doesn't exist"; exit 1; }
|
||||
|
||||
remove=$(echo $patch | sed -e 's@\/@\\\/@g')
|
||||
|
||||
echo "Removing changes for $patch from $file ..."
|
||||
|
||||
sed -i -e "/Index: chromium-[0-9\.]*\/${remove}/,/^Index:/ {
|
||||
/Index: chromium-[0-9\.]*\/${remove}/d;
|
||||
/^[-@=+ ]/d;
|
||||
/^$/d;
|
||||
}" $file
|
||||
|
||||
}
|
||||
|
||||
dir=$1
|
||||
|
||||
[ -d $dir/ppc64le ] || { echo "Path $dir/ppc64le doesn't exist"; exit 1; }
|
||||
|
||||
# remove patches for files not included in the bundled chromium
|
||||
patch_cleanup $dir/ppc64le/third_party/0001-Add-PPC64-support-for-boringssl.patch third_party/boringssl/src/crypto/test/abi_test.h
|
||||
patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc
|
||||
patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h
|
||||
patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/snapshot/test/test_cpu_context.cc
|
||||
patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h
|
||||
patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/test/linux/get_tls.cc
|
||||
patch_cleanup $dir/ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch third_party/crashpad/crashpad/test/multiprocess_posix.cc
|
||||
|
||||
# concatenate the patches from the series file to a single patchset
|
||||
echo "Creating patchset ..."
|
||||
cat series.ppc64 | while read line; do
|
||||
case $line in
|
||||
\#*) ;;
|
||||
*) [ -z "$line" ] && continue; cat $dir/$line ;;
|
||||
esac
|
||||
done > qtwebengine-chromium-ppc64.patch
|
||||
|
|
@ -5,12 +5,46 @@
|
|||
# package-notes causes FTBFS (#2043178)
|
||||
%undefine _package_note_file
|
||||
|
||||
%global use_system_libwebp 1
|
||||
%global use_system_jsoncpp 1
|
||||
%if 0%{?rhel} && 0%{?rhel} == 9
|
||||
%global use_system_libicu 0
|
||||
%else
|
||||
# defines for Optional system libraries:
|
||||
%global use_system_re2 1
|
||||
%global use_system_libicu 1
|
||||
%global use_system_libwebp 1
|
||||
%global use_system_opus 1
|
||||
%global use_system_ffmpeg 1
|
||||
# libvpx is exclusive with VA-API support (libva) which is enabled by default
|
||||
%global use_system_libvpx 0
|
||||
%global use_system_snappy 1
|
||||
%global use_system_glib 1
|
||||
%global use_system_zlib 1
|
||||
%global use_system_minizip 1
|
||||
%global use_system_libevent 1
|
||||
%global use_system_libxml 1
|
||||
%global use_system_lcms2 1
|
||||
%global use_system_libpng 1
|
||||
%global use_system_libtiff 1
|
||||
%global use_system_libjpeg 1
|
||||
%global use_system_libopenjpeg2 1
|
||||
%global use_system_harfbuzz 1
|
||||
%global use_system_freetype 1
|
||||
%global use_system_libpci 1
|
||||
%global use_system_libudev 1
|
||||
|
||||
%if 0%{?rhel} && 0%{?rhel} == 9
|
||||
%global use_system_re2 0
|
||||
%global use_system_libicu 0
|
||||
%global use_system_minizip 0
|
||||
%global use_system_harfbuzz 0
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} && 0%{?rhel} == 10
|
||||
%global use_system_zlib 0
|
||||
%endif
|
||||
|
||||
# ppc64le builds currently fail with V8/XFA enabled (qt 6.9.0)
|
||||
%ifarch ppc64le
|
||||
%global enable_pdf_v8 0
|
||||
%else
|
||||
%global enable_pdf_v8 1
|
||||
%endif
|
||||
|
||||
%if 0%{?fedora} && 0%{?fedora} >= 39
|
||||
|
|
@ -18,8 +52,6 @@
|
|||
%global use_system_py_six 1
|
||||
%endif
|
||||
|
||||
%global use_system_re2 0
|
||||
|
||||
# NEON support on ARM (detected at runtime) - disable this if you are hitting
|
||||
# FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
|
||||
#global arm_neon 1
|
||||
|
|
@ -36,8 +68,6 @@
|
|||
# webcore_debug v8base_debug
|
||||
%endif
|
||||
|
||||
#global prerelease rc
|
||||
|
||||
# spellchecking dictionary directory
|
||||
%global _qtwebengine_dictionaries_dir %{_qt6_datadir}/qtwebengine_dictionaries
|
||||
|
||||
|
|
@ -46,22 +76,36 @@
|
|||
# and designer plugins
|
||||
%global __provides_exclude_from ^%{_qt6_plugindir}/.*\\.so$
|
||||
|
||||
# FIXME: we cannot use any ~rc or similar suffix as the build
|
||||
# would fail for having too long filename
|
||||
#global unstable 1
|
||||
%if 0%{?unstable}
|
||||
%global prerelease rc
|
||||
%endif
|
||||
|
||||
%global examples 1
|
||||
|
||||
Summary: Qt6 - QtWebEngine components
|
||||
Name: qt6-qtwebengine
|
||||
Version: 6.8.1
|
||||
Release: 3%{?dist}
|
||||
Version: 6.10.1
|
||||
Release: 5%{?dist}
|
||||
|
||||
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
|
||||
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
|
||||
# The other licenses are from Chromium and the code it bundles
|
||||
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
|
||||
URL: http://www.qt.io
|
||||
%global majmin %(echo %{version} | cut -d. -f1-2)
|
||||
%global qt_version %(echo %{version} | cut -d~ -f1)
|
||||
|
||||
# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
|
||||
# ./qtwebengine-release.sh
|
||||
# ./clean_qtwebengine.sh 6.4.1
|
||||
Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz
|
||||
# ./clean_qtwebengine.sh 6.9.0
|
||||
%if 0%{?unstable}
|
||||
Source0: %{qt_module}-everywhere-src-%{qt_version}-%{prerelease}-clean.tar.xz
|
||||
%else
|
||||
Source0: %{qt_module}-everywhere-src-%{version}-clean.tar.xz
|
||||
%endif
|
||||
|
||||
# cleanup scripts used above
|
||||
Source2: clean_qtwebengine.sh
|
||||
|
|
@ -74,34 +118,72 @@ Source10: macros.qt6-qtwebengine
|
|||
Source20: pulseaudio-12.2-headers.tar.gz
|
||||
|
||||
# workaround FTBFS against kernel-headers-5.2.0+
|
||||
Patch1: qtwebengine-SIOCGSTAMP.patch
|
||||
Patch2: qtwebengine-link-pipewire.patch
|
||||
Patch1: qtwebengine-SIOCGSTAMP.patch
|
||||
Patch2: qtwebengine-link-pipewire.patch
|
||||
# Fix/workaround FTBFS on aarch64 with newer glibc
|
||||
Patch3: qtwebengine-aarch64-new-stat.patch
|
||||
Patch3: qtwebengine-aarch64-new-stat.patch
|
||||
|
||||
# FTBS warning: elaborated-type-specifier for a scoped enum must not
|
||||
# use the 'class' keyword
|
||||
Patch50: qtwebengine-fix-build.patch
|
||||
# Enable OpenH264
|
||||
Patch4: qtwebengine-use-openh264.patch
|
||||
|
||||
# FTBFS - /usr/include/bits/siginfo-consts.h:219:3: error: expected identifier
|
||||
# 219 | SYS_SECCOMP = 1, /* Seccomp triggered. */
|
||||
Patch5: qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch
|
||||
|
||||
## Upstream patches:
|
||||
# https://bugreports.qt.io/browse/QTBUG-129985
|
||||
Patch80: qtwebengine-fix-arm-build.patch
|
||||
# Remove with Qt 6.10.2
|
||||
# https://codereview.qt-project.org/c/qt/qtwebengine/+/702597
|
||||
Patch81: qtwebengine-move-gpu-info-logging-to-gpu-thread.patch
|
||||
# https://qt-project.atlassian.net/browse/QTBUG-142823
|
||||
Patch82: qtwebengine-fix-quick-popup-window-positioning-under-x11.patch
|
||||
|
||||
## Upstreamable patches:
|
||||
Patch110: qtwebengine-webrtc-system-openh264.patch
|
||||
Patch111: qtwebengine-blink-system-openh264.patch
|
||||
Patch112: qtwebengine-media-system-openh264.patch
|
||||
Patch100: qtwebengine-add-missing-pipewire-headers.patch
|
||||
Patch101: qtwebengine-fix-build-against-gcc16.patch
|
||||
|
||||
## ppc64le port
|
||||
Patch200: qtwebengine-6.9-ppc64.patch
|
||||
Patch201: qtwebengine-chromium-ppc64.patch
|
||||
# https://github.com/google/highway/commit/dcc0ca1cd4245ecff9e5ba50818e47d5e2ccf699
|
||||
Patch202: qtwebengine-chromium-ppc64-highway.patch
|
||||
|
||||
# handled by qt6-srpm-macros, which defines %%qt6_qtwebengine_arches
|
||||
# FIXME use/update qt6_qtwebengine_arches
|
||||
# 32-bit arches not supported (https://bugreports.qt.io/browse/QTBUG-102143)
|
||||
ExclusiveArch: aarch64 x86_64
|
||||
ExclusiveArch: aarch64 x86_64 ppc64le
|
||||
|
||||
BuildRequires: cmake
|
||||
BuildRequires: ninja-build >= 1.7.2
|
||||
BuildRequires: make
|
||||
%if 0%{?rhel} && 0%{?rhel} < 10
|
||||
BuildRequires: gcc-toolset-13
|
||||
BuildRequires: gcc-toolset-13-libatomic-devel
|
||||
%else
|
||||
BuildRequires: gcc-c++
|
||||
%endif
|
||||
|
||||
# gn links statically (for now)
|
||||
BuildRequires: libstdc++-static
|
||||
BuildRequires: libatomic
|
||||
|
||||
BuildRequires: %{__python3}
|
||||
BuildRequires: python3-html5lib
|
||||
BuildRequires: gperf
|
||||
BuildRequires: bison
|
||||
BuildRequires: flex
|
||||
BuildRequires: perl-interpreter
|
||||
|
||||
BuildRequires: nodejs >= 14.9
|
||||
BuildRequires: krb5-devel
|
||||
BuildRequires: git-core
|
||||
|
||||
BuildRequires: qt6-srpm-macros
|
||||
BuildRequires: qt6-qtbase-devel
|
||||
BuildRequires: qt6-qtbase-private-devel
|
||||
%{?_qt6_version:Requires: qt6-qtbase%{?_isa} = %{_qt6_version}}
|
||||
|
||||
# TODO: check of = is really needed or if >= would be good enough -- rex
|
||||
%{?_qt6:Requires: %{_qt6}%{?_isa} = %{_qt6_version}}
|
||||
BuildRequires: qt6-qtdeclarative-devel
|
||||
|
|
@ -112,94 +194,126 @@ BuildRequires: qt6-qttools-static
|
|||
BuildRequires: qt6-qtquickcontrols2-devel
|
||||
BuildRequires: qt6-qtwebchannel-devel
|
||||
BuildRequires: qt6-qtwebsockets-devel
|
||||
# for examples?
|
||||
BuildRequires: ninja-build
|
||||
BuildRequires: cmake
|
||||
BuildRequires: bison
|
||||
BuildRequires: flex
|
||||
BuildRequires: gcc-c++
|
||||
%if 0%{?rhel} && 0%{?rhel} < 10
|
||||
BuildRequires: gcc-toolset-13
|
||||
BuildRequires: gcc-toolset-13-libatomic-devel
|
||||
%endif
|
||||
# gn links statically (for now)
|
||||
BuildRequires: libstdc++-static
|
||||
BuildRequires: git-core
|
||||
BuildRequires: gperf
|
||||
BuildRequires: krb5-devel
|
||||
%if 0%{?use_system_libicu}
|
||||
BuildRequires: libicu-devel >= 68
|
||||
%endif
|
||||
BuildRequires: libatomic
|
||||
BuildRequires: libjpeg-devel
|
||||
BuildRequires: nodejs
|
||||
BuildRequires: qt6-qthttpserver-devel
|
||||
|
||||
# optional system libraries in the order of the -- Configure summary: listing
|
||||
%if 0%{?use_system_re2}
|
||||
BuildRequires: re2-devel
|
||||
BuildRequires: pkgconfig(re2) >= 11.0.0
|
||||
%else
|
||||
Provides: bundled(re2)
|
||||
%endif
|
||||
BuildRequires: snappy-devel
|
||||
BuildConflicts: minizip-devel
|
||||
%if 0%{?use_system_libicu}
|
||||
BuildRequires: libicu-devel >= 70
|
||||
%endif
|
||||
%if 0%{?use_system_libwebp}
|
||||
BuildRequires: pkgconfig(libwebp) >= 0.6.0
|
||||
%endif
|
||||
%if 0%{?use_system_opus}
|
||||
BuildRequires: pkgconfig(opus) >= 1.3.1
|
||||
%endif
|
||||
%if %{?use_system_ffmpeg}
|
||||
BuildRequires: pkgconfig(libavutil) >= 58.29.100
|
||||
BuildRequires: pkgconfig(libavcodec) >= 60.31.102
|
||||
BuildRequires: pkgconfig(libavformat) >= 60.16.100
|
||||
BuildRequires: pkgconfig(openh264)
|
||||
%endif
|
||||
%if %{?use_system_libvpx}
|
||||
BuildRequires: pkgconfig(vpx) >= 1.10.0
|
||||
%endif
|
||||
%if 0%{?use_system_snappy}
|
||||
BuildRequires: pkgconfig(snappy)
|
||||
%endif
|
||||
%if 0%{?use_system_glib}
|
||||
BuildRequires: pkgconfig(glib-2.0)
|
||||
BuildRequires: pkgconfig(gobject-2.0)
|
||||
BuildRequires: pkgconfig(gio-2.0)
|
||||
%endif
|
||||
%if %{?use_system_zlib}
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
%endif
|
||||
%if 0%{?use_system_minizip}
|
||||
BuildRequires: pkgconfig(minizip)
|
||||
%else
|
||||
Provides: bundled(minizip) = 2.8.1
|
||||
%endif
|
||||
%if 0%{?use_system_libevent}
|
||||
BuildRequires: pkgconfig(libevent)
|
||||
%endif
|
||||
%if %{?use_system_libxml}
|
||||
BuildRequires: pkgconfig(libxml-2.0)
|
||||
BuildRequires: pkgconfig(libxslt)
|
||||
%else
|
||||
# bundled as "libxml"
|
||||
# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h
|
||||
Provides: bundled(libxml2) = 2.9.13
|
||||
# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version
|
||||
Provides: bundled(libxslt) = 1.1.3
|
||||
%endif
|
||||
%if 0%{?use_system_lcms2}
|
||||
BuildRequires: pkgconfig(lcms2)
|
||||
%endif
|
||||
%if 0%{?use_system_libpng}
|
||||
BuildRequires: pkgconfig(libpng) >= 1.6.0
|
||||
%endif
|
||||
%if 0%{?use_system_libtiff}
|
||||
BuildRequires: pkgconfig(libtiff-4) >= 4.2.0
|
||||
%endif
|
||||
%if 0%{?use_system_libjpeg}
|
||||
BuildRequires: pkgconfig(libjpeg)
|
||||
%endif
|
||||
%if 0%{?use_system_libopenjpeg2}
|
||||
BuildRequires: pkgconfig(libopenjp2)
|
||||
%endif
|
||||
%if 0%{?use_system_harfbuzz}
|
||||
BuildRequires: pkgconfig(harfbuzz) >= 4.3.0
|
||||
%endif
|
||||
%if 0%{?use_system_freetype}
|
||||
BuildRequires: pkgconfig(freetype2) >= 2.4.2
|
||||
BuildRequires: pkgconfig(fontconfig)
|
||||
%endif
|
||||
%if 0%{?use_system_libpci}
|
||||
BuildRequires: pkgconfig(libpci)
|
||||
%endif
|
||||
%if 0%{?use_system_libudev}
|
||||
BuildRequires: pkgconfig(libudev)
|
||||
%endif
|
||||
|
||||
# qpa-xcb support libraries
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(libdrm)
|
||||
BuildRequires: pkgconfig(xcomposite)
|
||||
BuildRequires: pkgconfig(xcursor)
|
||||
BuildRequires: pkgconfig(xrandr)
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(xproto)
|
||||
BuildRequires: pkgconfig(xshmfence)
|
||||
BuildRequires: pkgconfig(xtst)
|
||||
BuildRequires: pkgconfig(xkbcommon)
|
||||
BuildRequires: pkgconfig(xkbfile)
|
||||
BuildRequires: pkgconfig(xcb)
|
||||
|
||||
# required for webrtc
|
||||
BuildRequires: pkgconfig(xdamage)
|
||||
|
||||
# required for alsa
|
||||
BuildRequires: pkgconfig(alsa)
|
||||
# required for pulseaudio
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
# required for vaapi
|
||||
BuildRequires: pkgconfig(libva)
|
||||
# required for pipewire
|
||||
BuildRequires: pkgconfig(libpipewire-0.3)
|
||||
|
||||
BuildRequires: pkgconfig(dbus-1)
|
||||
BuildRequires: pkgconfig(egl)
|
||||
BuildRequires: pkgconfig(epoxy)
|
||||
BuildRequires: pkgconfig(expat)
|
||||
BuildRequires: pkgconfig(fontconfig)
|
||||
BuildRequires: pkgconfig(freetype2)
|
||||
BuildRequires: pkgconfig(gbm)
|
||||
BuildRequires: pkgconfig(gio-2.0)
|
||||
BuildRequires: pkgconfig(gl)
|
||||
BuildRequires: pkgconfig(glib-2.0)
|
||||
BuildRequires: pkgconfig(gobject-2.0)
|
||||
BuildRequires: pkgconfig(harfbuzz)
|
||||
%if 0%{?use_system_jsoncpp}
|
||||
BuildRequires: pkgconfig(jsoncpp)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(lcms2)
|
||||
BuildRequires: pkgconfig(libcap)
|
||||
BuildRequires: pkgconfig(libdrm)
|
||||
BuildRequires: pkgconfig(libevent)
|
||||
BuildRequires: pkgconfig(libpci)
|
||||
BuildRequires: pkgconfig(libpipewire-0.3)
|
||||
BuildRequires: pkgconfig(libpng)
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
BuildRequires: pkgconfig(libudev)
|
||||
%if 0%{?use_system_libwebp}
|
||||
BuildRequires: pkgconfig(libwebp) >= 0.6.0
|
||||
%endif
|
||||
BuildRequires: pkgconfig(nss)
|
||||
BuildRequires: pkgconfig(opus)
|
||||
BuildRequires: pkgconfig(nss) >= 3.26
|
||||
BuildRequires: pkgconfig(poppler-cpp)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xcomposite)
|
||||
BuildRequires: pkgconfig(xcursor)
|
||||
BuildRequires: pkgconfig(xdamage)
|
||||
BuildRequires: pkgconfig(xext)
|
||||
BuildRequires: pkgconfig(xfixes)
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(xkbcommon)
|
||||
BuildRequires: pkgconfig(xkbfile)
|
||||
BuildRequires: pkgconfig(xrandr)
|
||||
BuildRequires: pkgconfig(xrender)
|
||||
%if ! (0%{?rhel} >= 10)
|
||||
BuildRequires: pkgconfig(xscrnsaver)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(xshmfence)
|
||||
BuildRequires: pkgconfig(xtst)
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
## https://bugreports.qt.io/browse/QTBUG-59094
|
||||
## requires libxml2 built with icu support
|
||||
#BuildRequires: pkgconfig(libxslt) pkgconfig(libxml-2.0)
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: %{__python3}
|
||||
BuildRequires: python3-html5lib
|
||||
BuildRequires: pkgconfig(vpx) >= 1.8.0
|
||||
BuildRequires: pkgconfig(libavcodec)
|
||||
BuildRequires: pkgconfig(libavformat)
|
||||
BuildRequires: pkgconfig(libavutil)
|
||||
BuildRequires: pkgconfig(openh264)
|
||||
BuildRequires: pkgconfig(libva)
|
||||
|
||||
|
||||
%if 0%{?fedora} && 0%{?fedora} >= 39
|
||||
BuildRequires: python3-zombie-imp
|
||||
|
|
@ -263,15 +377,9 @@ Provides: bundled(leveldb) = 1.23
|
|||
Provides: bundled(libjingle)
|
||||
# see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number
|
||||
Provides: bundled(libsrtp) = 2.4.0
|
||||
# bundled as "libxml"
|
||||
# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h
|
||||
Provides: bundled(libxml2) = 2.9.13
|
||||
# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version
|
||||
Provides: bundled(libxslt) = 1.1.3
|
||||
Provides: bundled(libyuv) = 1819
|
||||
Provides: bundled(modp_b64)
|
||||
Provides: bundled(ots)
|
||||
Provides: bundled(re2)
|
||||
# see src/3rdparty/chromium/third_party/protobuf/CHANGES.txt for the version
|
||||
Provides: bundled(protobuf) = 3.13.0.1
|
||||
Provides: bundled(qcms) = 4
|
||||
|
|
@ -321,8 +429,6 @@ Provides: bundled(v8) = 11.8.172.18
|
|||
# http://www.netlib.org/fdlibm/readme
|
||||
Provides: bundled(fdlibm) = 5.3
|
||||
|
||||
%{?_qt6_version:Requires: qt6-qtbase%{?_isa} = %{_qt6_version}}
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
|
|
@ -365,12 +471,12 @@ Requires: qt6-qtdeclarative-devel%{?_isa}
|
|||
|
||||
%package -n qt6-qtpdf-examples
|
||||
Summary: Example files for qt6-qtpdf
|
||||
|
||||
Requires: qt6-qtsvg%{?_isa}
|
||||
%description -n qt6-qtpdf-examples
|
||||
%{summary}.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{qt_module}-everywhere-src-%{version}%{?prerelease:-%{prerelease}} -a20
|
||||
%setup -q -n %{qt_module}-everywhere-src-%{qt_version}%{?prerelease:-%{prerelease}} -a20
|
||||
|
||||
mv pulse src/3rdparty/chromium/
|
||||
|
||||
|
|
@ -380,16 +486,29 @@ popd
|
|||
%patch -P1 -p1 -b .SIOCGSTAMP
|
||||
%patch -P2 -p1 -b .link-pipewire
|
||||
%patch -P3 -p1 -b .aarch64-new-stat
|
||||
|
||||
%patch -P50 -p1 -b .fix-build.patch
|
||||
%patch -P4 -p1 -b .use-openh264
|
||||
%if 0%{?fedora} > 43 || 0%{?rhel} > 10
|
||||
%patch -P5 -p1 -b .chromium-141-glibc-2.42-SYS_SECCOMP
|
||||
%endif
|
||||
|
||||
## upstream patches
|
||||
%patch -P80 -p1 -b .fix-arm-build
|
||||
%patch -P81 -p1 -b .move-gpu-info-logging-to-gpu-thread
|
||||
%patch -P82 -p1 -b .fix-quick-popup-window-positioning-under-x11
|
||||
|
||||
## upstreamable patches
|
||||
%patch -P110 -p1 -b .webrtc-system-openh264
|
||||
%patch -P111 -p1 -b .blink-system-openh264
|
||||
%patch -P112 -p1 -b .media-system-openh264
|
||||
%patch -P100 -p1 -b .add-missing-pipewire-headers
|
||||
%patch -P101 -p1 -b .fix-build-against-gcc16
|
||||
|
||||
# ppc64le support
|
||||
%patch -P200 -p1
|
||||
pushd src/3rdparty/chromium
|
||||
%patch -P201 -p1
|
||||
pushd third_party/highway/src
|
||||
%patch -P202 -p1
|
||||
popd
|
||||
popd
|
||||
|
||||
|
||||
# delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we
|
||||
# never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS
|
||||
|
|
@ -406,15 +525,25 @@ ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromi
|
|||
ln -s /usr/lib/python%{python3_version}/site-packages/six.py src/3rdparty/chromium/third_party/wpt_tools/wpt/tools/third_party/six/six.py
|
||||
%endif
|
||||
|
||||
%if 0%{?use_system_re2}
|
||||
#%%if 0%{?use_system_re2}
|
||||
# http://bugzilla.redhat.com/1337585
|
||||
# can't just delete, but we'll overwrite with system headers to be on the safe side
|
||||
cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/
|
||||
%endif
|
||||
#cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/
|
||||
#%%endif
|
||||
|
||||
# copy the Chromium license so it is installed with the appropriate name
|
||||
cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium
|
||||
|
||||
|
||||
# use system libraries not handled by cmake options correctly
|
||||
system_libs=()
|
||||
%if %{?use_system_ffmpeg}
|
||||
system_libs+=(ffmpeg)
|
||||
system_libs+=(openh264)
|
||||
%endif
|
||||
# Use system libraries
|
||||
src/3rdparty/chromium/build/linux/unbundle/replace_gn_files.py --system-libraries ${system_libs[@]}
|
||||
|
||||
# consider doing this as part of the tarball creation step instead? rdieter
|
||||
# fix/workaround
|
||||
# fatal error: QtWebEngineCore/qtwebenginecoreglobal.h: No such file or directory
|
||||
|
|
@ -434,21 +563,61 @@ export STRIP=strip
|
|||
export NINJAFLAGS="%{__ninja_common_opts}"
|
||||
export NINJA_PATH=%{__ninja}
|
||||
|
||||
# this follows the logic of the Configure summary to turn on and off
|
||||
%cmake_qt6 \
|
||||
-DCMAKE_TOOLCHAIN_FILE:STRING="%{_libdir}/cmake/Qt6/qt.toolchain.cmake" \
|
||||
-DFEATURE_qtpdf_build:BOOL=ON \
|
||||
-DFEATURE_webengine_build_gn:BOOL=ON \
|
||||
-DFEATURE_webengine_jumbo_build:BOOL=ON \
|
||||
-DFEATURE_webengine_developer_build:BOOL=OFF \
|
||||
-DFEATURE_qtwebengine_build:BOOL=ON \
|
||||
-DFEATURE_qtwebengine_core_build:BOOL=ON \
|
||||
-DFEATURE_qtwebengine_widgets_build:BOOL=ON \
|
||||
-DFEATURE_qtwebengine_quick_build:BOOL=ON \
|
||||
-DFEATURE_qtpdf_build:BOOL=ON \
|
||||
-DFEATURE_qtpdf_widgets_build:BOOL=ON \
|
||||
-DFEATURE_qtpdf_quick_build:BOOL=ON \
|
||||
-DFEATURE_webengine_system_re2:BOOL=%{?use_system_re2} \
|
||||
-DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \
|
||||
-DFEATURE_webengine_system_libwebp:BOOL=%{?use_system_libwebp} \
|
||||
-DFEATURE_webengine_system_opus:BOOL=%{?use_system_opus} \
|
||||
-DFEATURE_webengine_system_ffmpeg:BOOL=%{?use_system_ffmpeg} \
|
||||
-DFEATURE_webengine_system_libvpx:BOOL=%{?use_system_libvpx} \
|
||||
-DFEATURE_webengine_system_snappy:BOOL=%{?use_system_snappy} \
|
||||
-DFEATURE_webengine_system_glib:BOOL=%{?use_system_glib} \
|
||||
-DFEATURE_webengine_system_zlib:BOOL=%{?use_system_zlib} \
|
||||
-DFEATURE_webengine_system_minizip:BOOL=%{?use_system_minizip} \
|
||||
-DFEATURE_webengine_system_libevent:BOOL=%{?use_system_libevent} \
|
||||
-DFEATURE_webengine_system_libxml:BOOL=%{?use_system_libxml} \
|
||||
-DFEATURE_webengine_system_lcms2:BOOL=%{?use_system_lcms2} \
|
||||
-DFEATURE_webengine_system_libpng:BOOL=%{?use_system_libpng} \
|
||||
-DFEATURE_webengine_system_libtiff:BOOL=%{?use_system_libtiff} \
|
||||
-DFEATURE_webengine_system_libjpeg:BOOL=%{?use_system_libjpeg} \
|
||||
-DFEATURE_webengine_system_libopenjpeg2:BOOL=%{?use_system_libopenjpeg2} \
|
||||
-DFEATURE_webengine_system_harfbuzz:BOOL=%{?use_system_harfbuzz} \
|
||||
-DFEATURE_webengine_system_freetype:BOOL=%{?use_system_freetype} \
|
||||
-DFEATURE_webengine_system_libpci:BOOL=%{?use_system_libpci} \
|
||||
-DFEATURE_webengine_system_libudev:BOOL=%{?use_system_libudev} \
|
||||
-DFEATURE_webengine_embedded_build:BOOL=OFF \
|
||||
-DFEATURE_webengine_extensions:BOOL=ON \
|
||||
-DFEATURE_webengine_kerberos:BOOL=ON \
|
||||
-DFEATURE_webengine_native_spellchecker:BOOL=OFF \
|
||||
-DFEATURE_webengine_pepper_plugins:BOOL=ON \
|
||||
-DFEATURE_webengine_printing_and_pdf:BOOL=ON \
|
||||
-DFEATURE_webengine_proprietary_codecs:BOOL=ON \
|
||||
-DFEATURE_webengine_system_icu:BOOL=%{?use_system_libicu} \
|
||||
-DFEATURE_webengine_system_libevent:BOOL=ON \
|
||||
-DFEATURE_webengine_system_ffmpeg:BOOL=ON \
|
||||
-DFEATURE_webengine_spellchecker:BOOL=ON \
|
||||
-DFEATURE_webengine_native_spellchecker:BOOL=OFF \
|
||||
-DFEATURE_webengine_webrtc:BOOL=ON \
|
||||
-DFEATURE_webengine_webrtc_pipewire:BOOL=ON \
|
||||
-DFEATURE_webengine_geolocation:BOOL=ON \
|
||||
-DFEATURE_webengine_webchannel:BOOL=ON \
|
||||
-DFEATURE_webengine_kerberos:BOOL=ON \
|
||||
-DFEATURE_webengine_extensions:BOOL=ON \
|
||||
-DFEATURE_webengine_ozone_x11:BOOL=ON \
|
||||
-DFEATURE_webengine_vulkan:BOOL=ON \
|
||||
-DFEATURE_webengine_vaapi:BOOL=ON \
|
||||
-DFEATURE_webengine_system_alsa:BOOL=ON \
|
||||
-DFEATURE_webengine_system_pulseaudio:BOOL=ON \
|
||||
-DFEATURE_webengine_system_gbm:BOOL=ON \
|
||||
-DFEATURE_webengine_v8_context_snapshot:BOOL=ON \
|
||||
-DFEATURE_webenginedriver:BOOL=ON \
|
||||
-DFEATURE_pdf_v8:BOOL=%{?enable_pdf_v8} \
|
||||
-DQT_BUILD_EXAMPLES:BOOL=%{?examples:ON}%{!?examples:OFF} \
|
||||
-DQT_INSTALL_EXAMPLES_SOURCES=%{?examples:ON}%{!?examples:OFF}
|
||||
|
||||
|
|
@ -509,6 +678,7 @@ done
|
|||
%files
|
||||
%license LICENSE.*
|
||||
%{_qt6_archdatadir}/sbom/%{qt_module}-%{version}.spdx
|
||||
%{_qt6_archdatadir}/sbom/qtpdf-%{version}.spdx
|
||||
%{_qt6_libdir}/libQt6WebEngineCore.so.*
|
||||
%{_qt6_libdir}/libQt6WebEngineQuick.so.*
|
||||
%{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.so.*
|
||||
|
|
@ -601,21 +771,27 @@ done
|
|||
%{_qt6_libdir}/libQt6WebEngineQuick.prl
|
||||
%{_qt6_libdir}/libQt6WebEngineQuickDelegatesQml.prl
|
||||
%{_qt6_libdir}/libQt6WebEngineWidgets.prl
|
||||
%dir %{_qt6_libdir}/cmake/Qt6Designer
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineCore
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineCorePrivate
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate
|
||||
%{_qt6_libdir}/cmake/Qt6/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6BuildInternals/StandaloneTests/QtWebEngine*
|
||||
%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6Designer
|
||||
%{_qt6_libdir}/cmake/Qt6Designer/Qt6QWebEngine*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineWidgets/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineCore
|
||||
%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineCore/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineCorePrivate/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineCoreTools/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineWidgets/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate/*.cmake
|
||||
%{_qt6_libdir}/pkgconfig/Qt6WebEngineCore.pc
|
||||
%{_qt6_libdir}/pkgconfig/Qt6WebEngineQuick.pc
|
||||
%{_qt6_libdir}/pkgconfig/Qt6WebEngineQuickDelegatesQml.pc
|
||||
|
|
@ -655,13 +831,19 @@ done
|
|||
%{_qt6_libdir}/libQt6Pdf.prl
|
||||
%{_qt6_libdir}/libQt6PdfQuick.prl
|
||||
%{_qt6_libdir}/libQt6PdfWidgets.prl
|
||||
%{_qt6_libdir}/cmake/Qt6Gui/Qt6QPdf*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6Pdf
|
||||
%{_qt6_libdir}/cmake/Qt6Pdf/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6PdfPrivate
|
||||
%dir %{_qt6_libdir}/cmake/Qt6PdfQuick
|
||||
%{_qt6_libdir}/cmake/Qt6PdfQuick/*.cmake
|
||||
%dir %{_qt6_libdir}/cmake/Qt6PdfQuickPrivate
|
||||
%dir %{_qt6_libdir}/cmake/Qt6PdfWidgets
|
||||
%dir %{_qt6_libdir}/cmake/Qt6PdfWidgetsPrivate
|
||||
%{_qt6_libdir}/cmake/Qt6Gui/Qt6QPdf*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6Pdf/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6PdfPrivate/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6PdfQuick/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6PdfQuickPrivate/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6PdfWidgets/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6PdfWidgetsPrivate/*.cmake
|
||||
%{_qt6_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6Pdf*.cmake
|
||||
%{_qt6_libdir}/pkgconfig/Qt6Pdf.pc
|
||||
%{_qt6_libdir}/pkgconfig/Qt6PdfQuick.pc
|
||||
|
|
@ -674,6 +856,77 @@ done
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Jan 13 2026 Jan Grulich <jgrulich@redhat.com> - 6.10.1-5
|
||||
- Fix Quick popup window positioning under X11
|
||||
|
||||
* Sun Jan 11 2026 Jan Grulich <jgrulich@redhat.com> - 6.10.1-4
|
||||
- Apply the "Move GPU info logging into the GPU thread" patch
|
||||
|
||||
* Thu Jan 08 2026 Jan Grulich <jgrulich@redhat.com> - 6.10.1-3
|
||||
- Move GPU info logging into the GPU thread
|
||||
|
||||
* Fri Nov 21 2025 Jan Grulich <jgrulich@redhat.com> - 6.10.1-2
|
||||
- Rebuild for Koji infra issue
|
||||
|
||||
* Thu Nov 20 2025 Jan Grulich <jgrulich@redhat.com> - 6.10.1-1
|
||||
- 6.10.1
|
||||
|
||||
* Thu Oct 30 2025 Dominik Mierzejewski <dominik@greysector.net> - 6.10.0-4
|
||||
- Rebuilt for FFmpeg 8
|
||||
|
||||
* Thu Oct 30 2025 Jan Grulich <jgrulich@redhat.com> - 6.10.0-3
|
||||
- Fix FTBS in rawhide due to glib and PipeWire updates
|
||||
|
||||
* Tue Oct 07 2025 Jan Grulich <jgrulich@redhat.com> - 6.10.0-2
|
||||
- 6.10.0
|
||||
|
||||
* Thu Sep 25 2025 Jan Grulich <jgrulich@redhat.com> - 6.10.0~rc-1
|
||||
- 6.10.0 RC
|
||||
|
||||
* Mon Sep 08 2025 Sandro Mani <manisandro@gmail.com> - 6.9.2-2
|
||||
- Revert commit bcee2dbf412cc655c1b467091b581c696d234e3f
|
||||
|
||||
* Fri Aug 29 2025 Jan Grulich <jgrulich@redhat.com> - 6.9.2-1
|
||||
- 6.9.2
|
||||
|
||||
* Wed Aug 06 2025 František Zatloukal <fzatlouk@redhat.com> - 6.9.1-3
|
||||
- Rebuilt for icu 77.1
|
||||
|
||||
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 6.9.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Tue Jun 03 2025 Jan Grulich <jgrulich@redhat.com> - 6.9.1-1
|
||||
- 6.9.1
|
||||
|
||||
* Tue Apr 22 2025 Marie Loise Nolden <loise@kde.org> - 6.9.0-2
|
||||
- global define all optional system libs, enable XFA
|
||||
- cleanup spec
|
||||
|
||||
* Wed Apr 02 2025 Jan Grulich <jgrulich@redhat.com> - 6.9.0-1
|
||||
- 6.9.0
|
||||
|
||||
* Mon Mar 24 2025 Jan Grulich <jgrulich@redhat.com> - 6.9.0-0.1
|
||||
- 6.9.0 RC
|
||||
|
||||
* Thu Mar 13 2025 Fabio Valentini <decathorpe@gmail.com> - 6.8.2-5
|
||||
- Rebuild for noopenh264 2.6.0
|
||||
|
||||
* Tue Mar 04 2025 Jan Grulich <jgrulich@redhat.com> - 6.8.2-4
|
||||
- Unbundle libxml and libxslt
|
||||
|
||||
* Mon Mar 03 2025 Jan Grulich <jgrulich@redhat.com> - 6.8.2-3
|
||||
- Rework OpenH264 support following Chromium package
|
||||
- Backport upstream change for ffmpeg codec selection issues.
|
||||
|
||||
* Mon Feb 17 2025 Jan Grulich <jgrulich@redhat.com> - 6.8.2-2
|
||||
- Bump build for ppc64le enablement
|
||||
|
||||
* Fri Jan 31 2025 Jan Grulich <jgrulich@redhat.com> - 6.8.2-1
|
||||
- 6.8.2
|
||||
|
||||
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 6.8.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Sun Dec 15 2024 Pavel Solovev <daron439@gmail.com> - 6.8.1-3
|
||||
- Add optional deps
|
||||
|
||||
|
|
@ -708,7 +961,7 @@ done
|
|||
- 6.7.0
|
||||
|
||||
* Sun Mar 3 2024 Marie Loise Nolden <loise@kde.org> - 6.6.2-3
|
||||
- move qt designer plugin to -devel
|
||||
- move qt designer plugin to -devel
|
||||
- remove old doc package code (docs are in qt6-doc)
|
||||
|
||||
* Mon Feb 19 2024 Jan Grulich <jgrulich@redhat.com> - 6.6.2-2
|
||||
|
|
|
|||
13
qtwebengine-6.9-ppc64.patch
Normal file
13
qtwebengine-6.9-ppc64.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/cmake/QtToolchainHelpers.cmake b/cmake/QtToolchainHelpers.cmake
|
||||
index eaa3a4339..5693c4cc4 100644
|
||||
--- a/cmake/QtToolchainHelpers.cmake
|
||||
+++ b/cmake/QtToolchainHelpers.cmake
|
||||
@@ -55,6 +55,8 @@ function(get_gn_arch result arch)
|
||||
set(${result} "mips64el" PARENT_SCOPE)
|
||||
elseif(arch STREQUAL "riscv64")
|
||||
set(${result} "riscv64" PARENT_SCOPE)
|
||||
+ elseif(arch STREQUAL "power64")
|
||||
+ set(${result} "ppc64" PARENT_SCOPE)
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown architecture: ${arch}")
|
||||
endif()
|
||||
57
qtwebengine-add-missing-pipewire-headers.patch
Normal file
57
qtwebengine-add-missing-pipewire-headers.patch
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h
|
||||
index 84273ea695..825bb0000a 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/pipewire_session.h
|
||||
@@ -11,8 +11,10 @@
|
||||
#ifndef MODULES_VIDEO_CAPTURE_LINUX_PIPEWIRE_SESSION_H_
|
||||
#define MODULES_VIDEO_CAPTURE_LINUX_PIPEWIRE_SESSION_H_
|
||||
|
||||
-#include <pipewire/core.h>
|
||||
#include <pipewire/pipewire.h>
|
||||
+#include <spa/pod/pod.h>
|
||||
+#include <spa/utils/dict.h>
|
||||
+#include <spa/utils/hook.h>
|
||||
|
||||
#include <deque>
|
||||
#include <string>
|
||||
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc
|
||||
index f6cd57ac36..b9c579d2e3 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.cc
|
||||
@@ -10,10 +10,21 @@
|
||||
|
||||
#include "modules/video_capture/linux/video_capture_pipewire.h"
|
||||
|
||||
+#include <pipewire/pipewire.h>
|
||||
+#include <spa/buffer/buffer.h>
|
||||
+#include <spa/buffer/meta.h>
|
||||
+#include <spa/param/format-utils.h>
|
||||
#include <spa/param/format.h>
|
||||
+#include <spa/param/param.h>
|
||||
#include <spa/param/video/format-utils.h>
|
||||
+#include <spa/param/video/raw.h>
|
||||
#include <spa/pod/builder.h>
|
||||
+#include <spa/pod/iter.h>
|
||||
+#include <spa/pod/vararg.h>
|
||||
+#include <spa/utils/defs.h>
|
||||
#include <spa/utils/result.h>
|
||||
+#include <spa/utils/type.h>
|
||||
+#include <sys/mman.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h
|
||||
index 789f2034d3..7c1f9390fc 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_capture/linux/video_capture_pipewire.h
|
||||
@@ -11,6 +11,10 @@
|
||||
#ifndef MODULES_VIDEO_CAPTURE_LINUX_VIDEO_CAPTURE_PIPEWIRE_H_
|
||||
#define MODULES_VIDEO_CAPTURE_LINUX_VIDEO_CAPTURE_PIPEWIRE_H_
|
||||
|
||||
+#include <pipewire/pipewire.h>
|
||||
+#include <spa/pod/pod.h>
|
||||
+#include <spa/utils/hook.h>
|
||||
+
|
||||
#include "modules/video_capture/linux/pipewire_session.h"
|
||||
#include "modules/video_capture/video_capture_defines.h"
|
||||
#include "modules/video_capture/video_capture_impl.h"
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn
|
||||
index f05ad3eb2..8c73aa08e 100644
|
||||
--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn
|
||||
+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/mediarecorder/BUILD.gn
|
||||
@@ -3,9 +3,19 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("//build/buildflag_header.gni")
|
||||
+import("//build/config/linux/pkg_config.gni")
|
||||
import("//media/media_options.gni")
|
||||
import("//third_party/blink/renderer/modules/modules.gni")
|
||||
import("//third_party/libaom/options.gni")
|
||||
+import("//third_party/webrtc/webrtc.gni")
|
||||
+
|
||||
+if (rtc_use_h264 && rtc_use_system_openh264) {
|
||||
+ pkg_config("openh264") {
|
||||
+ packages = [
|
||||
+ "openh264",
|
||||
+ ]
|
||||
+ }
|
||||
+}
|
||||
|
||||
blink_modules_sources("mediarecorder") {
|
||||
sources = [
|
||||
@@ -56,7 +66,11 @@ blink_modules_sources("mediarecorder") {
|
||||
"h264_encoder.h",
|
||||
]
|
||||
|
||||
- deps += [ "//third_party/openh264:encoder" ]
|
||||
+ if (rtc_use_system_openh264) {
|
||||
+ configs += [":openh264"]
|
||||
+ } else {
|
||||
+ deps += [ "//third_party/openh264:encoder" ]
|
||||
+ }
|
||||
}
|
||||
|
||||
if (enable_libaom) {
|
||||
diff --git a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn
|
||||
index 1ad082fe7..7bf84b932 100644
|
||||
--- a/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn
|
||||
+++ b/src/3rdparty/chromium/third_party/blink/renderer/modules/webcodecs/BUILD.gn
|
||||
@@ -2,11 +2,21 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
+import("//build/config/linux/pkg_config.gni")
|
||||
import("//media/media_options.gni")
|
||||
import("//third_party/blink/renderer/modules/modules.gni")
|
||||
import("//third_party/libaom/options.gni")
|
||||
import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni")
|
||||
import("//third_party/protobuf/proto_library.gni")
|
||||
+import("//third_party/webrtc/webrtc.gni")
|
||||
+
|
||||
+if (rtc_use_h264 && rtc_use_system_openh264) {
|
||||
+ pkg_config("openh264") {
|
||||
+ packages = [
|
||||
+ "openh264",
|
||||
+ ]
|
||||
+ }
|
||||
+}
|
||||
|
||||
blink_modules_sources("webcodecs") {
|
||||
sources = [
|
||||
@@ -117,7 +127,11 @@ blink_modules_sources("webcodecs") {
|
||||
deps += [ "//third_party/libvpx" ]
|
||||
}
|
||||
if (media_use_openh264) {
|
||||
- deps += [ "//third_party/openh264:encoder" ]
|
||||
+ if (rtc_use_system_openh264) {
|
||||
+ configs += [":openh264"]
|
||||
+ } else {
|
||||
+ deps += [ "//third_party/openh264:encoder" ]
|
||||
+ }
|
||||
}
|
||||
if (is_fuchsia) {
|
||||
deps += [ "//media/fuchsia/video" ]
|
||||
29
qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch
Normal file
29
qtwebengine-chromium-141-glibc-2.42-SYS_SECCOMP.patch
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
Fix FTBFS
|
||||
|
||||
/usr/include/bits/siginfo-consts.h:219:3: error: expected identifier
|
||||
219 | SYS_SECCOMP = 1, /* Seccomp triggered. */
|
||||
| ^
|
||||
../../sandbox/linux/system_headers/linux_seccomp.h:220:39: note: expanded from macro 'SYS_SECCOMP'
|
||||
220 | #define SYS_SECCOMP 1
|
||||
| ^
|
||||
../../sandbox/linux/seccomp-bpf/trap.cc:159:46: error: use of undeclared identifier 'SYS_SECCOMP'
|
||||
159 | if (nr != LINUX_SIGSYS || info->si_code != SYS_SECCOMP || !ctx ||
|
||||
| ^~~~~~~~~~~
|
||||
/usr/include/bits/siginfo-consts.h:220:23: note: expanded from macro 'SYS_SECCOMP'
|
||||
220 | # define SYS_SECCOMP SYS_SECCOMP
|
||||
|
||||
diff -up chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h.me chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h
|
||||
--- chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h.me 2025-10-28 10:05:44.970248151 +0100
|
||||
+++ chromium-141.0.7390.122/src/3rdparty/chromium/sandbox/linux/system_headers/linux_seccomp.h 2025-10-28 10:05:52.291345772 +0100
|
||||
@@ -214,8 +214,11 @@ struct seccomp_notif_addfd {
|
||||
#define SECCOMP_RET_INVALID 0x00010000U // Illegal return value
|
||||
#endif
|
||||
|
||||
+// check glibc version < 2.42
|
||||
+#if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 42)
|
||||
#ifndef SYS_SECCOMP
|
||||
#define SYS_SECCOMP 1
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_
|
||||
258
qtwebengine-chromium-ppc64-highway.patch
Normal file
258
qtwebengine-chromium-ppc64-highway.patch
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
commit dcc0ca1cd4245ecff9e5ba50818e47d5e2ccf699
|
||||
Author: John Platts <john_platts@hotmail.com>
|
||||
Date: Fri Jan 17 12:16:49 2025 -0600
|
||||
|
||||
Fix for GCC 15 compiler error on PPC8/PPC9/PPC10
|
||||
|
||||
diff --git a/hwy/ops/ppc_vsx-inl.h b/hwy/ops/ppc_vsx-inl.h
|
||||
index 86d6d98c..3564ae0b 100644
|
||||
--- a/hwy/ops/ppc_vsx-inl.h
|
||||
+++ b/hwy/ops/ppc_vsx-inl.h
|
||||
@@ -3744,16 +3744,73 @@ static HWY_INLINE V VsxF2INormalizeSrcVals(V v) {
|
||||
#endif
|
||||
}
|
||||
|
||||
+template <class VF32>
|
||||
+static HWY_INLINE HWY_MAYBE_UNUSED VFromD<Repartition<int64_t, DFromV<VF32>>>
|
||||
+VsxXvcvspsxds(VF32 vf32) {
|
||||
+ using VI64 = VFromD<Repartition<int64_t, DFromV<VF32>>>;
|
||||
+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \
|
||||
+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)
|
||||
+ // Use __builtin_vsx_xvcvspsxds if it is available (which is the case with
|
||||
+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10)
|
||||
+ return VI64{__builtin_vsx_xvcvspsxds(vf32.raw)};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN
|
||||
+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64
|
||||
+ // vec_signedo intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VI64{vec_signedo(vf32.raw)};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN
|
||||
+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64
|
||||
+ // vec_signede intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VI64{vec_signede(vf32.raw)};
|
||||
+#else
|
||||
+ // Inline assembly fallback for older versions of Clang that do not have the
|
||||
+ // __builtin_vsx_xvcvspsxds intrinsic
|
||||
+ __vector signed long long raw_result;
|
||||
+ __asm__("xvcvspsxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :);
|
||||
+ return VI64{raw_result};
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+template <class VF32>
|
||||
+static HWY_INLINE HWY_MAYBE_UNUSED VFromD<Repartition<uint64_t, DFromV<VF32>>>
|
||||
+VsxXvcvspuxds(VF32 vf32) {
|
||||
+ using VU64 = VFromD<Repartition<uint64_t, DFromV<VF32>>>;
|
||||
+#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \
|
||||
+ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)
|
||||
+ // Use __builtin_vsx_xvcvspuxds if it is available (which is the case with
|
||||
+ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10)
|
||||
+ return VU64{reinterpret_cast<__vector unsigned long long>(
|
||||
+ __builtin_vsx_xvcvspuxds(vf32.raw))};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN
|
||||
+ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64
|
||||
+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VU64{vec_unsignedo(vf32.raw)};
|
||||
+#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN
|
||||
+ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64
|
||||
+ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been
|
||||
+ // removed from GCC in GCC 15
|
||||
+ return VU64{vec_unsignede(vf32.raw)};
|
||||
+#else
|
||||
+ // Inline assembly fallback for older versions of Clang that do not have the
|
||||
+ // __builtin_vsx_xvcvspuxds intrinsic
|
||||
+ __vector unsigned long long raw_result;
|
||||
+ __asm__("xvcvspuxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :);
|
||||
+ return VU64{raw_result};
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
} // namespace detail
|
||||
#endif // !HWY_S390X_HAVE_Z14
|
||||
|
||||
template <class D, HWY_IF_I64_D(D)>
|
||||
HWY_API VFromD<D> PromoteTo(D di64, VFromD<Rebind<float, D>> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw;
|
||||
- return VFromD<decltype(di64)>{__builtin_vsx_xvcvspsxds(raw_v)};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ const Repartition<float, decltype(di64)> dt_f32;
|
||||
+ const auto vt_f32 = ResizeBitCast(dt_f32, v);
|
||||
+ return detail::VsxXvcvspsxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32)));
|
||||
#else
|
||||
const RebindToFloat<decltype(di64)> df64;
|
||||
return ConvertTo(di64, PromoteTo(df64, v));
|
||||
@@ -3762,12 +3819,11 @@ HWY_API VFromD<D> PromoteTo(D di64, VFromD<Rebind<float, D>> v) {
|
||||
|
||||
template <class D, HWY_IF_U64_D(D)>
|
||||
HWY_API VFromD<D> PromoteTo(D du64, VFromD<Rebind<float, D>> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw;
|
||||
- return VFromD<decltype(du64)>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(raw_v))};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ const Repartition<float, decltype(du64)> dt_f32;
|
||||
+ const auto vt_f32 = ResizeBitCast(dt_f32, v);
|
||||
+ return detail::VsxXvcvspuxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32)));
|
||||
#else
|
||||
const RebindToFloat<decltype(du64)> df64;
|
||||
return ConvertTo(du64, PromoteTo(df64, v));
|
||||
@@ -3876,12 +3932,10 @@ HWY_API VFromD<D> PromoteUpperTo(D df64, Vec128<uint32_t> v) {
|
||||
|
||||
template <class D, HWY_IF_V_SIZE_D(D, 16), HWY_IF_I64_D(D)>
|
||||
HWY_API VFromD<D> PromoteUpperTo(D di64, Vec128<float> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v))
|
||||
- .raw;
|
||||
- return VFromD<decltype(di64)>{__builtin_vsx_xvcvspsxds(raw_v)};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ (void)di64;
|
||||
+ return detail::VsxXvcvspsxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v)));
|
||||
#else
|
||||
const RebindToFloat<decltype(di64)> df64;
|
||||
return ConvertTo(di64, PromoteUpperTo(df64, v));
|
||||
@@ -3890,13 +3944,10 @@ HWY_API VFromD<D> PromoteUpperTo(D di64, Vec128<float> v) {
|
||||
|
||||
template <class D, HWY_IF_V_SIZE_D(D, 16), HWY_IF_U64_D(D)>
|
||||
HWY_API VFromD<D> PromoteUpperTo(D du64, Vec128<float> v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
- const __vector float raw_v =
|
||||
- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v))
|
||||
- .raw;
|
||||
- return VFromD<decltype(du64)>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(raw_v))};
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
+ (void)du64;
|
||||
+ return detail::VsxXvcvspuxds(
|
||||
+ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128<float>(), v, v)));
|
||||
#else
|
||||
const RebindToFloat<decltype(du64)> df64;
|
||||
return ConvertTo(du64, PromoteUpperTo(df64, v));
|
||||
@@ -3984,20 +4035,18 @@ HWY_INLINE VFromD<D> PromoteEvenTo(hwy::SignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes
|
||||
- // on little-endian PPC, and the vec_sld operation below will shift the even
|
||||
+ // VsxXvcvspsxds expects the source values to be in the odd lanes on
|
||||
+ // little-endian PPC, and the Shuffle2103 operation below will shift the even
|
||||
// lanes of normalized_v into the odd lanes.
|
||||
- return VFromD<D>{
|
||||
- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))};
|
||||
+ return VsxXvcvspsxds(Shuffle2103(normalized_v));
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes
|
||||
- // on big-endian PPC.
|
||||
- return VFromD<D>{__builtin_vsx_xvcvspsxds(normalized_v.raw)};
|
||||
+ // VsxXvcvspsxds expects the source values to be in the even lanes on
|
||||
+ // big-endian PPC.
|
||||
+ return VsxXvcvspsxds(normalized_v);
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
@@ -4012,22 +4061,18 @@ HWY_INLINE VFromD<D> PromoteEvenTo(hwy::UnsignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes
|
||||
- // on little-endian PPC, and the vec_sld operation below will shift the even
|
||||
- // lanes of normalized_v into the odd lanes.
|
||||
- return VFromD<D>{
|
||||
- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds(
|
||||
- vec_sld(normalized_v.raw, normalized_v.raw, 4)))};
|
||||
+ // VsxXvcvspuxds expects the source values to be in the odd lanes
|
||||
+ // on little-endian PPC, and the Shuffle2103 operation below will shift the
|
||||
+ // even lanes of normalized_v into the odd lanes.
|
||||
+ return VsxXvcvspuxds(Shuffle2103(normalized_v));
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes
|
||||
+ // VsxXvcvspuxds expects the source values to be in the even lanes
|
||||
// on big-endian PPC.
|
||||
- return VFromD<D>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(normalized_v.raw))};
|
||||
+ return VsxXvcvspuxds(normalized_v);
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
@@ -4069,20 +4114,18 @@ HWY_INLINE VFromD<D> PromoteOddTo(hwy::SignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes
|
||||
+ // VsxXvcvspsxds expects the source values to be in the odd lanes
|
||||
// on little-endian PPC
|
||||
- return VFromD<D>{__builtin_vsx_xvcvspsxds(normalized_v.raw)};
|
||||
+ return VsxXvcvspsxds(normalized_v);
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes
|
||||
- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes
|
||||
- // of normalized_v into the even lanes.
|
||||
- return VFromD<D>{
|
||||
- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))};
|
||||
+ // VsxXvcvspsxds expects the source values to be in the even lanes
|
||||
+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd
|
||||
+ // lanes of normalized_v into the even lanes.
|
||||
+ return VsxXvcvspsxds(Shuffle0321(normalized_v));
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
@@ -4097,22 +4140,18 @@ HWY_INLINE VFromD<D> PromoteOddTo(hwy::UnsignedTag /*to_type_tag*/,
|
||||
hwy::SizeTag<8> /*to_lane_size_tag*/,
|
||||
hwy::FloatTag /*from_type_tag*/, D d_to,
|
||||
V v) {
|
||||
-#if !HWY_S390X_HAVE_Z14 && \
|
||||
- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds))
|
||||
+#if !HWY_S390X_HAVE_Z14
|
||||
(void)d_to;
|
||||
const auto normalized_v = detail::VsxF2INormalizeSrcVals(v);
|
||||
#if HWY_IS_LITTLE_ENDIAN
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes
|
||||
+ // VsxXvcvspuxds expects the source values to be in the odd lanes
|
||||
// on little-endian PPC
|
||||
- return VFromD<D>{reinterpret_cast<__vector unsigned long long>(
|
||||
- __builtin_vsx_xvcvspuxds(normalized_v.raw))};
|
||||
+ return VsxXvcvspuxds(normalized_v);
|
||||
#else
|
||||
- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes
|
||||
- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes
|
||||
- // of normalized_v into the even lanes.
|
||||
- return VFromD<D>{
|
||||
- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds(
|
||||
- vec_sld(normalized_v.raw, normalized_v.raw, 4)))};
|
||||
+ // VsxXvcvspuxds expects the source values to be in the even lanes
|
||||
+ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd
|
||||
+ // lanes of normalized_v into the even lanes.
|
||||
+ return VsxXvcvspuxds(Shuffle0321(normalized_v));
|
||||
#endif
|
||||
#else
|
||||
const RebindToFloat<decltype(d_to)> df64;
|
||||
27892
qtwebengine-chromium-ppc64.patch
Normal file
27892
qtwebengine-chromium-ppc64.patch
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,9 +1,9 @@
|
|||
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
|
||||
index fe4f2c3f1..729d4d3e9 100644
|
||||
index d5e9b715e..af4c046c4 100644
|
||||
--- a/src/core/CMakeLists.txt
|
||||
+++ b/src/core/CMakeLists.txt
|
||||
@@ -544,6 +544,10 @@ foreach(arch ${archs})
|
||||
)
|
||||
@@ -570,6 +570,10 @@ foreach(arch ${archs})
|
||||
list(APPEND gnArgArg libyuv_use_sve=false)
|
||||
endif()
|
||||
endif()
|
||||
+ if(cpu MATCHES "arm.*")
|
||||
|
|
@ -12,3 +12,4 @@ index fe4f2c3f1..729d4d3e9 100644
|
|||
+ endif()
|
||||
unset(cpu)
|
||||
endif()
|
||||
|
||||
|
|
|
|||
12
qtwebengine-fix-build-against-gcc16.patch
Normal file
12
qtwebengine-fix-build-against-gcc16.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/src/3rdparty/chromium/base/strings/to_string.h b/src/3rdparty/chromium/base/strings/to_string.h
|
||||
index 96e61daa9e..5d097946f7 100644
|
||||
--- a/src/3rdparty/chromium/base/strings/to_string.h
|
||||
+++ b/src/3rdparty/chromium/base/strings/to_string.h
|
||||
@@ -6,6 +6,7 @@
|
||||
#define BASE_STRINGS_TO_STRING_H_
|
||||
|
||||
#include <concepts>
|
||||
+#include <cstdint>
|
||||
#include <iomanip>
|
||||
#include <ios>
|
||||
#include <memory>
|
||||
|
|
@ -1,227 +0,0 @@
|
|||
diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h
|
||||
index 035affc..d8e1a53 100644
|
||||
--- a/src/3rdparty/chromium/base/debug/profiler.h
|
||||
+++ b/src/3rdparty/chromium/base/debug/profiler.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef BASE_DEBUG_PROFILER_H_
|
||||
#define BASE_DEBUG_PROFILER_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/cc/trees/target_property.cc b/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
index 7d73467..be4febd 100644
|
||||
--- a/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
+++ b/src/3rdparty/chromium/cc/trees/target_property.cc
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
#include "ui/gfx/animation/keyframe/target_property.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace cc {
|
||||
|
||||
static_assert(TargetProperty::LAST_TARGET_PROPERTY <
|
||||
diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
index c62a00e..af54520 100644
|
||||
--- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
+++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
#include "base/threading/platform_thread.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace device {
|
||||
|
||||
OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {}
|
||||
diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h
|
||||
index b5823c7..c152482 100644
|
||||
--- a/src/3rdparty/chromium/extensions/common/constants.h
|
||||
+++ b/src/3rdparty/chromium/extensions/common/constants.h
|
||||
@@ -13,6 +13,8 @@
|
||||
#include "build/chromeos_buildflags.h"
|
||||
#include "extensions/common/extensions_export.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace extensions {
|
||||
|
||||
// Scheme we serve extension content from.
|
||||
diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
index 8edbfbe..467ebd6 100644
|
||||
--- a/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
+++ b/src/3rdparty/chromium/gpu/config/gpu_util.h
|
||||
@@ -5,6 +5,8 @@
|
||||
#ifndef GPU_CONFIG_GPU_UTIL_H_
|
||||
#define GPU_CONFIG_GPU_UTIL_H_
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
#include "build/build_config.h"
|
||||
#include "gpu/config/gpu_feature_info.h"
|
||||
#include "gpu/gpu_export.h"
|
||||
diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h
|
||||
index f70619a..5c4eee7 100644
|
||||
--- a/src/3rdparty/chromium/net/base/parse_number.h
|
||||
+++ b/src/3rdparty/chromium/net/base/parse_number.h
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
#include "net/base/net_export.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
// This file contains utility functions for parsing numbers, in the context of
|
||||
// network protocols.
|
||||
//
|
||||
diff --git a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
index 7c0dcde..97054d4 100644
|
||||
--- a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
+++ b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
|
||||
@@ -38,6 +38,10 @@ namespace pp {
|
||||
/// As a further optimization, we can add support for this later.
|
||||
class ThreadSafeThreadTraits {
|
||||
public:
|
||||
+
|
||||
+ typedef pp::Lock Lock;
|
||||
+ typedef pp::AutoLock AutoLock;
|
||||
+
|
||||
class RefCount {
|
||||
public:
|
||||
/// Default constructor. In debug mode, this checks that the object is being
|
||||
@@ -67,8 +71,6 @@ class ThreadSafeThreadTraits {
|
||||
int32_t ref_;
|
||||
};
|
||||
|
||||
- typedef pp::Lock Lock;
|
||||
- typedef pp::AutoLock AutoLock;
|
||||
};
|
||||
|
||||
/// The non-thread-safe version of thread traits. Using this class as the
|
||||
diff --git a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
index a65ea9a..ba967c0 100644
|
||||
--- a/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
+++ b/src/3rdparty/chromium/third_party/dawn/src/dawn/native/CacheKey.h
|
||||
@@ -28,6 +28,7 @@
|
||||
#ifndef SRC_DAWN_NATIVE_CACHEKEY_H_
|
||||
#define SRC_DAWN_NATIVE_CACHEKEY_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <utility>
|
||||
|
||||
#include "dawn/native/stream/ByteVectorSink.h"
|
||||
diff --git a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
index 6fa2e88..6b942ab 100644
|
||||
--- a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
+++ b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <cstdint>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
+#include <cstdio>
|
||||
#include <new>
|
||||
#include <utility>
|
||||
|
||||
diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
index cc2c3a2..8eb694e 100644
|
||||
--- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
+++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h
|
||||
@@ -22,6 +22,8 @@
|
||||
#include "perfetto/base/status.h"
|
||||
#include "src/trace_processor/importers/common/trace_parser.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace perfetto {
|
||||
|
||||
namespace protos {
|
||||
diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
index ae6a412..5fe0370 100644
|
||||
--- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
+++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp
|
||||
@@ -15,6 +15,10 @@
|
||||
#include <cstring>
|
||||
#include <iterator>
|
||||
|
||||
+#include <string.h>
|
||||
+#include <algorithm>
|
||||
+#include <iterator>
|
||||
+
|
||||
static constexpr const char* gColorNames[] = {
|
||||
"aliceblue",
|
||||
"antiquewhite",
|
||||
diff --git a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
index 0bbfeed..91f19f8 100644
|
||||
--- a/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
+++ b/src/3rdparty/chromium/third_party/vulkan_memory_allocator/include/vk_mem_alloc.h
|
||||
@@ -122,6 +122,8 @@ See documentation chapter: \ref statistics.
|
||||
*/
|
||||
|
||||
|
||||
+#include <cstdio>
|
||||
+
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h
|
||||
index ab52508..050229a 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/portal/xdg_session_details.h
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
#include <gio/gio.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string>
|
||||
|
||||
namespace webrtc {
|
||||
diff --git a/src/3rdparty/chromium/ui/events/gesture_event_details.h b/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
index 857da97..e48e24d 100644
|
||||
--- a/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
+++ b/src/3rdparty/chromium/ui/events/gesture_event_details.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
#define UI_EVENTS_GESTURE_EVENT_DETAILS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <string.h>
|
||||
|
||||
#include "base/check_op.h"
|
||||
diff --git a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
index 7239ed5..975b88c 100644
|
||||
--- a/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
+++ b/src/3rdparty/chromium/ui/gfx/geometry/linear_gradient.h
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
+#include <cstdint>
|
||||
#include <array>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
index 93a99ec..f6ddfe7 100644
|
||||
--- a/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
+++ b/src/3rdparty/chromium/v8/src/base/macros.h
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef V8_BASE_MACROS_H_
|
||||
#define V8_BASE_MACROS_H_
|
||||
|
||||
+#include <cstdint>
|
||||
#include <limits>
|
||||
#include <type_traits>
|
||||
|
||||
diff --git a/src/core/browsing_data_remover_delegate_qt.h b/src/core/browsing_data_remover_delegate_qt.h
|
||||
index d33af4a..ce864b6 100644
|
||||
--- a/src/core/browsing_data_remover_delegate_qt.h
|
||||
+++ b/src/core/browsing_data_remover_delegate_qt.h
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
#include "content/public/browser/browsing_data_remover_delegate.h"
|
||||
|
||||
+#include <cstdint>
|
||||
+
|
||||
namespace QtWebEngineCore {
|
||||
|
||||
class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate {
|
||||
|
|
@ -1,574 +0,0 @@
|
|||
From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
|
||||
From: Dale Curtis <dalecurtis@chromium.org>
|
||||
Date: Sat, 2 Apr 2022 05:13:53 +0000
|
||||
Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
|
||||
commits)
|
||||
|
||||
https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
|
||||
|
||||
Created with:
|
||||
roll-dep src/third_party/ffmpeg
|
||||
|
||||
Fixed: 1293918
|
||||
Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
|
||||
Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
|
||||
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
|
||||
Reviewed-by: Dan Sanders <sandersd@chromium.org>
|
||||
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/main@{#988253}
|
||||
---
|
||||
.../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
|
||||
media/ffmpeg/ffmpeg_common.cc | 11 +++----
|
||||
media/filters/audio_file_reader.cc | 9 +++---
|
||||
media/filters/audio_file_reader_unittest.cc | 6 ++--
|
||||
.../filters/audio_video_metadata_extractor.cc | 11 +++++--
|
||||
.../filters/ffmpeg_aac_bitstream_converter.cc | 7 +++--
|
||||
...ffmpeg_aac_bitstream_converter_unittest.cc | 2 +-
|
||||
media/filters/ffmpeg_audio_decoder.cc | 13 +++++----
|
||||
8 files changed, 51 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
index c535d2b..62ddbc8 100644
|
||||
--- a/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
+++ b/src/3rdparty/chromium/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
|
||||
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
|
||||
}
|
||||
|
||||
- codec_context->channels = config.channel_count;
|
||||
+ codec_context->ch_layout.nb_channels = config.channel_count;
|
||||
codec_context->sample_rate = config.samples_per_second;
|
||||
|
||||
if (config.extra_data) {
|
||||
@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
|
||||
case cdm::kAudioFormatPlanarS16:
|
||||
case cdm::kAudioFormatPlanarF32: {
|
||||
const int decoded_size_per_channel =
|
||||
- decoded_audio_size / av_frame.channels;
|
||||
- for (int i = 0; i < av_frame.channels; ++i) {
|
||||
+ decoded_audio_size / av_frame.ch_layout.nb_channels;
|
||||
+ for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
|
||||
memcpy(output_buffer, av_frame.extended_data[i],
|
||||
decoded_size_per_channel);
|
||||
output_buffer += decoded_size_per_channel;
|
||||
@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
|
||||
// Success!
|
||||
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
|
||||
samples_per_second_ = config.samples_per_second;
|
||||
- bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
|
||||
+ bytes_per_frame_ =
|
||||
+ codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
|
||||
output_timestamp_helper_ =
|
||||
std::make_unique<AudioTimestampHelper>(config.samples_per_second);
|
||||
is_initialized_ = true;
|
||||
|
||||
// Store initial values to guard against midstream configuration changes.
|
||||
- channels_ = codec_context_->channels;
|
||||
+ channels_ = codec_context_->ch_layout.nb_channels;
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
|
||||
return true;
|
||||
@@ -291,7 +292,8 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
|
||||
for (auto& frame : audio_frames) {
|
||||
int decoded_audio_size = 0;
|
||||
if (frame->sample_rate != samples_per_second_ ||
|
||||
- frame->channels != channels_ || frame->format != av_sample_format_) {
|
||||
+ frame->ch_layout.nb_channels != channels_ ||
|
||||
+ frame->format != av_sample_format_) {
|
||||
DLOG(ERROR) << "Unsupported midstream configuration change!"
|
||||
<< " Sample Rate: " << frame->sample_rate << " vs "
|
||||
<< samples_per_second_
|
||||
@@ -302,7 +304,7 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
|
||||
}
|
||||
|
||||
decoded_audio_size = av_samples_get_buffer_size(
|
||||
- nullptr, codec_context_->channels, frame->nb_samples,
|
||||
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
||||
codec_context_->sample_fmt, 1);
|
||||
if (!decoded_audio_size)
|
||||
continue;
|
||||
@@ -322,7 +324,7 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
|
||||
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
|
||||
AVFrame* frame) {
|
||||
*total_size += av_samples_get_buffer_size(
|
||||
- nullptr, codec_context_->channels, frame->nb_samples,
|
||||
+ nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
||||
codec_context_->sample_fmt, 1);
|
||||
audio_frames->emplace_back(av_frame_clone(frame));
|
||||
return true;
|
||||
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
|
||||
index 2665355..910f9ad 100644
|
||||
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
|
||||
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
|
||||
@@ -336,10 +336,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
|
||||
codec_context->sample_fmt, codec_context->codec_id);
|
||||
|
||||
ChannelLayout channel_layout =
|
||||
- codec_context->channels > 8
|
||||
+ codec_context->ch_layout.nb_channels > 8
|
||||
? CHANNEL_LAYOUT_DISCRETE
|
||||
- : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
|
||||
- codec_context->channels);
|
||||
+ : ChannelLayoutToChromeChannelLayout(
|
||||
+ codec_context->ch_layout.u.mask,
|
||||
+ codec_context->ch_layout.nb_channels);
|
||||
|
||||
switch (codec) {
|
||||
// For AC3/EAC3 we enable only demuxing, but not decoding, so FFmpeg does
|
||||
@@ -391,7 +392,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
|
||||
extra_data, encryption_scheme, seek_preroll,
|
||||
codec_context->delay);
|
||||
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
|
||||
- config->SetChannelsForDiscrete(codec_context->channels);
|
||||
+ config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
|
||||
|
||||
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
|
||||
// These are bitstream formats unknown to ffmpeg, so they don't have
|
||||
@@ -460,7 +461,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
|
||||
|
||||
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
|
||||
// said information to decode.
|
||||
- codec_context->channels = config.channels();
|
||||
+ codec_context->ch_layout.nb_channels = config.channels();
|
||||
codec_context->sample_rate = config.samples_per_second();
|
||||
|
||||
if (config.extra_data().empty()) {
|
||||
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
|
||||
index 777eabc..2b58dd7 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
|
||||
@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
|
||||
|
||||
// Verify the channel layout is supported by Chrome. Acts as a sanity check
|
||||
// against invalid files. See http://crbug.com/171962
|
||||
- if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
|
||||
- codec_context_->channels) ==
|
||||
+ if (ChannelLayoutToChromeChannelLayout(
|
||||
+ codec_context_->ch_layout.u.mask,
|
||||
+ codec_context_->ch_layout.nb_channels) ==
|
||||
CHANNEL_LAYOUT_UNSUPPORTED) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Store initial values to guard against midstream configuration changes.
|
||||
- channels_ = codec_context_->channels;
|
||||
+ channels_ = codec_context_->ch_layout.nb_channels;
|
||||
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
|
||||
sample_rate_ = codec_context_->sample_rate;
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
|
||||
if (frames_read < 0)
|
||||
return false;
|
||||
|
||||
- const int channels = frame->channels;
|
||||
+ const int channels = frame->ch_layout.nb_channels;
|
||||
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
|
||||
frame->format != av_sample_format_) {
|
||||
DLOG(ERROR) << "Unsupported midstream configuration change!"
|
||||
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
index 76b41aa..e26b6cd 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
|
||||
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
|
||||
audio_profile_ != stream_codec_parameters_->profile ||
|
||||
sample_rate_index_ != sample_rate_index ||
|
||||
- channel_configuration_ != stream_codec_parameters_->channels ||
|
||||
+ channel_configuration_ !=
|
||||
+ stream_codec_parameters_->ch_layout.nb_channels ||
|
||||
frame_length_ != header_plus_packet_size) {
|
||||
header_generated_ =
|
||||
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
|
||||
0, // layer
|
||||
stream_codec_parameters_->profile, sample_rate_index,
|
||||
0, // private stream
|
||||
- stream_codec_parameters_->channels,
|
||||
+ stream_codec_parameters_->ch_layout.nb_channels,
|
||||
0, // originality
|
||||
0, // home
|
||||
0, // copyrighted_stream
|
||||
@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
|
||||
codec_ = stream_codec_parameters_->codec_id;
|
||||
audio_profile_ = stream_codec_parameters_->profile;
|
||||
sample_rate_index_ = sample_rate_index;
|
||||
- channel_configuration_ = stream_codec_parameters_->channels;
|
||||
+ channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
|
||||
frame_length_ = header_plus_packet_size;
|
||||
}
|
||||
|
||||
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
index 3b46f7f..1897eb0 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
|
||||
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
|
||||
test_parameters_.codec_id = AV_CODEC_ID_AAC;
|
||||
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
|
||||
- test_parameters_.channels = 2;
|
||||
+ test_parameters_.ch_layout.nb_channels = 2;
|
||||
test_parameters_.extradata = extradata_header_;
|
||||
test_parameters_.extradata_size = sizeof(extradata_header_);
|
||||
}
|
||||
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
|
||||
index bf3ed00..d564ee9 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc
|
||||
@@ -29,7 +29,7 @@ namespace media {
|
||||
|
||||
// Return the number of channels from the data in |frame|.
|
||||
static inline int DetermineChannels(AVFrame* frame) {
|
||||
- return frame->channels;
|
||||
+ return frame->ch_layout.nb_channels;
|
||||
}
|
||||
|
||||
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
|
||||
@@ -243,7 +243,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
|
||||
// Translate unsupported into discrete layouts for discrete configurations;
|
||||
// ffmpeg does not have a labeled discrete configuration internally.
|
||||
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
|
||||
- codec_context_->channel_layout, codec_context_->channels);
|
||||
+ codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
|
||||
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
|
||||
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
|
||||
channel_layout = CHANNEL_LAYOUT_DISCRETE;
|
||||
@@ -360,11 +360,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
|
||||
// Success!
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
|
||||
- if (codec_context_->channels != config.channels()) {
|
||||
+ if (codec_context_->ch_layout.nb_channels != config.channels()) {
|
||||
MEDIA_LOG(ERROR, media_log_)
|
||||
<< "Audio configuration specified " << config.channels()
|
||||
<< " channels, but FFmpeg thinks the file contains "
|
||||
- << codec_context_->channels << " channels";
|
||||
+ << codec_context_->ch_layout.nb_channels << " channels";
|
||||
ReleaseFFmpegResources();
|
||||
state_ = DecoderState::kUninitialized;
|
||||
return false;
|
||||
@@ -415,7 +415,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
|
||||
if (frame->nb_samples <= 0)
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
- if (s->channels != channels) {
|
||||
+ if (s->ch_layout.nb_channels != channels) {
|
||||
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
@@ -448,7 +448,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
|
||||
ChannelLayout channel_layout =
|
||||
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
|
||||
? CHANNEL_LAYOUT_DISCRETE
|
||||
- : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
|
||||
+ : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
|
||||
+ s->ch_layout.nb_channels);
|
||||
|
||||
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
|
||||
DLOG(ERROR) << "Unsupported channel layout.";
|
||||
commit 62274859104bd828373ae406aa9309e610449ac5
|
||||
Author: Ted Meyer <tmathmeyer@chromium.org>
|
||||
Date: Fri Mar 22 19:56:55 2024 +0000
|
||||
|
||||
Replace deprecated use of AVCodecContext::reordered_opaque
|
||||
|
||||
We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context
|
||||
now to trigger timestamp propagation.
|
||||
|
||||
Bug: 330573128
|
||||
Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858
|
||||
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308
|
||||
Commit-Queue: Ted (Chromium) Meyer <tmathmeyer@chromium.org>
|
||||
Reviewed-by: Dan Sanders <sandersd@chromium.org>
|
||||
Cr-Commit-Position: refs/heads/main@{#1277051}
|
||||
|
||||
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
|
||||
index 910f9ad..8be165c 100644
|
||||
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
|
||||
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.cc
|
||||
@@ -411,7 +411,9 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
|
||||
|
||||
// TODO(dalecurtis): Just use the profile from the codec context if ffmpeg
|
||||
// ever starts supporting xHE-AAC.
|
||||
- if (codec_context->profile == FF_PROFILE_UNKNOWN) {
|
||||
+ constexpr uint8_t kXHEAAc = 41;
|
||||
+ if (codec_context->profile == FF_PROFILE_UNKNOWN ||
|
||||
+ codec_context->profile == kXHEAAc) {
|
||||
// Errors aren't fatal here, so just drop any MediaLog messages.
|
||||
NullMediaLog media_log;
|
||||
mp4::AAC aac_parser;
|
||||
diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
|
||||
index 05dcb1c..866f446 100644
|
||||
--- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
|
||||
+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_regression_tests.cc
|
||||
@@ -90,16 +90,16 @@ FFMPEG_TEST_CASE(Cr62127,
|
||||
PIPELINE_ERROR_DECODE,
|
||||
PIPELINE_ERROR_DECODE);
|
||||
FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK);
|
||||
-FFMPEG_TEST_CASE(Cr100492,
|
||||
- "security/100492.webm",
|
||||
- DECODER_ERROR_NOT_SUPPORTED,
|
||||
- DECODER_ERROR_NOT_SUPPORTED);
|
||||
+FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", PIPELINE_OK, PIPELINE_OK);
|
||||
FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK);
|
||||
FFMPEG_TEST_CASE(Cr101458,
|
||||
"security/101458.webm",
|
||||
PIPELINE_ERROR_DECODE,
|
||||
PIPELINE_ERROR_DECODE);
|
||||
-FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK);
|
||||
+FFMPEG_TEST_CASE(Cr108416,
|
||||
+ "security/108416.webm",
|
||||
+ PIPELINE_ERROR_DECODE,
|
||||
+ PIPELINE_ERROR_DECODE);
|
||||
FFMPEG_TEST_CASE(Cr110849,
|
||||
"security/110849.mkv",
|
||||
DEMUXER_ERROR_COULD_NOT_OPEN,
|
||||
@@ -154,7 +154,10 @@ FFMPEG_TEST_CASE(Cr234630b,
|
||||
"security/234630b.mov",
|
||||
DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
|
||||
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
|
||||
-FFMPEG_TEST_CASE(Cr242786, "security/242786.webm", PIPELINE_OK, PIPELINE_OK);
|
||||
+FFMPEG_TEST_CASE(Cr242786,
|
||||
+ "security/242786.webm",
|
||||
+ PIPELINE_OK,
|
||||
+ PIPELINE_ERROR_DECODE);
|
||||
// Test for out-of-bounds access with slightly corrupt file (detection logic
|
||||
// thinks it's a MONO file, but actually contains STEREO audio).
|
||||
FFMPEG_TEST_CASE(Cr275590,
|
||||
@@ -372,8 +375,8 @@ FFMPEG_TEST_CASE(WEBM_2,
|
||||
DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
|
||||
FFMPEG_TEST_CASE(WEBM_4,
|
||||
"security/out.webm.68798.1929",
|
||||
- DECODER_ERROR_NOT_SUPPORTED,
|
||||
- DECODER_ERROR_NOT_SUPPORTED);
|
||||
+ PIPELINE_OK,
|
||||
+ PIPELINE_OK);
|
||||
FFMPEG_TEST_CASE(WEBM_5, "frame_size_change.webm", PIPELINE_OK, PIPELINE_OK);
|
||||
|
||||
// General MKV test cases.
|
||||
diff --git a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
|
||||
index a7b2533..ba3c308 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/audio_decoder_unittest.cc
|
||||
@@ -484,7 +484,7 @@ constexpr TestParams kXheAacTestParams[] = {
|
||||
}},
|
||||
0,
|
||||
29400,
|
||||
- CHANNEL_LAYOUT_MONO,
|
||||
+ CHANNEL_LAYOUT_UNSUPPORTED,
|
||||
AudioCodecProfile::kXHE_AAC},
|
||||
#endif
|
||||
{AudioCodec::kAAC,
|
||||
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
|
||||
index 2b58dd7..9d37f32 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc
|
||||
@@ -243,18 +243,10 @@ bool AudioFileReader::OnNewFrame(
|
||||
// silence from being output. In the case where we are also discarding some
|
||||
// portion of the packet (as indicated by a negative pts), we further want to
|
||||
// adjust the duration downward by however much exists before zero.
|
||||
-#if BUILDFLAG(USE_SYSTEM_FFMPEG)
|
||||
- if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
|
||||
-#else
|
||||
if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
|
||||
-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG)
|
||||
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
|
||||
glue_->format_context()->streams[stream_index_]->time_base,
|
||||
-#if BUILDFLAG(USE_SYSTEM_FFMPEG)
|
||||
- frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
|
||||
-#else
|
||||
frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
|
||||
-#endif // BUILDFLAG(USE_SYSTEM_FFMPEG)
|
||||
const base::TimeDelta frame_duration =
|
||||
base::Seconds(frames_read / static_cast<double>(sample_rate_));
|
||||
|
||||
diff --git a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
|
||||
index a1c633d..5784fe1 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/audio_file_reader_unittest.cc
|
||||
@@ -61,15 +61,14 @@ class AudioFileReaderTest : public testing::Test {
|
||||
// Verify packets are consistent across demuxer runs. Reads the first few
|
||||
// packets and then seeks back to the start timestamp and verifies that the
|
||||
// hashes match on the packets just read.
|
||||
- void VerifyPackets() {
|
||||
- const int kReads = 3;
|
||||
+ void VerifyPackets(int packet_reads) {
|
||||
const int kTestPasses = 2;
|
||||
|
||||
AVPacket packet;
|
||||
base::TimeDelta start_timestamp;
|
||||
std::vector<std::string> packet_md5_hashes_;
|
||||
for (int i = 0; i < kTestPasses; ++i) {
|
||||
- for (int j = 0; j < kReads; ++j) {
|
||||
+ for (int j = 0; j < packet_reads; ++j) {
|
||||
ASSERT_TRUE(reader_->ReadPacketForTesting(&packet));
|
||||
|
||||
// On the first pass save the MD5 hash of each packet, on subsequent
|
||||
@@ -98,7 +97,8 @@ class AudioFileReaderTest : public testing::Test {
|
||||
int sample_rate,
|
||||
base::TimeDelta duration,
|
||||
int frames,
|
||||
- int expected_frames) {
|
||||
+ int expected_frames,
|
||||
+ int packet_reads = 3) {
|
||||
Initialize(fn);
|
||||
ASSERT_TRUE(reader_->Open());
|
||||
EXPECT_EQ(channels, reader_->channels());
|
||||
@@ -112,7 +112,7 @@ class AudioFileReaderTest : public testing::Test {
|
||||
EXPECT_EQ(reader_->HasKnownDuration(), false);
|
||||
}
|
||||
if (!packet_verification_disabled_)
|
||||
- ASSERT_NO_FATAL_FAILURE(VerifyPackets());
|
||||
+ ASSERT_NO_FATAL_FAILURE(VerifyPackets(packet_reads));
|
||||
ReadAndVerify(hash, expected_frames);
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
|
||||
}
|
||||
|
||||
TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
|
||||
- RunTestFailingDecode("midstream_config_change.mp3", 42624);
|
||||
+ RunTestFailingDecode("midstream_config_change.mp3", 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -229,7 +229,7 @@ TEST_F(AudioFileReaderTest, VorbisInvalidChannelLayout) {
|
||||
|
||||
TEST_F(AudioFileReaderTest, WaveValidFourChannelLayout) {
|
||||
RunTest("4ch.wav", "131.71,38.02,130.31,44.89,135.98,42.52,", 4, 44100,
|
||||
- base::Microseconds(100001), 4411, 4410);
|
||||
+ base::Microseconds(100001), 4411, 4410, /*packet_reads=*/2);
|
||||
}
|
||||
|
||||
TEST_F(AudioFileReaderTest, ReadPartialMP3) {
|
||||
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
|
||||
index e62b2af..ab39796 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
|
||||
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc
|
||||
@@ -125,7 +125,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
|
||||
}
|
||||
|
||||
FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log)
|
||||
- : media_log_(media_log) {
|
||||
+ : media_log_(media_log), timestamp_map_(128) {
|
||||
DVLOG(1) << __func__;
|
||||
DETACH_FROM_SEQUENCE(sequence_checker_);
|
||||
}
|
||||
@@ -204,10 +204,6 @@ int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context,
|
||||
frame->linesize[plane] = layout->planes()[plane].stride;
|
||||
}
|
||||
|
||||
- // This seems unsafe, given threaded decoding. However, `reordered_opaque` is
|
||||
- // also going away upstream, so we need a whole new mechanism either way.
|
||||
- frame->reordered_opaque = codec_context->reordered_opaque;
|
||||
-
|
||||
// This will be freed by `ReleaseVideoBufferImpl`.
|
||||
auto* opaque = new OpaqueData(fb_priv, frame_pool_, data, allocation_size,
|
||||
std::move(*layout));
|
||||
@@ -354,8 +350,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
|
||||
DCHECK(packet->data);
|
||||
DCHECK_GT(packet->size, 0);
|
||||
|
||||
- // Let FFmpeg handle presentation timestamp reordering.
|
||||
- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
|
||||
+ const int64_t timestamp = buffer.timestamp().InMicroseconds();
|
||||
+ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId();
|
||||
+ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp));
|
||||
+ packet->opaque = reinterpret_cast<void*>(timestamp_id.GetUnsafeValue());
|
||||
}
|
||||
FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
|
||||
packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
|
||||
@@ -414,7 +412,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) {
|
||||
}
|
||||
gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect);
|
||||
|
||||
- const auto pts = base::Microseconds(frame->reordered_opaque);
|
||||
+ const auto ts_id = TimestampId(reinterpret_cast<size_t>(frame->opaque));
|
||||
+ const auto ts_lookup = timestamp_map_.Get(ts_id);
|
||||
+ if (ts_lookup == timestamp_map_.end()) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ const auto pts = base::Microseconds(std::get<1>(*ts_lookup));
|
||||
auto video_frame = VideoFrame::WrapExternalDataWithLayout(
|
||||
opaque->layout, visible_rect, natural_size, opaque->data, opaque->size,
|
||||
pts);
|
||||
@@ -489,8 +492,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
|
||||
codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config);
|
||||
codec_context_->thread_type =
|
||||
FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
|
||||
+
|
||||
codec_context_->opaque = this;
|
||||
codec_context_->get_buffer2 = GetVideoBufferImpl;
|
||||
+ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
|
||||
|
||||
if (decode_nalus_)
|
||||
codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
|
||||
diff --git a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
|
||||
index 60cb9d5..4fa8628 100644
|
||||
--- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
|
||||
+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.h
|
||||
@@ -7,10 +7,12 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
+#include "base/containers/lru_cache.h"
|
||||
#include "base/functional/callback.h"
|
||||
#include "base/memory/raw_ptr.h"
|
||||
#include "base/memory/scoped_refptr.h"
|
||||
#include "base/sequence_checker.h"
|
||||
+#include "base/types/id_type.h"
|
||||
#include "media/base/supported_video_decoder_config.h"
|
||||
#include "media/base/video_decoder.h"
|
||||
#include "media/base/video_decoder_config.h"
|
||||
@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
|
||||
// FFmpeg structures owned by this object.
|
||||
std::unique_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_;
|
||||
|
||||
+ // The gist here is that timestamps need to be 64 bits to store microsecond
|
||||
+ // precision. A 32 bit integer would overflow at ~35 minutes at this level of
|
||||
+ // precision. We can't cast the timestamp to the void ptr object used by the
|
||||
+ // opaque field in ffmpeg then, because it would lose data on a 32 bit build.
|
||||
+ // However, we don't actually have 2^31 timestamped frames in a single
|
||||
+ // playback, so it's fine to use the 32 bit value as a key in a map which
|
||||
+ // contains the actual timestamps. Additionally, we've in the past set 128
|
||||
+ // outstanding frames for re-ordering as a limit for cross-thread decoding
|
||||
+ // tasks, so we'll do that here too with the LRU cache.
|
||||
+ using TimestampId = base::IdType<int64_t, size_t, 0>;
|
||||
+
|
||||
+ TimestampId::Generator timestamp_id_generator_;
|
||||
+ base::LRUCache<TimestampId, int64_t> timestamp_map_;
|
||||
+
|
||||
VideoDecoderConfig config_;
|
||||
|
||||
scoped_refptr<FrameBufferPool> frame_pool_;
|
||||
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
|
||||
index f67718c..fe42aef 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
|
||||
@@ -229,7 +229,6 @@ int H264DecoderImpl::AVGetBuffer2(AVCodecContext* context,
|
||||
int total_size = y_size + 2 * uv_size;
|
||||
|
||||
av_frame->format = context->pix_fmt;
|
||||
- av_frame->reordered_opaque = context->reordered_opaque;
|
||||
|
||||
// Create a VideoFrame object, to keep a reference to the buffer.
|
||||
// TODO(nisse): The VideoFrame's timestamp and rotation info is not used.
|
||||
@@ -377,8 +376,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
|
||||
return WEBRTC_VIDEO_CODEC_ERROR;
|
||||
}
|
||||
packet->size = static_cast<int>(input_image.size());
|
||||
- int64_t frame_timestamp_us = input_image.ntp_time_ms_ * 1000; // ms -> μs
|
||||
- av_context_->reordered_opaque = frame_timestamp_us;
|
||||
|
||||
int result = avcodec_send_packet(av_context_.get(), packet.get());
|
||||
|
||||
@@ -395,10 +392,6 @@ int32_t H264DecoderImpl::Decode(const EncodedImage& input_image,
|
||||
return WEBRTC_VIDEO_CODEC_ERROR;
|
||||
}
|
||||
|
||||
- // We don't expect reordering. Decoded frame timestamp should match
|
||||
- // the input one.
|
||||
- RTC_DCHECK_EQ(av_frame_->reordered_opaque, frame_timestamp_us);
|
||||
-
|
||||
// TODO(sakal): Maybe it is possible to get QP directly from FFmpeg.
|
||||
h264_bitstream_parser_.ParseBitstream(input_image);
|
||||
absl::optional<int> qp = h264_bitstream_parser_.GetLastSliceQp();
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
From 65ea28e7204eaeb39588a33cfc2f69c48951aa6a Mon Sep 17 00:00:00 2001
|
||||
From: Peter Varga <pvarga@inf.u-szeged.hu>
|
||||
Date: Thu, 14 Aug 2025 16:17:41 +0200
|
||||
Subject: [PATCH] Fix Quick popup window positioning under X11
|
||||
|
||||
If the popup window has the Qt::Dialog flag, some window managers may
|
||||
try to resize and move the popup after it becomes visible. This can lead
|
||||
to a blinking popup or even worse, it can cause a loop that continuously
|
||||
moves the popup window.
|
||||
|
||||
Replace Qt::Tool flag with Qt::Popup to get rid of the Qt::Dialog flag
|
||||
but keep popup as popup.
|
||||
|
||||
Note on Wayland Qt:Tool is xdg toplevel not a 'popup' neither 'grabbing
|
||||
popup' and it creates shell surface. This means it will get random
|
||||
position on the screen.
|
||||
|
||||
Note this tricky issue as we already changed that several times both
|
||||
for widgets and quick due to different reasons (see 1390979a, 2f720836,
|
||||
58467ed19, 7e7dd2625, c56169f7a1)
|
||||
|
||||
Fixes: QTBUG-140321
|
||||
Task-number: QTBUG-132794
|
||||
Task-number: QTBUG-138747
|
||||
Pick-to: 6.10
|
||||
Change-Id: I8c3a94519008455fac2d8ab4c3bf34d860e2475b
|
||||
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
|
||||
---
|
||||
.../render_widget_host_view_qt_delegate_quickwindow.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp
|
||||
index 3ad88ca39aa..95b5e3500b3 100644
|
||||
--- a/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp
|
||||
+++ b/src/webenginequick/render_widget_host_view_qt_delegate_quickwindow.cpp
|
||||
@@ -31,7 +31,8 @@ RenderWidgetHostViewQtDelegateQuickWindow::RenderWidgetHostViewQtDelegateQuickWi
|
||||
RenderWidgetHostViewQtDelegateItem *realDelegate, QWindow *parent)
|
||||
: QQuickWindow(), m_realDelegate(realDelegate), m_virtualParent(nullptr), m_transformed(false)
|
||||
{
|
||||
- setFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);
|
||||
+ setFlags(Qt::Popup | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint
|
||||
+ | Qt::WindowDoesNotAcceptFocus);
|
||||
realDelegate->setParentItem(contentItem());
|
||||
setTransientParent(parent);
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
diff --git a/src/3rdparty/chromium/media/video/BUILD.gn b/src/3rdparty/chromium/media/video/BUILD.gn
|
||||
index ef5c9c6c0..7e439852d 100644
|
||||
--- a/src/3rdparty/chromium/media/video/BUILD.gn
|
||||
+++ b/src/3rdparty/chromium/media/video/BUILD.gn
|
||||
@@ -2,7 +2,17 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
+import("//build/config/linux/pkg_config.gni")
|
||||
import("//media/media_options.gni")
|
||||
+import("//third_party/webrtc/webrtc.gni")
|
||||
+
|
||||
+if (rtc_use_h264 && rtc_use_system_openh264) {
|
||||
+ pkg_config("openh264") {
|
||||
+ packages = [
|
||||
+ "openh264",
|
||||
+ ]
|
||||
+ }
|
||||
+}
|
||||
|
||||
source_set("video") {
|
||||
# Do not expand the visibility here without double-checking with OWNERS, this
|
||||
@@ -114,7 +124,12 @@ source_set("video") {
|
||||
"openh264_video_encoder.cc",
|
||||
"openh264_video_encoder.h",
|
||||
]
|
||||
- deps += [ "//third_party/openh264:encoder" ]
|
||||
+
|
||||
+ if (rtc_use_system_openh264) {
|
||||
+ configs += [":openh264"]
|
||||
+ } else {
|
||||
+ deps += [ "//third_party/openh264:encoder" ]
|
||||
+ }
|
||||
}
|
||||
|
||||
if (is_apple) {
|
||||
607
qtwebengine-move-gpu-info-logging-to-gpu-thread.patch
Normal file
607
qtwebengine-move-gpu-info-logging-to-gpu-thread.patch
Normal file
|
|
@ -0,0 +1,607 @@
|
|||
From 1534a75e57b47d763af8f32eec91bc8471442816 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Varga <pvarga@inf.u-szeged.hu>
|
||||
Date: Mon, 20 Oct 2025 10:43:49 +0200
|
||||
Subject: [PATCH] Move GPU info logging to the GPU thread
|
||||
|
||||
Accessing certain GPU information (eg. GPU feature status values) from
|
||||
the browser thread requires extra API on top of Chromium, such as
|
||||
content::GpuChildThread::gpu_channel_manager().
|
||||
|
||||
This change moves the logging to the GPU thread, allowing use of
|
||||
existing APIs like content::GpuDataManager::GetFeatureStatus().
|
||||
|
||||
Task-number: QTBUG-139335
|
||||
Fixes: QTBUG-142497
|
||||
Fixes: QTBUG-142720
|
||||
Change-Id: I4e4471a78258a1502ec0e11683cae3936e170ce1
|
||||
Reviewed-by: Moss Heim <moss.heim@qt.io>
|
||||
(cherry picked from commit 0b65b0754d1534280acc3fe48be61127ce24ac93)
|
||||
---
|
||||
|
||||
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
|
||||
index 64ef09f..eb83a82 100644
|
||||
--- a/src/core/CMakeLists.txt
|
||||
+++ b/src/core/CMakeLists.txt
|
||||
@@ -132,6 +132,7 @@
|
||||
file_system_access/file_system_access_permission_request_manager_qt.cpp file_system_access/file_system_access_permission_request_manager_qt.h
|
||||
find_text_helper.cpp find_text_helper.h
|
||||
global_descriptors_qt.h
|
||||
+ gpu/content_gpu_client_qt.cpp gpu/content_gpu_client_qt.h
|
||||
javascript_dialog_controller.cpp javascript_dialog_controller.h javascript_dialog_controller_p.h
|
||||
javascript_dialog_manager_qt.cpp javascript_dialog_manager_qt.h
|
||||
login_delegate_qt.cpp login_delegate_qt.h
|
||||
diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp
|
||||
index 4d81e39..ed63980 100644
|
||||
--- a/src/core/content_client_qt.cpp
|
||||
+++ b/src/core/content_client_qt.cpp
|
||||
@@ -4,8 +4,6 @@
|
||||
|
||||
#include "content_client_qt.h"
|
||||
|
||||
-#include "compositor/compositor.h"
|
||||
-
|
||||
#include "base/command_line.h"
|
||||
#include "base/files/file_util.h"
|
||||
#include "base/json/json_string_value_serializer.h"
|
||||
@@ -13,15 +11,11 @@
|
||||
#include "base/strings/string_util.h"
|
||||
#include "base/values.h"
|
||||
#include "base/version.h"
|
||||
-#include "content/gpu/gpu_child_thread.h"
|
||||
#include "content/public/common/cdm_info.h"
|
||||
#include "content/public/common/content_constants.h"
|
||||
#include "content/public/common/content_switches.h"
|
||||
#include "extensions/buildflags/buildflags.h"
|
||||
#include "extensions/common/constants.h"
|
||||
-#include "gpu/config/gpu_feature_info.h"
|
||||
-#include "gpu/config/gpu_preferences.h"
|
||||
-#include "gpu/ipc/service/gpu_channel_manager.h"
|
||||
#include "media/base/media_switches.h"
|
||||
#include "media/base/video_codecs.h"
|
||||
#include "media/cdm/supported_audio_codecs.h"
|
||||
@@ -34,10 +28,8 @@
|
||||
#include <QCoreApplication>
|
||||
#include <QFile>
|
||||
#include <QLibraryInfo>
|
||||
-#include <QRegularExpression>
|
||||
#include <QString>
|
||||
#include <QSysInfo>
|
||||
-#include <QThread>
|
||||
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
#include "ui/gl/gl_utils.h"
|
||||
@@ -497,165 +489,4 @@
|
||||
return origin_trial_policy_.get();
|
||||
}
|
||||
|
||||
-void ContentClientQt::SetGpuInfo(const gpu::GPUInfo &gpu_info)
|
||||
-{
|
||||
- base::CommandLine *commandLine = base::CommandLine::ForCurrentProcess();
|
||||
- const bool isBrowserProcess = !commandLine->HasSwitch(switches::kProcessType);
|
||||
- const bool isMainThread = QThread::currentThread() == qApp->thread();
|
||||
-
|
||||
- // Limit this to the main thread of the browser process for now.
|
||||
- if (!isBrowserProcess || !isMainThread)
|
||||
- return;
|
||||
-
|
||||
- if (!gpu_info.IsInitialized()) {
|
||||
- // This is probably not an issue but suspicious.
|
||||
- qWarning("Failed to initialize GPUInfo.");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- const gpu::GPUInfo::GPUDevice &primary = gpu_info.gpu;
|
||||
-
|
||||
- // Do not print the info again if the device hasn't been changed.
|
||||
- // Change of the device is unexpected: we don't support or implement fallback yet.
|
||||
- // It is suspicious if the info is logged twice.
|
||||
- if (m_gpuInfo && m_gpuInfo->gpu.device_string == primary.device_string)
|
||||
- return;
|
||||
- m_gpuInfo = gpu_info;
|
||||
-
|
||||
- auto *gpuChannelManager = content::GpuChildThread::instance()->gpu_channel_manager();
|
||||
- const gpu::GpuFeatureStatus gpuCompositingStatus =
|
||||
- gpuChannelManager->gpu_feature_info()
|
||||
- .status_values[gpu::GPU_FEATURE_TYPE_ACCELERATED_GL];
|
||||
-
|
||||
-#if BUILDFLAG(IS_OZONE)
|
||||
- if (gpuCompositingStatus == gpu::kGpuFeatureStatusEnabled) {
|
||||
- // See entry 3 in //gpu/config/software_rendering_list.json
|
||||
- QRegularExpression filter(u"software|llvmpipe|softpipe"_s,
|
||||
- QRegularExpression::CaseInsensitiveOption);
|
||||
- if (filter.match(QLatin1StringView(gpu_info.gl_renderer)).hasMatch()) {
|
||||
- qWarning("Hardware rendering is enabled but it is not supported with Mesa software "
|
||||
- "rasterizer. Expect troubles.");
|
||||
-
|
||||
- if (gpuChannelManager->gpu_preferences().ignore_gpu_blocklist)
|
||||
- qWarning("Rendering may fail because --ignore-gpu-blocklist is set.");
|
||||
- }
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
- if (Q_LIKELY(!lcWebEngineCompositor().isDebugEnabled()))
|
||||
- return;
|
||||
-
|
||||
- auto deviceToString = [](const gpu::GPUInfo::GPUDevice &device) -> QString {
|
||||
- if (device.vendor_id == 0x0)
|
||||
- return "Disabled"_L1;
|
||||
-
|
||||
- QString log;
|
||||
-
|
||||
- // TODO: Factor vendor translation out from QtWebEngineCore::GPUInfo.
|
||||
- // Only name the most common desktop GPU hardware vendors for now.
|
||||
- switch (device.vendor_id) {
|
||||
- case 0x1002:
|
||||
- log += "AMD"_L1;
|
||||
- break;
|
||||
- case 0x10DE:
|
||||
- log += "Nvidia"_L1;
|
||||
- break;
|
||||
- case 0x8086:
|
||||
- log += "Intel"_L1;
|
||||
- break;
|
||||
- default:
|
||||
- log += "vendor id: 0x"_L1 + QString::number(device.vendor_id, 16);
|
||||
- }
|
||||
-
|
||||
- log += ", device id: 0x"_L1 + QString::number(device.device_id, 16);
|
||||
-
|
||||
- if (!device.driver_vendor.empty()) {
|
||||
- log += ", driver: "_L1 + QLatin1StringView(device.driver_vendor) + u' '
|
||||
- + QLatin1StringView(device.driver_version);
|
||||
- }
|
||||
- log += ", system device id: 0x"_L1 + QString::number(device.system_device_id, 16);
|
||||
-
|
||||
- log += ", preference: "_L1;
|
||||
- switch (device.gpu_preference) {
|
||||
- case gl::GpuPreference::kNone:
|
||||
- log += "None"_L1;
|
||||
- break;
|
||||
- case gl::GpuPreference::kDefault:
|
||||
- log += "Default"_L1;
|
||||
- break;
|
||||
- case gl::GpuPreference::kLowPower:
|
||||
- log += "LowPower"_L1;
|
||||
- break;
|
||||
- case gl::GpuPreference::kHighPerformance:
|
||||
- log += "HighPerformance"_L1;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- log += ", active: "_L1 + (device.active ? "yes"_L1 : "no"_L1);
|
||||
- return log;
|
||||
- };
|
||||
-
|
||||
- QString log;
|
||||
-
|
||||
- log = "GPU Compositing: ";
|
||||
- switch (gpuCompositingStatus) {
|
||||
- case gpu::kGpuFeatureStatusEnabled:
|
||||
- log += "Enabled"_L1;
|
||||
- break;
|
||||
- case gpu::kGpuFeatureStatusBlocklisted:
|
||||
- log += "Blocklisted"_L1;
|
||||
- break;
|
||||
- case gpu::kGpuFeatureStatusDisabled:
|
||||
- log += "Disabled"_L1;
|
||||
- break;
|
||||
- case gpu::kGpuFeatureStatusSoftware:
|
||||
- log += "Software"_L1;
|
||||
- break;
|
||||
- case gpu::kGpuFeatureStatusUndefined:
|
||||
- log += "Undefined"_L1;
|
||||
- break;
|
||||
- case gpu::kGpuFeatureStatusMax:
|
||||
- log += "Max"_L1;
|
||||
- break;
|
||||
- }
|
||||
- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log));
|
||||
-
|
||||
- if (gpu_info.gl_vendor.empty() || gpu_info.gl_vendor == "Disabled") {
|
||||
- log = "ANGLE is disabled:\n"_L1;
|
||||
- log += " GL Renderer: "_L1 + QLatin1StringView(gpu_info.gl_renderer) + u'\n';
|
||||
- log += " Software Renderer: "_L1 + (primary.IsSoftwareRenderer() ? "yes"_L1 : "no"_L1)
|
||||
- + u'\n';
|
||||
- log += " Primary GPU: "_L1 + deviceToString(primary) + u'\n';
|
||||
- } else {
|
||||
- log = QLatin1StringView(gpu_info.display_type) + " display is initialized:\n"_L1;
|
||||
- log += " GL Renderer: "_L1 + QLatin1StringView(gpu_info.gl_renderer) + u'\n';
|
||||
- log += " "_L1 + QString::number(gpu_info.GpuCount()) + " GPU(s) detected:\n"_L1;
|
||||
- log += " "_L1 + deviceToString(primary) + u'\n';
|
||||
- for (auto &secondary : gpu_info.secondary_gpus)
|
||||
- log += " "_L1 + deviceToString(secondary) + u'\n';
|
||||
-
|
||||
- log += " NVIDIA Optimus: "_L1 + (gpu_info.optimus ? "enabled"_L1 : "disabled"_L1) + u'\n';
|
||||
- log += " AMD Switchable: "_L1 + (gpu_info.amd_switchable ? "enabled"_L1 : "disabled"_L1);
|
||||
- }
|
||||
-
|
||||
- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log));
|
||||
-
|
||||
-#if BUILDFLAG(IS_WIN)
|
||||
- log = "Windows specific driver information:\n"_L1;
|
||||
-
|
||||
- log += " Direct Composition: "_L1;
|
||||
- if (gpu_info.overlay_info.direct_composition)
|
||||
- log += "enabled\n"_L1;
|
||||
- else if (gl::GetGlWorkarounds().disable_direct_composition)
|
||||
- log += "disabled by workaround\n"_L1;
|
||||
- else
|
||||
- log += "disabled\n"_L1;
|
||||
-
|
||||
- log += " Supports Overlays: "_L1
|
||||
- + (gpu_info.overlay_info.supports_overlays ? "yes"_L1 : "no"_L1) + u'\n';
|
||||
- log += " Supports D3D Shared Images: "_L1 + (gpu_info.shared_image_d3d ? "yes"_L1 : "no"_L1);
|
||||
- qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(log));
|
||||
-#endif
|
||||
-}
|
||||
-
|
||||
} // namespace QtWebEngineCore
|
||||
diff --git a/src/core/content_client_qt.h b/src/core/content_client_qt.h
|
||||
index 2936c23..d5f9e71 100644
|
||||
--- a/src/core/content_client_qt.h
|
||||
+++ b/src/core/content_client_qt.h
|
||||
@@ -10,11 +10,9 @@
|
||||
#include "base/synchronization/lock.h"
|
||||
#include "components/embedder_support/origin_trials/origin_trial_policy_impl.h"
|
||||
#include "content/public/common/content_client.h"
|
||||
-#include "gpu/config/gpu_info.h"
|
||||
#include "ui/base/layout.h"
|
||||
|
||||
#include <memory>
|
||||
-#include <optional>
|
||||
|
||||
namespace QtWebEngineCore {
|
||||
|
||||
@@ -32,13 +30,11 @@
|
||||
gfx::Image &GetNativeImageNamed(int resource_id) override;
|
||||
std::u16string GetLocalizedString(int message_id) override;
|
||||
blink::OriginTrialPolicy *GetOriginTrialPolicy() override;
|
||||
- void SetGpuInfo(const gpu::GPUInfo &gpu_info) override;
|
||||
|
||||
private:
|
||||
// Used to lock when |origin_trial_policy_| is initialized.
|
||||
base::Lock origin_trial_policy_lock_;
|
||||
std::unique_ptr<embedder_support::OriginTrialPolicyImpl> origin_trial_policy_;
|
||||
- std::optional<gpu::GPUInfo> m_gpuInfo;
|
||||
};
|
||||
|
||||
} // namespace QtWebEngineCore
|
||||
diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp
|
||||
index 6c61c7a..1512f9a 100644
|
||||
--- a/src/core/content_main_delegate_qt.cpp
|
||||
+++ b/src/core/content_main_delegate_qt.cpp
|
||||
@@ -194,6 +194,12 @@
|
||||
return m_browserClient.get();
|
||||
}
|
||||
|
||||
+content::ContentGpuClient *ContentMainDelegateQt::CreateContentGpuClient()
|
||||
+{
|
||||
+ m_gpuClient.reset(new ContentGpuClientQt);
|
||||
+ return m_gpuClient.get();
|
||||
+}
|
||||
+
|
||||
content::ContentRendererClient *ContentMainDelegateQt::CreateContentRendererClient()
|
||||
{
|
||||
#if BUILDFLAG(IS_LINUX)
|
||||
diff --git a/src/core/content_main_delegate_qt.h b/src/core/content_main_delegate_qt.h
|
||||
index cb320ec..b725d88 100644
|
||||
--- a/src/core/content_main_delegate_qt.h
|
||||
+++ b/src/core/content_main_delegate_qt.h
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "content_browser_client_qt.h"
|
||||
#include "content_client_qt.h"
|
||||
#include "content_utility_client_qt.h"
|
||||
+#include "gpu/content_gpu_client_qt.h"
|
||||
|
||||
namespace QtWebEngineCore {
|
||||
|
||||
@@ -23,6 +24,7 @@
|
||||
|
||||
content::ContentClient *CreateContentClient() override;
|
||||
content::ContentBrowserClient* CreateContentBrowserClient() override;
|
||||
+ content::ContentGpuClient* CreateContentGpuClient() override;
|
||||
content::ContentRendererClient* CreateContentRendererClient() override;
|
||||
content::ContentUtilityClient* CreateContentUtilityClient() override;
|
||||
std::optional<int> BasicStartupComplete() override;
|
||||
@@ -30,6 +32,7 @@
|
||||
private:
|
||||
ContentClientQt m_contentClient;
|
||||
std::unique_ptr<ContentBrowserClientQt> m_browserClient;
|
||||
+ std::unique_ptr<ContentGpuClientQt> m_gpuClient;
|
||||
std::unique_ptr<ContentUtilityClientQt> m_utilityClient;
|
||||
};
|
||||
|
||||
diff --git a/src/core/gpu/content_gpu_client_qt.cpp b/src/core/gpu/content_gpu_client_qt.cpp
|
||||
new file mode 100644
|
||||
index 0000000..2cb6592
|
||||
--- /dev/null
|
||||
+++ b/src/core/gpu/content_gpu_client_qt.cpp
|
||||
@@ -0,0 +1,236 @@
|
||||
+// Copyright (C) 2025 The Qt Company Ltd.
|
||||
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
+// Qt-Security score:significant reason:default
|
||||
+
|
||||
+#include "content_gpu_client_qt.h"
|
||||
+
|
||||
+#include "compositor/compositor.h"
|
||||
+
|
||||
+#include "content/public/browser/browser_thread.h"
|
||||
+#include "content/public/browser/gpu_data_manager.h"
|
||||
+#include "content/public/browser/gpu_data_manager_observer.h"
|
||||
+#include "gpu/config/gpu_driver_bug_workarounds.h"
|
||||
+#include "gpu/config/gpu_info.h"
|
||||
+#include "mojo/public/cpp/bindings/binder_map.h"
|
||||
+
|
||||
+#include <QtCore/qregularexpression.h>
|
||||
+#include <QtCore/qstring.h>
|
||||
+
|
||||
+#include <optional>
|
||||
+#include <tuple>
|
||||
+
|
||||
+#if BUILDFLAG(IS_WIN)
|
||||
+#include "ui/gl/gl_utils.h"
|
||||
+#endif
|
||||
+
|
||||
+using namespace Qt::StringLiterals;
|
||||
+
|
||||
+namespace QtWebEngineCore {
|
||||
+
|
||||
+namespace {
|
||||
+static inline bool isSameDevice(const gpu::GPUInfo::GPUDevice &d1,
|
||||
+ const gpu::GPUInfo::GPUDevice &d2)
|
||||
+{
|
||||
+ return std::tie(d1.vendor_id, d1.device_id, d1.system_device_id, d1.vendor_string,
|
||||
+ d1.device_string, d1.driver_vendor, d1.driver_version)
|
||||
+ == std::tie(d2.vendor_id, d2.device_id, d2.system_device_id, d2.vendor_string,
|
||||
+ d2.device_string, d2.driver_vendor, d2.driver_version);
|
||||
+}
|
||||
+
|
||||
+static QString gpuDeviceToString(const gpu::GPUInfo::GPUDevice &device)
|
||||
+{
|
||||
+ if (device.vendor_id == 0x0)
|
||||
+ return "Disabled"_L1;
|
||||
+
|
||||
+ QString deviceString;
|
||||
+
|
||||
+ // TODO: Factor vendor translation out from QtWebEngineCore::GPUInfo.
|
||||
+ // Only name the most common desktop GPU hardware vendors for now.
|
||||
+ switch (device.vendor_id) {
|
||||
+ case 0x1002:
|
||||
+ deviceString += "AMD"_L1;
|
||||
+ break;
|
||||
+ case 0x10DE:
|
||||
+ deviceString += "Nvidia"_L1;
|
||||
+ break;
|
||||
+ case 0x8086:
|
||||
+ deviceString += "Intel"_L1;
|
||||
+ break;
|
||||
+ default:
|
||||
+ deviceString += "vendor id: 0x"_L1 + QString::number(device.vendor_id, 16);
|
||||
+ }
|
||||
+
|
||||
+ deviceString += ", device id: 0x"_L1 + QString::number(device.device_id, 16);
|
||||
+
|
||||
+ if (!device.driver_vendor.empty()) {
|
||||
+ deviceString += ", driver: "_L1 + QLatin1StringView(device.driver_vendor) + u' '
|
||||
+ + QLatin1StringView(device.driver_version);
|
||||
+ }
|
||||
+ deviceString += ", system device id: 0x"_L1 + QString::number(device.system_device_id, 16);
|
||||
+
|
||||
+ deviceString += ", preference: "_L1;
|
||||
+ switch (device.gpu_preference) {
|
||||
+ case gl::GpuPreference::kNone:
|
||||
+ deviceString += "None"_L1;
|
||||
+ break;
|
||||
+ case gl::GpuPreference::kDefault:
|
||||
+ deviceString += "Default"_L1;
|
||||
+ break;
|
||||
+ case gl::GpuPreference::kLowPower:
|
||||
+ deviceString += "LowPower"_L1;
|
||||
+ break;
|
||||
+ case gl::GpuPreference::kHighPerformance:
|
||||
+ deviceString += "HighPerformance"_L1;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ deviceString += ", active: "_L1 + (device.active ? "yes"_L1 : "no"_L1);
|
||||
+ return deviceString;
|
||||
+}
|
||||
+
|
||||
+static inline const char *gpuFeatureStatusToString(const gpu::GpuFeatureStatus &status)
|
||||
+{
|
||||
+ switch (status) {
|
||||
+ case gpu::kGpuFeatureStatusEnabled:
|
||||
+ return "Enabled";
|
||||
+ case gpu::kGpuFeatureStatusBlocklisted:
|
||||
+ return "Blocklisted";
|
||||
+ case gpu::kGpuFeatureStatusDisabled:
|
||||
+ return "Disabled";
|
||||
+ case gpu::kGpuFeatureStatusSoftware:
|
||||
+ return "Software";
|
||||
+ case gpu::kGpuFeatureStatusUndefined:
|
||||
+ return "Undefined";
|
||||
+ case gpu::kGpuFeatureStatusMax:
|
||||
+ return "Max";
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static QString angleInfo(const gpu::GPUInfo &gpuInfo)
|
||||
+{
|
||||
+ QString info;
|
||||
+
|
||||
+ if (gpuInfo.gl_vendor.empty() || gpuInfo.gl_vendor == "Disabled") {
|
||||
+ info = "ANGLE is disabled:\n"_L1;
|
||||
+ info += " GL Renderer: "_L1 + QLatin1StringView(gpuInfo.gl_renderer) + u'\n';
|
||||
+ info += " Software Renderer: "_L1 + (gpuInfo.gpu.IsSoftwareRenderer() ? "yes"_L1 : "no"_L1)
|
||||
+ + u'\n';
|
||||
+ info += " Primary GPU: "_L1 + gpuDeviceToString(gpuInfo.gpu) + u'\n';
|
||||
+ return info;
|
||||
+ }
|
||||
+
|
||||
+ info = QLatin1StringView(gpuInfo.display_type) + " display is initialized:\n"_L1;
|
||||
+ info += " GL Renderer: "_L1 + QLatin1StringView(gpuInfo.gl_renderer) + u'\n';
|
||||
+ info += " "_L1 + QString::number(gpuInfo.GpuCount()) + " GPU(s) detected:\n"_L1;
|
||||
+ info += " "_L1 + gpuDeviceToString(gpuInfo.gpu) + u'\n';
|
||||
+ for (auto &secondary : gpuInfo.secondary_gpus)
|
||||
+ info += " "_L1 + gpuDeviceToString(secondary) + u'\n';
|
||||
+
|
||||
+ info += " NVIDIA Optimus: "_L1 + (gpuInfo.optimus ? "enabled"_L1 : "disabled"_L1) + u'\n';
|
||||
+ info += " AMD Switchable: "_L1 + (gpuInfo.amd_switchable ? "enabled"_L1 : "disabled"_L1);
|
||||
+
|
||||
+ return info;
|
||||
+}
|
||||
+
|
||||
+#if BUILDFLAG(IS_WIN)
|
||||
+static QString windowsInfo(const gpu::GPUInfo &gpuInfo)
|
||||
+{
|
||||
+ QString info;
|
||||
+ info = "Windows specific driver information:\n"_L1;
|
||||
+
|
||||
+ info += " Direct Composition: "_L1;
|
||||
+ if (gpuInfo.overlay_info.direct_composition)
|
||||
+ info += "enabled\n"_L1;
|
||||
+ else if (gl::GetGlWorkarounds().disable_direct_composition)
|
||||
+ info += "disabled by workaround\n"_L1;
|
||||
+ else
|
||||
+ info += "disabled\n"_L1;
|
||||
+
|
||||
+ info += " Supports Overlays: "_L1
|
||||
+ + (gpuInfo.overlay_info.supports_overlays ? "yes"_L1 : "no"_L1) + u'\n';
|
||||
+ info += " Supports D3D Shared Images: "_L1 + (gpuInfo.shared_image_d3d ? "yes"_L1 : "no"_L1);
|
||||
+ return info;
|
||||
+}
|
||||
+#endif
|
||||
+} // namespace
|
||||
+
|
||||
+class GpuObserver : public content::GpuDataManagerObserver
|
||||
+{
|
||||
+public:
|
||||
+ GpuObserver(ContentGpuClientQt *client) : m_client(client)
|
||||
+ {
|
||||
+ content::GpuDataManager *manager = content::GpuDataManager::GetInstance();
|
||||
+ if (manager->IsEssentialGpuInfoAvailable())
|
||||
+ OnGpuInfoUpdate();
|
||||
+ }
|
||||
+
|
||||
+ ~GpuObserver() { content::GpuDataManager::GetInstance()->RemoveObserver(this); }
|
||||
+
|
||||
+ void OnGpuInfoUpdate() override
|
||||
+ {
|
||||
+ content::GpuDataManager *manager = content::GpuDataManager::GetInstance();
|
||||
+ Q_ASSERT(manager->IsEssentialGpuInfoAvailable());
|
||||
+
|
||||
+ const gpu::GPUInfo &gpuInfo = manager->GetGPUInfo();
|
||||
+ Q_ASSERT(gpuInfo.IsInitialized());
|
||||
+
|
||||
+ // Avoid logging the info again if the device hasn't changed.
|
||||
+ // A change in the device is unexpected, as we currently don't support or implement
|
||||
+ // fallback. Logging the info multiple times may indicate a problem.
|
||||
+ if (m_gpuInfo && isSameDevice(m_gpuInfo->gpu, gpuInfo.gpu))
|
||||
+ return;
|
||||
+ m_gpuInfo = gpuInfo;
|
||||
+
|
||||
+ const gpu::GpuFeatureStatus gpuCompositingStatus =
|
||||
+ manager->GetFeatureStatus(gpu::GPU_FEATURE_TYPE_ACCELERATED_GL);
|
||||
+ qCDebug(lcWebEngineCompositor, "GPU Compositing: %s",
|
||||
+ gpuFeatureStatusToString(gpuCompositingStatus));
|
||||
+
|
||||
+#if BUILDFLAG(IS_OZONE)
|
||||
+ if (gpuCompositingStatus == gpu::kGpuFeatureStatusEnabled) {
|
||||
+ // See entry 3 in //gpu/config/software_rendering_list.json
|
||||
+ QRegularExpression filter(u"software|llvmpipe|softpipe"_s,
|
||||
+ QRegularExpression::CaseInsensitiveOption);
|
||||
+ if (filter.match(QLatin1StringView(gpuInfo.gl_renderer)).hasMatch()) {
|
||||
+ qWarning("Hardware rendering is enabled but it is not supported with Mesa software "
|
||||
+ "rasterizer. Expect troubles.");
|
||||
+
|
||||
+ if (m_client->gpuPreferences().ignore_gpu_blocklist)
|
||||
+ qWarning("Rendering may fail because --ignore-gpu-blocklist is set.");
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(angleInfo(gpuInfo)));
|
||||
+#if BUILDFLAG(IS_WIN)
|
||||
+ qCDebug(lcWebEngineCompositor, "%ls", qUtf16Printable(windowsInfo(gpuInfo)));
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
+private:
|
||||
+ ContentGpuClientQt *m_client;
|
||||
+ std::optional<gpu::GPUInfo> m_gpuInfo;
|
||||
+};
|
||||
+
|
||||
+ContentGpuClientQt::ContentGpuClientQt() = default;
|
||||
+ContentGpuClientQt::~ContentGpuClientQt() = default;
|
||||
+
|
||||
+void ContentGpuClientQt::GpuServiceInitialized()
|
||||
+{
|
||||
+ // This is expected to be called on the GPU thread.
|
||||
+ Q_ASSERT(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
||||
+
|
||||
+ m_gpuObserver.reset(new GpuObserver(this));
|
||||
+ content::GpuDataManager::GetInstance()->AddObserver(m_gpuObserver.get());
|
||||
+}
|
||||
+
|
||||
+void ContentGpuClientQt::ExposeInterfacesToBrowser(
|
||||
+ const gpu::GpuPreferences &gpu_preferences,
|
||||
+ const gpu::GpuDriverBugWorkarounds &gpu_workarounds, mojo::BinderMap *binders)
|
||||
+{
|
||||
+ Q_UNUSED(gpu_workarounds);
|
||||
+ Q_UNUSED(binders);
|
||||
+ m_gpuPreferences = gpu_preferences;
|
||||
+}
|
||||
+
|
||||
+} // namespace QtWebEngineCore
|
||||
diff --git a/src/core/gpu/content_gpu_client_qt.h b/src/core/gpu/content_gpu_client_qt.h
|
||||
new file mode 100644
|
||||
index 0000000..51b3a0d
|
||||
--- /dev/null
|
||||
+++ b/src/core/gpu/content_gpu_client_qt.h
|
||||
@@ -0,0 +1,46 @@
|
||||
+// Copyright (C) 2025 The Qt Company Ltd.
|
||||
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
+// Qt-Security score:significant reason:default
|
||||
+
|
||||
+#ifndef CONTENT_GPU_CLIENT_QT_H
|
||||
+#define CONTENT_GPU_CLIENT_QT_H
|
||||
+
|
||||
+#include "content/public/gpu/content_gpu_client.h"
|
||||
+#include "gpu/config/gpu_preferences.h"
|
||||
+
|
||||
+#include <QtCore/qscopedpointer.h>
|
||||
+
|
||||
+namespace gpu {
|
||||
+class GpuDriverBugWorkarounds;
|
||||
+}
|
||||
+
|
||||
+namespace mojo {
|
||||
+class BinderMap;
|
||||
+}
|
||||
+
|
||||
+namespace QtWebEngineCore {
|
||||
+
|
||||
+class GpuObserver;
|
||||
+
|
||||
+class ContentGpuClientQt : public content::ContentGpuClient
|
||||
+{
|
||||
+public:
|
||||
+ ContentGpuClientQt();
|
||||
+ ~ContentGpuClientQt();
|
||||
+
|
||||
+ gpu::GpuPreferences gpuPreferences() const { return m_gpuPreferences; }
|
||||
+
|
||||
+ // Overridden from content::ContentGpuClient:
|
||||
+ void GpuServiceInitialized() override;
|
||||
+ void ExposeInterfacesToBrowser(const gpu::GpuPreferences &gpu_preferences,
|
||||
+ const gpu::GpuDriverBugWorkarounds &gpu_workarounds,
|
||||
+ mojo::BinderMap *binders) override;
|
||||
+
|
||||
+private:
|
||||
+ QScopedPointer<GpuObserver> m_gpuObserver;
|
||||
+ gpu::GpuPreferences m_gpuPreferences;
|
||||
+};
|
||||
+
|
||||
+} // namespace QtWebEngineCore
|
||||
+
|
||||
+#endif // CONTENT_GPU_CLIENT_QT_H
|
||||
13
qtwebengine-use-openh264.patch
Normal file
13
qtwebengine-use-openh264.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
|
||||
index cc992b4..7b6326f 100644
|
||||
--- a/src/core/CMakeLists.txt
|
||||
+++ b/src/core/CMakeLists.txt
|
||||
@@ -449,6 +449,8 @@ foreach(arch ${archs})
|
||||
use_bluez=false
|
||||
is_cfi=false
|
||||
use_ozone=true
|
||||
+ media_use_openh264=true
|
||||
+ rtc_use_h264=true
|
||||
ozone_auto_platforms=false
|
||||
ozone_platform_headless=false
|
||||
ozone_platform_external=true
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
diff --git a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn
|
||||
index 738d3d4ed..8344a19b0 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/BUILD.gn
|
||||
@@ -6,6 +6,7 @@
|
||||
# in the file PATENTS. All contributing project authors may
|
||||
# be found in the AUTHORS file in the root of the source tree.
|
||||
|
||||
+import("//build/config/linux/pkg_config.gni")
|
||||
import("//third_party/libaom/options.gni")
|
||||
import("../../webrtc.gni")
|
||||
|
||||
@@ -453,6 +454,14 @@ rtc_library("video_coding_utility") {
|
||||
]
|
||||
}
|
||||
|
||||
+if (rtc_use_h264 && rtc_use_system_openh264) {
|
||||
+ pkg_config("openh264") {
|
||||
+ packages = [
|
||||
+ "openh264",
|
||||
+ ]
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
rtc_library("webrtc_h264") {
|
||||
visibility = [ "*" ]
|
||||
sources = [
|
||||
@@ -501,8 +510,14 @@ rtc_library("webrtc_h264") {
|
||||
if (rtc_use_h264) {
|
||||
deps += [
|
||||
"//third_party/ffmpeg",
|
||||
- "//third_party/openh264:encoder",
|
||||
]
|
||||
+
|
||||
+ if (rtc_use_system_openh264) {
|
||||
+ configs += [":openh264"]
|
||||
+ } else {
|
||||
+ deps += [ "//third_party/openh264:encoder" ]
|
||||
+ }
|
||||
+
|
||||
if (!build_with_mozilla) {
|
||||
deps += [ "../../media:rtc_media_base" ]
|
||||
}
|
||||
diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
|
||||
index 82870d2db..12231becc 100644
|
||||
--- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
|
||||
+++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
|
||||
@@ -192,6 +192,9 @@ declare_args() {
|
||||
# Enable to use H265
|
||||
rtc_use_h265 = proprietary_codecs
|
||||
|
||||
+ # Allow to use system OpenH264
|
||||
+ rtc_use_system_openh264 = false
|
||||
+
|
||||
# Enable this flag to make webrtc::Mutex be implemented by absl::Mutex.
|
||||
rtc_use_absl_mutex = false
|
||||
|
||||
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
|
||||
index e7432d0c7..394f05011 100644
|
||||
--- a/src/core/CMakeLists.txt
|
||||
+++ b/src/core/CMakeLists.txt
|
||||
@@ -436,6 +436,9 @@ foreach(arch ${archs})
|
||||
use_udev=true
|
||||
is_cfi=false
|
||||
use_ozone=true
|
||||
+ media_use_openh264=true
|
||||
+ rtc_use_h264=true
|
||||
+ rtc_use_system_openh264=true
|
||||
ozone_auto_platforms=false
|
||||
ozone_platform_headless=false
|
||||
ozone_platform_external=true
|
||||
44
series.ppc64
Normal file
44
series.ppc64
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# from chromium-130 branch at https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches.git
|
||||
# do following edits to the patches:
|
||||
# - third_party/0001-Add-PPC64-support-for-boringssl.patch
|
||||
# - remove third_party/boringssl/src/crypto/test/abi_test.h
|
||||
# - crashpad/0001-Implement-support-for-PPC64-on-Linux.patch
|
||||
# - remove all tests
|
||||
# - crashpad/minidump/test/*
|
||||
# - crashpad/snapshot/test/*
|
||||
# - crashpad/test/*
|
||||
#
|
||||
# or use prepare-ppc64.sh script to generate the patchset
|
||||
#
|
||||
|
||||
ppc64le/sandbox/0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
|
||||
ppc64le/sandbox/0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch
|
||||
ppc64le/sandbox/0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch
|
||||
ppc64le/sandbox/0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch
|
||||
ppc64le/sandbox/0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch
|
||||
ppc64le/sandbox/0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch
|
||||
ppc64le/sandbox/0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
|
||||
ppc64le/sandbox/0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch
|
||||
ppc64le/sandbox/0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch
|
||||
ppc64le/sandbox/0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch
|
||||
ppc64le/sandbox/0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch
|
||||
ppc64le/sandbox/0005-sandbox-linux-update-unit-test-for-ppc64.patch
|
||||
ppc64le/sandbox/0006-sandbox-linux-disable-timedwait-time64-ppc64.patch
|
||||
ppc64le/sandbox/0007-sandbox-linux-add-ppc64-stat.patch
|
||||
ppc64le/sandbox/Sandbox-linux-services-credentials.cc-PPC.patch
|
||||
ppc64le/sandbox/0008-sandbox-fix-ppc64le-glibc234.patch
|
||||
ppc64le/third_party/0001-third_party-angle-Include-missing-header-cstddef-in-.patch
|
||||
ppc64le/third_party/0001-Add-PPC64-support-for-boringssl.patch
|
||||
ppc64le/third_party/0001-third_party-lss-Don-t-look-for-mmap2-on-ppc64.patch
|
||||
ppc64le/third_party/0002-third_party-lss-kernel-structs.patch
|
||||
ppc64le/libaom/0001-Add-ppc64-target-to-libaom.patch
|
||||
ppc64le/libaom/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
|
||||
ppc64le/third_party/0002-third_party-libvpx-Remove-bad-ppc64-config.patch
|
||||
ppc64le/third_party/0002-Add-PPC64-generated-files-for-boringssl.patch
|
||||
ppc64le/third_party/0003-third_party-libvpx-Add-ppc64-generated-config.patch
|
||||
ppc64le/crashpad/0001-Implement-support-for-PPC64-on-Linux.patch
|
||||
ppc64le/fixes/fix-partition-alloc-compile.patch
|
||||
ppc64le/third_party/use-sysconf-page-size-on-ppc64.patch
|
||||
ppc64le/third_party/dawn-fix-ppc64le-detection.patch
|
||||
ppc64le/core/add-ppc64-pthread-stack-size.patch
|
||||
ppc64le/third_party/0001-third-party-hwy-wrong-include.patch
|
||||
2
sources
2
sources
|
|
@ -1,2 +1,2 @@
|
|||
SHA512 (qtwebengine-everywhere-src-6.8.1-clean.tar.xz) = 112537e9dc89d945543387ca8cd861c9957de9b6861b8c184232bae8deabb5fc1065d880ec06c5f4b9222a5063c14c0cb4441f40435bf16a7238dd064ffe4993
|
||||
SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be
|
||||
SHA512 (qtwebengine-everywhere-src-6.10.1-clean.tar.xz) = c297c030623663dce4943562ca60ac64067702dd96b487f5786fb765c477162ee7d040e6ecb4b820ff9ef162259e1f56bd1054e20e0982fef90fa32857a462c9
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue