Compare commits

..

10 commits

Author SHA1 Message Date
Troy Dawson
fd08b7f2aa Remove leftover tests 2025-06-18 22:36:17 -07:00
Troy Dawson
49f9d90fed Remove leftover tests 2025-06-18 16:22:43 -07:00
Troy Dawson
dc5563fadc Merge branch 'rawhide' into epel10 2025-06-18 12:11:41 -07:00
Troy Dawson
41b39ddd67 Merge branch f42 into epel10 2025-06-18 08:18:56 -07:00
Troy Dawson
80bcafdb84 enable ppc64le 2025-03-24 12:05:38 -07:00
Troy Dawson
0d42519a6b Merge branch f41 into epel10 2024-12-18 07:49:28 -08:00
Troy Dawson
0fdb33886e Cleanup tests
Signed-off-by: Troy Dawson <tdawson@redhat.com>
2024-11-11 18:45:15 -08:00
Troy Dawson
37b6f9161b Cleanup tests
Signed-off-by: Troy Dawson <tdawson@redhat.com>
2024-11-11 15:51:59 -08:00
Troy Dawson
2edf2df0e9 Fix build with FFmpeg 7 2024-11-11 13:07:34 -08:00
Troy Dawson
315fb3751f There is no libXScrnSaver planned for RHEL 10 or EPEL 10 2024-11-11 10:31:09 -08:00
14 changed files with 3778 additions and 1671 deletions

4
.gitignore vendored
View file

@ -17,7 +17,3 @@
/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

View file

@ -0,0 +1,90 @@
commit f457e3c32b8170a39ead84ceaf9f0fdbe0696649
Author: Michael Lippautz <mlippautz@chromium.org>
Date: Tue Oct 15 19:27:32 2024 +0000
Fix size assertions across Blink
The ASSERT_SIZE() macro is used to check that certain object sizes do
not grow unexpectedly. Fix a few occurrences that assumed that Member
is always the same size as debug builds may blow up the pointer size
to allow verifying some conditions.
Bug: 373485798
Change-Id: I243dd7d75810e2cfda0141817986a6c4a03c6392
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5934877
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Steinar H Gunderson <sesse@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1368939}
diff --git a/third_party/blink/renderer/core/css/css_selector.cc b/third_party/blink/renderer/core/css/css_selector.cc
index e9cd483e0ce13..3d99eab57489e 100644
--- a/third_party/blink/renderer/core/css/css_selector.cc
+++ b/third_party/blink/renderer/core/css/css_selector.cc
@@ -88,7 +88,11 @@ unsigned MaximumSpecificity(
struct SameSizeAsCSSSelector {
unsigned bitfields;
- void* pointers[1];
+ union {
+ AtomicString value_;
+ QualifiedName tag_q_name_or_attribute_;
+ Member<void*> rare_data_;
+ } pointers;
};
ASSERT_SIZE(CSSSelector, SameSizeAsCSSSelector);
diff --git a/third_party/blink/renderer/core/css/resolver/match_result.h b/third_party/blink/renderer/core/css/resolver/match_result.h
index c99bae9777094..210ef8610b808 100644
--- a/third_party/blink/renderer/core/css/resolver/match_result.h
+++ b/third_party/blink/renderer/core/css/resolver/match_result.h
@@ -34,6 +34,7 @@
#include "third_party/blink/renderer/core/dom/tree_scope.h"
#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
+#include "third_party/blink/renderer/platform/wtf/size_assertions.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"
namespace blink {
@@ -88,8 +89,13 @@ struct CORE_EXPORT MatchedProperties {
Member<CSSPropertyValueSet> properties;
Data data_;
};
-static_assert(sizeof(MatchedProperties) <= 12,
- "MatchedProperties should not grow without thinking");
+
+struct SameSizeAsMatchedProperties {
+ Member<void*> properties;
+ uint8_t data_[8];
+};
+
+ASSERT_SIZE(MatchedProperties, SameSizeAsMatchedProperties);
} // namespace blink
diff --git a/third_party/blink/renderer/core/dom/element_data.cc b/third_party/blink/renderer/core/dom/element_data.cc
index 0e616444cbf92..6f3592bfa907b 100644
--- a/third_party/blink/renderer/core/dom/element_data.cc
+++ b/third_party/blink/renderer/core/dom/element_data.cc
@@ -46,7 +46,8 @@ struct SameSizeAsElementData final
: public GarbageCollected<SameSizeAsElementData> {
unsigned bitfield;
Member<void*> willbe_member;
- void* pointers[2];
+ SpaceSplitString class_names_;
+ void* pointers[1];
};
ASSERT_SIZE(ElementData, SameSizeAsElementData);
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc
index 98a9f6988ae3d..68b3c922cb362 100644
--- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc
+++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc
@@ -75,7 +75,7 @@ struct SameSizeAsRunInfo {
void* pointers[2];
unsigned integer;
} glyph_data;
- void* pointer;
+ Member<void*> pointer;
Vector<int> vector;
int integers[6];
};

View file

@ -21,7 +21,7 @@
if [ -z "$1" ] ; then
echo "usage: ./clean_qtwebengine.sh VERSION"
echo "e.g.: ./clean_qtwebengine.sh 6.10.0"
echo "e.g.: ./clean_qtwebengine.sh 6.8.0"
exit 1
fi

View file

@ -76,8 +76,6 @@
# 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
@ -87,8 +85,8 @@
Summary: Qt6 - QtWebEngine components
Name: qt6-qtwebengine
Version: 6.10.1
Release: 5%{?dist}
Version: 6.9.1
Release: 1%{?dist}
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
@ -126,28 +124,21 @@ Patch3: qtwebengine-aarch64-new-stat.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
# FTBS warning: elaborated-type-specifier for a scoped enum must not
# use the 'class' keyword
Patch50: qtwebengine-fix-build.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:
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
# https://src.fedoraproject.org/rpms/chromium/c/c675db4ac0623d2d97344be0b3b2d9f1ac931446?branch=rawhide
Patch202: chromium-130-size-assertions.patch
# handled by qt6-srpm-macros, which defines %%qt6_qtwebengine_arches
# FIXME use/update qt6_qtwebengine_arches
@ -487,27 +478,20 @@ popd
%patch -P2 -p1 -b .link-pipewire
%patch -P3 -p1 -b .aarch64-new-stat
%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
%patch -P50 -p1 -b .fix-build.patch
## 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 -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
@ -627,6 +611,9 @@ export NINJA_PATH=%{__ninja}
%install
%cmake_install
rm -rf %{buildroot}/usr/tests/
rm -f %{buildroot}/usr/lib64/qt6/bin/testbrowser
# rpm macros
install -p -m644 -D %{SOURCE10} \
%{buildroot}%{_rpmmacrodir}/macros.qt6-qtwebengine
@ -659,7 +646,6 @@ mkdir -p %{buildroot}%{_qtwebengine_dictionaries_dir}
sed -i -e "s|%{version} \${_Qt6WebEngine|%{lesser_version} \${_Qt6WebEngine|" \
%{buildroot}%{_qt6_libdir}/cmake/Qt6WebEngine*/Qt6WebEngine*Config.cmake
%if 0%{?rhel} && 0%{?rhel} < 10
%filetriggerin -- %{_datadir}/myspell
%else
@ -777,6 +763,7 @@ done
%dir %{_qt6_libdir}/cmake/Qt6WebEngineCoreTools
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuick
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQmlPrivate
%dir %{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate
%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgets
%dir %{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate
@ -789,6 +776,7 @@ done
%{_qt6_libdir}/cmake/Qt6WebEngineCoreTools/*.cmake
%{_qt6_libdir}/cmake/Qt6WebEngineQuick/*.cmake
%{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/*.cmake
%{_qt6_libdir}/cmake/Qt6WebEngineQuickDelegatesQmlPrivate/*.cmake
%{_qt6_libdir}/cmake/Qt6WebEngineQuickPrivate/*.cmake
%{_qt6_libdir}/cmake/Qt6WebEngineWidgets/*.cmake
%{_qt6_libdir}/cmake/Qt6WebEngineWidgetsPrivate/*.cmake
@ -856,45 +844,6 @@ 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
@ -961,7 +910,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

View file

@ -1,57 +0,0 @@
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"

View file

@ -1,29 +0,0 @@
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_

View file

@ -1,258 +0,0 @@
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;

File diff suppressed because it is too large Load diff

View file

@ -1,12 +0,0 @@
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>

227
qtwebengine-fix-build.patch Normal file
View file

@ -0,0 +1,227 @@
diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h
index 035affc7c..d8e1a5346 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 7d73467a9..be4febd9a 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 c62a00ee0..af54520b7 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 63af22b65..916d45a36 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 64d531be0..cc370a4bf 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 f70619a75..5c4eee7f6 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 7c0dcdecb..97054d476 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 a65ea9a2a..ba967c018 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 6fa2e8864..6b942abdf 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 c8375dc69..8f290c302 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
@@ -27,6 +27,8 @@
#include "src/trace_processor/importers/common/trace_parser.h"
#include "src/trace_processor/importers/proto/packet_sequence_state_generation.h"
+#include <cstdint>
+
namespace perfetto {
namespace protos::pbzero {
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 ae6a412fd..5fe0370ec 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 0bbfeedb1..91f19f83e 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 ab52508c2..050229a2f 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 b4f797bca..95b144fd1 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 7239ed516..975b88c51 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 488729dd5..d497f123d 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 d33af4acb..ce864b6bd 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 {

View file

@ -1,45 +0,0 @@
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);
}

View file

@ -1,607 +0,0 @@
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

View file

@ -40,5 +40,4 @@ 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
ppc64le/workarounds/HACK-debian-clang-disable-skia-musttail.patch

View file

@ -1,2 +1,2 @@
SHA512 (qtwebengine-everywhere-src-6.9.1-clean.tar.xz) = f83a7c9c18971b543c4ebf6d5083687450a28a6f6f0148c7a10c4eb1ba0af47f3c7c29d78b98329b9912f54664f381250c3d8c60b8baf56a82eb0686c9d07661
SHA512 (pulseaudio-12.2-headers.tar.gz) = a5a9bcbb16030b3bc83cc0cc8f5e7f90e0723d3e83258a5c77eacb32eaa267118a73fa7814fbcc99a24e4907916a2b371ebb6dedc4f45541c3acf6c834fd35be
SHA512 (qtwebengine-everywhere-src-6.10.1-clean.tar.xz) = c297c030623663dce4943562ca60ac64067702dd96b487f5786fb765c477162ee7d040e6ecb4b820ff9ef162259e1f56bd1054e20e0982fef90fa32857a462c9