public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/chromium] epel9: - Update to 152.0.7977.75
@ 2026-09-03 7:50 Than Ngo
0 siblings, 0 replies; only message in thread
From: Than Ngo @ 2026-09-03 7:50 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/chromium
Branch : epel9
Commit : bb6f999b37881eb82b7ab7a611a23d7ffad1902c
Author : Than Ngo <than@redhat.com>
Date : 2026-09-02T11:31:34-04:00
Stats : +508/-171 in 5 file(s)
URL : https://src.fedoraproject.org/rpms/chromium/c/bb6f999b37881eb82b7ab7a611a23d7ffad1902c?branch=epel9
Log:
- Update to 152.0.7977.75
* CVE-2026-84353: Use after free in Shared Tab Groups
* CVE-2026-84352: Use after free in WebGL
* CVE-2026-84354: Incorrect authorization in FileSystem
* CVE-2026-84359: Information leak in Skia
* CVE-2026-84357: Improper input validation in Omnibox
* CVE-2026-84324: Use after free in Proxy
* CVE-2026-84349: Use after free in Browser
* CVE-2026-84326: Uninitialized resource in V8
* CVE-2026-84333: Use after free in Dawn
* CVE-2026-84351: Buffer overflow in GPU
* CVE-2026-84325: Improper input validation in DataTransfer
* CVE-2026-84328: Missing authorization in FileSystem
* CVE-2026-84347: Use after free in WebRTC
* CVE-2026-84323: Missing authorization in FileSystem
* CVE-2026-84355: Incorrect authorization in Navigation
* CVE-2026-84358: Improper privilege management in Downloads
* CVE-2026-84332: Incorrect authorization in SiteSettings
* CVE-2026-84330: UI misrepresentation in FullScreen
* CVE-2026-84334: Incorrect authorization in Chromoting
* CVE-2026-84348: Information leak in MediaCapture
* CVE-2026-84335: Incorrect authorization in TabStrip
* CVE-2026-84327: Incorrect authorization in Autofill
* CVE-2026-84329: Confused deputy in CredentialProvider
* CVE-2026-84356: UI misrepresentation in FullScreen
* CVE-2026-84350: Use after free in TabStrip
* CVE-2026-84331: Incorrect authorization in Actor
---
diff --git a/chromium-152-build-error-libpng_for_testonly.patch b/chromium-152-build-error-libpng_for_testonly.patch
new file mode 100644
index 0000000..0f21fa6
--- /dev/null
+++ b/chromium-152-build-error-libpng_for_testonly.patch
@@ -0,0 +1,54 @@
+diff -up chromium-152.0.7977.75/chrome/test/BUILD.gn.me chromium-152.0.7977.75/chrome/test/BUILD.gn
+--- chromium-152.0.7977.75/chrome/test/BUILD.gn.me 2026-09-02 17:07:32.105877798 +0700
++++ chromium-152.0.7977.75/chrome/test/BUILD.gn 2026-09-02 17:06:28.862176940 +0700
+@@ -8451,7 +8458,7 @@ if (!is_android) {
+ "//testing/gtest",
+ "//third_party/hunspell",
+ "//third_party/icu",
+- "//third_party/libpng:libpng_for_testonly",
++ "//third_party/libpng",
+ "//ui/base:test_support",
+ "//ui/events:test_support",
+ "//ui/ozone",
+@@ -8840,7 +8847,7 @@ if (!is_android && !is_chromeos_device)
+ "//testing/gtest",
+ "//third_party/hunspell",
+ "//third_party/icu",
+- "//third_party/libpng:libpng_for_testonly",
++ "//third_party/libpng",
+ "//ui/base:base_interactive_ui_tests",
+ "//ui/base:ozone_buildflags",
+ "//ui/base:test_support",
+@@ -9776,7 +9783,7 @@ if (!is_android) {
+ "//testing/gtest",
+ "//third_party/hunspell",
+ "//third_party/icu",
+- "//third_party/libpng:libpng_for_testonly",
++ "//third_party/libpng",
+ "//ui/base:test_support",
+ "//ui/resources:ui_test_pak",
+ "//ui/views",
+diff -up chromium-152.0.7977.75/tools/imagediff/BUILD.gn.me chromium-152.0.7977.75/tools/imagediff/BUILD.gn
+--- chromium-152.0.7977.75/tools/imagediff/BUILD.gn.me 2026-09-02 17:07:50.950086627 +0700
++++ chromium-152.0.7977.75/tools/imagediff/BUILD.gn 2026-09-02 17:10:02.754225724 +0700
+@@ -48,7 +48,7 @@ if (current_toolchain == imagediff_toolc
+ deps = [
+ "//base",
+ "//build/win:default_exe_manifest",
+- "//third_party/libpng:libpng_for_testonly",
++ "//third_party/libpng",
+ "//third_party/zlib",
+ ]
+ }
+diff -up chromium-152.0.7977.75/ui/gfx/BUILD.gn.me chromium-152.0.7977.75/ui/gfx/BUILD.gn
+--- chromium-152.0.7977.75/ui/gfx/BUILD.gn.me 2026-09-02 17:10:35.639911698 +0700
++++ chromium-152.0.7977.75/ui/gfx/BUILD.gn 2026-09-02 17:10:45.586021920 +0700
+@@ -897,7 +897,7 @@ test("gfx_unittests") {
+ "//skia:skcms",
+ "//testing/gtest",
+ "//third_party/icu:icuuc",
+- "//third_party/libpng:libpng_for_testonly",
++ "//third_party/libpng",
+ "//third_party/zlib",
+ "//ui/base",
+ "//ui/gfx/animation",
diff --git a/chromium-152-build-error-rust-cbor.patch b/chromium-152-build-error-rust-cbor.patch
new file mode 100644
index 0000000..2632741
--- /dev/null
+++ b/chromium-152-build-error-rust-cbor.patch
@@ -0,0 +1,21 @@
+diff -up chromium-152.0.7977.75/components/cbor/BUILD.gn.me chromium-152.0.7977.75/components/cbor/BUILD.gn
+--- chromium-152.0.7977.75/components/cbor/BUILD.gn.me 2026-09-02 12:24:26.349525915 +0700
++++ chromium-152.0.7977.75/components/cbor/BUILD.gn 2026-09-02 12:34:26.504803212 +0700
+@@ -37,7 +37,7 @@ component("cbor") {
+ "//base",
+ ]
+
+- if (!is_cronet_build) {
++ if (false) {
+ public_deps = [
+ "//build/rust/crubit",
+ "//components/cbor/rust:cbor_rust_bindings",
+@@ -63,7 +63,7 @@ source_set("unit_tests") {
+ "//testing/gtest",
+ "//third_party/fuzztest",
+ ]
+- if (!is_cronet_build) {
++ if (false) {
+ deps += [ "//components/cbor/rust:cbor_rust_unittests" ]
+ }
+
diff --git a/chromium.spec b/chromium.spec
index d6f66bc..bc6a92a 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -271,7 +271,7 @@
%endif
Name: chromium
-Version: 152.0.7977.64
+Version: 152.0.7977.75
Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use
Url: http://www.chromium.org/Home
@@ -292,6 +292,11 @@ Patch21: chromium-123-screen-ai-service.patch
# Fix link error when building with system libcxx
Patch22: chromium-131-fix-qt-ui.pach
+# Workaround for build error: ERROR Unresolved dependencies.
+#//chrome/test:captured_sites_interactive_tests(//build/toolchain/linux/unbundle:default)
+# needs //third_party/libpng:libpng_for_testonly(//build/toolchain/linux/unbundle:default)
+Patch23: chromium-152-build-error-libpng_for_testonly.patch
+
# patch from Melvin - melvin@pixilab.se
Patch24: glibc-2.42-baud-rate-fix.patch
@@ -315,7 +320,8 @@ Patch93: chromium-141-csss_style_sheet.patch
# revert the patch to fix the build error: "ld.lld: error: undefined symbol: __sanitizer_set_death_callback"
Patch94: chromium-148-v8-sanitize-build-error.patch
-
+# Fix rust build error
+Patch95: chromium-152-build-error-rust-cbor.patch
# FTBFS - error: cannot find attribute `sanitize` in this scope
# --> ../../third_party/crabbyavif/src/src/capi/io.rs:210:41
# |
@@ -1068,7 +1074,7 @@ Qt6 UI for chromium.
%if ! %{use_custom_libcxx}
%patch -P22 -p1 -b .fix-qt-ui
%endif
-
+%patch -P23 -p1 -b .build-error-libpng_for_testonly
%if 0%{?fedora} || 0%{?rhel} && 0%{?rhel} > 10
%patch -P24 -p1 -b .glibc-2.42-baud-rate-fix
%endif
@@ -1091,6 +1097,7 @@ Qt6 UI for chromium.
%patch -P92 -p1 -b .nodejs-checkversion
%patch -P93 -p1 -b .ftbfs-csss_style_sheet
%patch -P94 -p1 -R -b .v8-sanitize-build-error
+%patch -P95 -p1 -b .build-error-rust-cbor
%patch -P96 -p1 -b .crabbyavif-ftbfs-old-rust
%if ! %{bundleffmpegfree}
@@ -1911,6 +1918,35 @@ fi
%endif
%changelog
+* Wed Sep 02 2026 Than Ngo <than@redhat.com> - 152.0.7977.75-1
+- Update to 152.0.7977.75
+ * CVE-2026-84353: Use after free in Shared Tab Groups
+ * CVE-2026-84352: Use after free in WebGL
+ * CVE-2026-84354: Incorrect authorization in FileSystem
+ * CVE-2026-84359: Information leak in Skia
+ * CVE-2026-84357: Improper input validation in Omnibox
+ * CVE-2026-84324: Use after free in Proxy
+ * CVE-2026-84349: Use after free in Browser
+ * CVE-2026-84326: Uninitialized resource in V8
+ * CVE-2026-84333: Use after free in Dawn
+ * CVE-2026-84351: Buffer overflow in GPU
+ * CVE-2026-84325: Improper input validation in DataTransfer
+ * CVE-2026-84328: Missing authorization in FileSystem
+ * CVE-2026-84347: Use after free in WebRTC
+ * CVE-2026-84323: Missing authorization in FileSystem
+ * CVE-2026-84355: Incorrect authorization in Navigation
+ * CVE-2026-84358: Improper privilege management in Downloads
+ * CVE-2026-84332: Incorrect authorization in SiteSettings
+ * CVE-2026-84330: UI misrepresentation in FullScreen
+ * CVE-2026-84334: Incorrect authorization in Chromoting
+ * CVE-2026-84348: Information leak in MediaCapture
+ * CVE-2026-84335: Incorrect authorization in TabStrip
+ * CVE-2026-84327: Incorrect authorization in Autofill
+ * CVE-2026-84329: Confused deputy in CredentialProvider
+ * CVE-2026-84356: UI misrepresentation in FullScreen
+ * CVE-2026-84350: Use after free in TabStrip
+ * CVE-2026-84331: Incorrect authorization in Actor
+
* Wed Sep 02 2026 Than Ngo <than@redhat.com> - 152.0.7977.64-1
- Update to 152.0.7977.64
* CVE-2026-79282: Use after free in ANGLE
diff --git a/skia-vsx-instructions.patch b/skia-vsx-instructions.patch
index 320abd1..1c19c16 100644
--- a/skia-vsx-instructions.patch
+++ b/skia-vsx-instructions.patch
@@ -1,21 +1,60 @@
-Index: chromium-151.0.7922.47/third_party/skia/BUILD.gn
+Index: chromium-152.0.7977.64/skia/BUILD.gn
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/BUILD.gn
-+++ chromium-151.0.7922.47/third_party/skia/BUILD.gn
-@@ -201,6 +201,12 @@ opts("lasx") {
+--- chromium-152.0.7977.64.orig/skia/BUILD.gn
++++ chromium-152.0.7977.64/skia/BUILD.gn
+@@ -966,6 +966,17 @@ if (current_cpu == "loong64") {
+ }
+ }
+
++if (current_cpu == "ppc64") {
++ skia_source_set("skia_opts_vsx") {
++ sources = skia_opts.vsx_sources
++ cflags = [
++ "-mcpu=power8",
++ "-mtune=power8",
++ ]
++ visibility = [ ":skia_opts" ]
++ }
++}
++
+ skia_source_set("skia_opts") {
+ cflags = []
+ defines = []
+@@ -992,7 +1003,7 @@ skia_source_set("skia_opts") {
+ } else if (current_cpu == "mips64el") {
+ cflags += [ "-fomit-frame-pointer" ]
+ } else if (current_cpu == "ppc64") {
+- # Conditional and empty body needed to avoid assert() below.
++ deps += [ ":skia_opts_vsx" ]
+ } else if (current_cpu == "s390x") {
+ # Conditional and empty body needed to avoid assert() below.
+ } else if (current_cpu == "riscv64") {
+Index: chromium-152.0.7977.64/third_party/skia/BUILD.gn
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/BUILD.gn
++++ chromium-152.0.7977.64/third_party/skia/BUILD.gn
+@@ -166,6 +166,7 @@ template("opts") {
+ }
+
+ is_x86 = current_cpu == "x64" || current_cpu == "x86"
++is_ppc64 = current_cpu == "ppc64"
+ is_loong64 = current_cpu == "loong64"
+
+ opts("ml3") {
+@@ -201,6 +202,12 @@ opts("lasx") {
cflags = [ "-mlasx" ]
}
+opts("vsx") {
-+ enabled = current_cpu == "ppc64"
++ enabled = is_ppc64
+ sources = skia_opts.vsx_sources
-+ cflags = [ "-mcpu=power9", "-mtune=power9" ]
++ cflags = [ "-mcpu=power8", "-mtune=power8" ]
+}
+
# Any feature of Skia that requires third-party code should be optional and use this template.
template("optional") {
if (invoker.enabled) {
-@@ -1945,6 +1951,7 @@ skia_component("skia") {
+@@ -2019,6 +2026,7 @@ skia_component("skia") {
":typeface_fontations",
":typeface_freetype",
":vello",
@@ -23,23 +62,45 @@ Index: chromium-151.0.7922.47/third_party/skia/BUILD.gn
":webp_decode",
":wuffs",
":xml",
-Index: chromium-151.0.7922.47/third_party/skia/gn/skia/BUILD.gn
+Index: chromium-152.0.7977.64/third_party/skia/gn/opts.gni
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/gn/skia/BUILD.gn
-+++ chromium-151.0.7922.47/third_party/skia/gn/skia/BUILD.gn
+--- chromium-152.0.7977.64.orig/third_party/skia/gn/opts.gni
++++ chromium-152.0.7977.64/third_party/skia/gn/opts.gni
+@@ -8,4 +8,5 @@ _src = get_path_info("../src", "abspath"
+
+ ml3 = [ "$_src/opts/SkOpts_ml3.cpp" ]
+ ml4 = [ "$_src/opts/SkOpts_ml4.cpp" ]
++vsx = [ "$_src/opts/SkOpts_vsx.cpp" ]
+ lasx = [ "$_src/opts/SkOpts_lasx.cpp" ]
+Index: chromium-152.0.7977.64/third_party/skia/gn/shared_sources.gni
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/gn/shared_sources.gni
++++ chromium-152.0.7977.64/third_party/skia/gn/shared_sources.gni
+@@ -24,6 +24,7 @@ import("xps.gni")
+ skia_opts = {
+ ml3_sources = ml3
+ ml4_sources = ml4
++ vsx_sources = vsx
+ lasx_sources = lasx
+
+ # TODO(kjlubick) clean up hsw and skx after migrating clients
+Index: chromium-152.0.7977.64/third_party/skia/gn/skia/BUILD.gn
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/gn/skia/BUILD.gn
++++ chromium-152.0.7977.64/third_party/skia/gn/skia/BUILD.gn
@@ -146,6 +146,8 @@ config("default") {
"-mfpmath=sse",
]
ldflags += [ "-m32" ]
+ } else if (current_cpu == "ppc64") {
-+ cflags += [ "-mcpu=power9", "-mtune=power9" ]
++ cflags += [ "-mcpu=power8", "-mtune=power8" ]
} else if (current_cpu == "loong64") {
cflags += [
"-mlsx",
-Index: chromium-151.0.7922.47/third_party/skia/include/core/SkTypes.h
+Index: chromium-152.0.7977.64/third_party/skia/include/core/SkTypes.h
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/include/core/SkTypes.h
-+++ chromium-151.0.7922.47/third_party/skia/include/core/SkTypes.h
+--- chromium-152.0.7977.64.orig/third_party/skia/include/core/SkTypes.h
++++ chromium-152.0.7977.64/third_party/skia/include/core/SkTypes.h
@@ -190,4 +190,43 @@ static constexpr uint32_t SK_InvalidGenI
*/
static constexpr uint32_t SK_InvalidUniqueID = 0;
@@ -84,10 +145,146 @@ Index: chromium-151.0.7922.47/third_party/skia/include/core/SkTypes.h
+#endif
+
#endif
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkSpinlock.cpp
+Index: chromium-152.0.7977.64/third_party/skia/include/private/SkFeatures.h
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkSpinlock.cpp
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkSpinlock.cpp
+--- chromium-152.0.7977.64.orig/third_party/skia/include/private/SkFeatures.h
++++ chromium-152.0.7977.64/third_party/skia/include/private/SkFeatures.h
+@@ -67,6 +67,8 @@
+
+ #if defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
+ #define SK_CPU_X86 1
++#elif defined(__powerpc64__) || defined(__PPC64__)
++ #define SK_CPU_PPC64 1
+ #endif
+
+ #if defined(__loongarch__) || defined (__loongarch64)
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkBitmapProcState_opts.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkBitmapProcState_opts.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkBitmapProcState_opts.cpp
+@@ -27,7 +27,7 @@ namespace SkOpts {
+ static bool init() {
+ #if defined(SK_ENABLE_OPTIMIZE_SIZE)
+ // All Init_foo functions are omitted when optimizing for size
+- #elif defined(SK_CPU_X86)
++ #elif defined(SK_CPU_X86) || defined(SK_CPU_PPC64)
+ #if SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3
+ if (SkCpu::Supports(SkX64::SSSE3)) { Init_BitmapProcState_ssse3(); }
+ #endif
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
+@@ -8,7 +8,7 @@
+ #include "include/private/SkFeatures.h"
+ #include "src/core/SkOptsTargets.h"
+
+-#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
++#if (defined(SK_CPU_X86) || defined(SK_CPU_PPC64)) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
+
+ // The order of these includes is important:
+ // 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkBlitMask_opts.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkBlitMask_opts.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkBlitMask_opts.cpp
+@@ -25,7 +25,7 @@ namespace SkOpts {
+ static bool init() {
+ #if defined(SK_ENABLE_OPTIMIZE_SIZE)
+ // All Init_foo functions are omitted when optimizing for size
+- #elif defined(SK_CPU_X86)
++ #elif defined(SK_CPU_X86) || defined(SK_CPU_PPC64)
+ #if SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3
+ if (SkCpu::Supports(SkX64::SSSE3)) { Init_BlitMask_ssse3(); }
+ #endif
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
+@@ -9,7 +9,7 @@
+ #include "src/core/SkBlitMask.h"
+ #include "src/core/SkOptsTargets.h"
+
+-#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
++#if (defined(SK_CPU_X86) || defined(SK_CPU_PPC64)) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
+
+ // The order of these includes is important:
+ // 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkBlitter_ARGB32.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkBlitter_ARGB32.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkBlitter_ARGB32.cpp
+@@ -129,6 +129,16 @@ static inline SkPMColor blend_lcd16_opaq
+ #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2
+ #include <emmintrin.h>
+
++#if defined(SK_CPU_PPC64)
++ /* Load signed 64-bit integer from P into vector element 0. The address need not be 16-byte aligned. */
++ extern __inline __m128i
++ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
++ _mm_loadu_si64 (void const *__P)
++ {
++ return _mm_set_epi64((__m64)0LL, *(__m64 *)__P);
++ }
++#endif
++
+ // The following (left) shifts cause the top 5 bits of the mask components to
+ // line up with the corresponding components in an SkPMColor.
+ // Note that the mask's RGB16 order may differ from the SkPMColor order.
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkCpu.h
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkCpu.h
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkCpu.h
+@@ -60,7 +60,7 @@ inline bool SkCpu::Supports(uint32_t mas
+
+ // If we mask in compile-time known lower limits, the compiler can
+ // often compile away this entire function.
+-#if SK_CPU_X86
++#if SK_CPU_X86 || defined(SK_CPU_PPC64)
+ #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE1
+ features |= SkX64::SSE1;
+ #endif
+@@ -101,6 +101,14 @@ inline bool SkCpu::Supports(uint32_t mas
+ features &= (SkX64::SSE1 | SkX64::SSE2);
+ #endif
+
++ #if defined(SK_CPU_PPC64)
++ // PPC64 VSX shim layer supports SSE1-SSE3
++ features |= SkX64::SSE1;
++ features |= SkX64::SSE2;
++ features |= SkX64::SSE3;
++ features |= SkX64::SSSE3;
++ #endif
++
+ #elif SK_CPU_LOONGARCH
+ #if SK_CPU_LSX_LEVEL >= SK_CPU_LSX_LEVEL_LSX
+ features |= SkLoongArch::SX;
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkOpts.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkOpts.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkOpts.cpp
+@@ -46,6 +46,7 @@ namespace SkOpts {
+ // Each Init_foo() is defined in src/opts/SkOpts_foo.cpp.
+ void Init_ml3();
+ void Init_ml4();
++ void Init_vsx();
+ void Init_lasx();
+
+ static bool init() {
+@@ -67,6 +68,9 @@ namespace SkOpts {
+ #if SK_CPU_LSX_LEVEL < SK_CPU_LSX_LEVEL_LASX
+ if (SkCpu::Supports(SkLoongArch::ASX)) { Init_lasx(); }
+ #endif
++
++ #elif defined(SK_CPU_PPC64)
++ Init_vsx();
+ #endif
+ return true;
+ }
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkSpinlock.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkSpinlock.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkSpinlock.cpp
@@ -33,7 +33,8 @@
#endif
@@ -98,10 +295,87 @@ Index: chromium-151.0.7922.47/third_party/skia/src/core/SkSpinlock.cpp
#include <emmintrin.h>
static void do_pause() { _mm_pause(); }
#else
-Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkBitmapProcState_opts.h
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
+@@ -10,7 +10,7 @@
+ #include "src/core/SkOptsTargets.h"
+ #include "src/core/SkSwizzlePriv.h"
+
+-#if defined(SK_CPU_X86) && \
++#if (defined(SK_CPU_X86) || defined(SK_CPU_PPC64)) && \
+ !defined(SK_ENABLE_OPTIMIZE_SIZE) && \
+ SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3
+
+Index: chromium-152.0.7977.64/third_party/skia/src/core/SkVx.h
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/opts/SkBitmapProcState_opts.h
-+++ chromium-151.0.7922.47/third_party/skia/src/opts/SkBitmapProcState_opts.h
+--- chromium-152.0.7977.64.orig/third_party/skia/src/core/SkVx.h
++++ chromium-152.0.7977.64/third_party/skia/src/core/SkVx.h
+@@ -39,7 +39,12 @@
+ #endif
+
+ #if SKVX_USE_SIMD
+- #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX
++ #if __PPC64__
++ #define NO_WARN_X86_INTRINSICS
++ #include <mmintrin.h>
++ #include <emmintrin.h>
++ #include <tmmintrin.h>
++ #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX
+ #include <immintrin.h>
+ #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE41
+ #include <smmintrin.h>
+Index: chromium-152.0.7977.64/third_party/skia/src/opts/BUILD.bazel
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/opts/BUILD.bazel
++++ chromium-152.0.7977.64/third_party/skia/src/opts/BUILD.bazel
+@@ -85,6 +85,41 @@ skia_cc_library(
+ }),
+ )
+
++skia_cc_library(
++ # POWER ISA 3.0+
++ name = "vsx",
++ srcs = [
++ "SkOpts_vsx.cpp",
++ "//include/core:opts_srcs",
++ "//include/private:opts_srcs",
++ "//src/core:opts_srcs",
++ "//src/shaders:opts_srcs",
++ "//src/sksl/tracing:opts_srcs",
++ ],
++ # TODO(kjlubick) use -march=x86-64-v4
++ copts = DEFAULT_COPTS + ["-march=skylake-avx512"],
++ textual_hdrs = [
++ "SkRasterPipeline_opts.h",
++ ":textual_hdrs",
++ ],
++ deps = [
++ "//modules/skcms", # Needed to implement SkRasterPipeline_opts.h
++ "@skia_user_config//:user_config",
++ ],
++)
++
++skia_cc_library(
++ name = "opts",
++ visibility = ["//src/core:__pkg__"],
++ deps = selects.with_or({
++ ("@platforms//cpu:ppc64"): [
++ ":vsx",
++ ],
++ "//bazel/common_config_settings:cpu_wasm": [],
++ "//conditions:default": [],
++ }),
++)
++
+ skia_filegroup(
+ name = "textual_hdrs",
+ srcs = [
+Index: chromium-152.0.7977.64/third_party/skia/src/opts/SkBitmapProcState_opts.h
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/opts/SkBitmapProcState_opts.h
++++ chromium-152.0.7977.64/third_party/skia/src/opts/SkBitmapProcState_opts.h
@@ -21,7 +21,13 @@
// The rest are scattershot at the moment but I want to get them
// all migrated to be normal code inside SkBitmapProcState.cpp.
@@ -117,10 +391,10 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkBitmapProcState_opts.h
#include <immintrin.h>
#elif defined(SK_ARM_HAS_NEON)
#include <arm_neon.h>
-Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkBlitRow_opts.h
+Index: chromium-152.0.7977.64/third_party/skia/src/opts/SkBlitRow_opts.h
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/opts/SkBlitRow_opts.h
-+++ chromium-151.0.7922.47/third_party/skia/src/opts/SkBlitRow_opts.h
+--- chromium-152.0.7977.64.orig/third_party/skia/src/opts/SkBlitRow_opts.h
++++ chromium-152.0.7977.64/third_party/skia/src/opts/SkBlitRow_opts.h
@@ -69,7 +69,7 @@
#endif
@@ -130,10 +404,49 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkBlitRow_opts.h
static inline __m128i SkPMSrcOver_SSE2(const __m128i& src, const __m128i& dst) {
__m128i scale = _mm_sub_epi32(_mm_set1_epi32(256),
-Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
+Index: chromium-152.0.7977.64/third_party/skia/src/opts/SkOpts_vsx.cpp
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/opts/SkRasterPipeline_opts.h
-+++ chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
+--- /dev/null
++++ chromium-152.0.7977.64/third_party/skia/src/opts/SkOpts_vsx.cpp
+@@ -0,0 +1,34 @@
++/*
++ * Copyright 2018 Google LLC
++ *
++ * Use of this source code is governed by a BSD-style license that can be
++ * found in the LICENSE file.
++ */
++
++#include "src/core/SkOpts.h"
++
++#if !defined(SK_ENABLE_OPTIMIZE_SIZE)
++
++#define SK_OPTS_NS vsx
++#include "src/opts/SkRasterPipeline_opts.h"
++
++namespace SkOpts {
++ void Init_vsx() {
++ raster_pipeline_lowp_stride = SK_OPTS_NS::raster_pipeline_lowp_stride();
++ raster_pipeline_highp_stride = SK_OPTS_NS::raster_pipeline_highp_stride();
++
++ #define M(st) ops_highp[(int)SkRasterPipelineOp::st] = (StageFn)SK_OPTS_NS::st;
++ SK_RASTER_PIPELINE_OPS_ALL(M)
++ just_return_highp = (StageFn)SK_OPTS_NS::just_return;
++ start_pipeline_highp = SK_OPTS_NS::start_pipeline;
++ #undef M
++
++ #define M(st) ops_lowp[(int)SkRasterPipelineOp::st] = (StageFn)SK_OPTS_NS::lowp::st;
++ SK_RASTER_PIPELINE_OPS_LOWP(M)
++ just_return_lowp = (StageFn)SK_OPTS_NS::lowp::just_return;
++ start_pipeline_lowp = SK_OPTS_NS::lowp::start_pipeline;
++ #undef M
++ }
++} // namespace SkOpts
++
++#endif // SK_ENABLE_OPTIMIZE_SIZE
+Index: chromium-152.0.7977.64/third_party/skia/src/opts/SkRasterPipeline_opts.h
+===================================================================
+--- chromium-152.0.7977.64.orig/third_party/skia/src/opts/SkRasterPipeline_opts.h
++++ chromium-152.0.7977.64/third_party/skia/src/opts/SkRasterPipeline_opts.h
@@ -1,5 +1,6 @@
/*
* Copyright 2018 Google LLC
@@ -352,7 +665,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_NEON)
template <typename T> using V = Vec<4, T>;
using F = V<float >;
-@@ -1427,6 +1618,15 @@ SI F from_half(U16 h) {
+@@ -1658,6 +1849,15 @@ SI F from_half(U16 h) {
#elif defined(SKRP_CPU_AVX2)
return _mm256_cvtph_ps((__m128i)h);
@@ -368,7 +681,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
#else
// Remember, a half is 1-5-10 (sign-exponent-mantissa) with 15 exponent bias.
U32 sem = expand(h),
-@@ -1450,6 +1650,16 @@ SI U16 to_half(F f) {
+@@ -1681,6 +1881,16 @@ SI U16 to_half(F f) {
#elif defined(SKRP_CPU_AVX2)
return (U16)_mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION);
@@ -385,7 +698,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
#else
// Remember, a float is 1-8-23 (sign-exponent-mantissa) with 127 exponent bias.
U32 sem = sk_bit_cast<U32>(f),
-@@ -1530,7 +1740,7 @@ static constexpr size_t N = sizeof(F) /
+@@ -1761,7 +1971,7 @@ static constexpr size_t N = sizeof(F) /
// instead of {b,a} on the stack. Narrow stages work best for __vectorcall.
#define ABI __vectorcall
#define SKRP_NARROW_STAGES 1
@@ -394,7 +707,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
// These platforms are ideal for wider stages, and their default ABI is ideal.
#define ABI
#define SKRP_NARROW_STAGES 0
-@@ -5648,6 +5858,10 @@ SI F sqrt_(F x) {
+@@ -5989,6 +6199,10 @@ SI F sqrt_(F x) {
float32x4_t lo,hi;
split(x, &lo,&hi);
return join<F>(sqrt(lo), sqrt(hi));
@@ -405,7 +718,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_LASX)
__m256 lo,hi;
split(x, &lo,&hi);
-@@ -5679,6 +5893,10 @@ SI F floor_(F x) {
+@@ -6020,6 +6234,10 @@ SI F floor_(F x) {
__m128 lo,hi;
split(x, &lo,&hi);
return join<F>(_mm_floor_ps(lo), _mm_floor_ps(hi));
@@ -416,7 +729,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_LASX)
__m256 lo,hi;
split(x, &lo,&hi);
-@@ -5698,6 +5916,7 @@ SI F floor_(F x) {
+@@ -6039,6 +6257,7 @@ SI F floor_(F x) {
// (2 * a * b + (1 << 15)) >> 16
// The result is a number on [-1, 1).
// Note: on neon this is a saturating multiply while the others are not.
@@ -424,7 +737,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
SI I16 scaled_mult(I16 a, I16 b) {
#if defined(SKRP_CPU_ML4)
return (I16)_mm256_mulhrs_epi16((__m256i)a, (__m256i)b);
-@@ -5709,6 +5928,22 @@ SI I16 scaled_mult(I16 a, I16 b) {
+@@ -6050,6 +6269,22 @@ SI I16 scaled_mult(I16 a, I16 b) {
return vqrdmulhq_s16(a, b);
#elif defined(SKRP_CPU_NEON)
return vqrdmulhq_s16(a, b);
@@ -447,7 +760,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(SKRP_CPU_LASX)
I16 res = __lasx_xvmuh_h(a, b);
return __lasx_xvslli_h(res, 1);
-@@ -5736,7 +5971,26 @@ SI U16 constrained_add(I16 a, U16 b) {
+@@ -6077,7 +6312,26 @@ SI U16 constrained_add(I16 a, U16 b) {
SkASSERT(-ib <= ia && ia <= 65535 - ib);
}
#endif
@@ -474,7 +787,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
}
SI F fract(F x) { return x - floor_(x); }
-@@ -6797,8 +7051,14 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
+@@ -7139,8 +7393,14 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
// 2^-8 * v = 2^-9 * (tx*(R - L) + (R + L))
// v = 1/2 * (tx*(R - L) + (R + L))
auto lerpX = [&](U16 left, U16 right) -> U16 {
@@ -489,7 +802,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
// The constrained_add is the most subtle part of lerp. The first term is on the interval
// [-1, 1), and the second term is on the interval is on the interval [0, 1) because
// both terms are too high by a factor of 2 which will be handled below. (Both R and L are
-@@ -6810,7 +7070,12 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
+@@ -7152,7 +7412,12 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
U16 v2 = constrained_add(scaled_mult(tx, width), middle) + 1;
// Divide by 2 to calculate v and at the same time bring the intermediate value onto the
// interval [0, 1/2] to set up for the lerpY.
@@ -502,7 +815,7 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
};
const uint32_t* ptr;
-@@ -6844,9 +7109,15 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
+@@ -7186,9 +7451,15 @@ LOWP_STAGE_GP(bilerp_clamp_8888, const S
I16 width = (I16)bottom - (I16)top;
U16 middle = bottom + top;
// Add + 0x80 for rounding.
@@ -519,119 +832,10 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkRasterPipeline_opts.h
};
r = lerpY(topR, bottomR);
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkVx.h
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkVx.h
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkVx.h
-@@ -39,7 +39,12 @@
- #endif
-
- #if SKVX_USE_SIMD
-- #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX
-+ #if __PPC64__
-+ #define NO_WARN_X86_INTRINSICS
-+ #include <mmintrin.h>
-+ #include <emmintrin.h>
-+ #include <tmmintrin.h>
-+ #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX
- #include <immintrin.h>
- #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE41
- #include <smmintrin.h>
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
-@@ -9,7 +9,7 @@
- #include "src/core/SkBlitMask.h"
- #include "src/core/SkOptsTargets.h"
-
--#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
-+#if (defined(SK_CPU_X86) || defined(SK_CPU_PPC64)) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
-
- // The order of these includes is important:
- // 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
-@@ -10,7 +10,7 @@
- #include "src/core/SkOptsTargets.h"
- #include "src/core/SkSwizzlePriv.h"
-
--#if defined(SK_CPU_X86) && \
-+#if (defined(SK_CPU_X86) || defined(SK_CPU_PPC64)) && \
- !defined(SK_ENABLE_OPTIMIZE_SIZE) && \
- SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3
-
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkBlitMask_opts.cpp
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkBlitMask_opts.cpp
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkBlitMask_opts.cpp
-@@ -25,7 +25,7 @@ namespace SkOpts {
- static bool init() {
- #if defined(SK_ENABLE_OPTIMIZE_SIZE)
- // All Init_foo functions are omitted when optimizing for size
-- #elif defined(SK_CPU_X86)
-+ #elif defined(SK_CPU_X86) || defined(SK_CPU_PPC64)
- #if SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3
- if (SkCpu::Supports(SkX64::SSSE3)) { Init_BlitMask_ssse3(); }
- #endif
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkBitmapProcState_opts.cpp
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkBitmapProcState_opts.cpp
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkBitmapProcState_opts.cpp
-@@ -27,7 +27,7 @@ namespace SkOpts {
- static bool init() {
- #if defined(SK_ENABLE_OPTIMIZE_SIZE)
- // All Init_foo functions are omitted when optimizing for size
-- #elif defined(SK_CPU_X86)
-+ #elif defined(SK_CPU_X86) || defined(SK_CPU_PPC64)
- #if SK_CPU_X64_LEVEL < SK_CPU_X64_LEVEL_SSSE3
- if (SkCpu::Supports(SkX64::SSSE3)) { Init_BitmapProcState_ssse3(); }
- #endif
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkCpu.h
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkCpu.h
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkCpu.h
-@@ -60,7 +60,7 @@ inline bool SkCpu::Supports(uint32_t mas
-
- // If we mask in compile-time known lower limits, the compiler can
- // often compile away this entire function.
--#if SK_CPU_X86
-+#if SK_CPU_X86 || defined(SK_CPU_PPC64)
- #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE1
- features |= SkX64::SSE1;
- #endif
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
-@@ -8,7 +8,7 @@
- #include "include/private/SkFeatures.h"
- #include "src/core/SkOptsTargets.h"
-
--#if defined(SK_CPU_X86) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
-+#if (defined(SK_CPU_X86) || defined(SK_CPU_PPC64)) && !defined(SK_ENABLE_OPTIMIZE_SIZE)
-
- // The order of these includes is important:
- // 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
-Index: chromium-151.0.7922.47/third_party/skia/include/private/SkFeatures.h
-===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/include/private/SkFeatures.h
-+++ chromium-151.0.7922.47/third_party/skia/include/private/SkFeatures.h
-@@ -67,6 +67,8 @@
-
- #if defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
- #define SK_CPU_X86 1
-+#elif defined(__powerpc64__) || defined(__PPC64__)
-+ #define SK_CPU_PPC64 1
- #endif
-
- #if defined(__loongarch__) || defined (__loongarch64)
-Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkSwizzler_opts.inc
+Index: chromium-152.0.7977.64/third_party/skia/src/opts/SkSwizzler_opts.inc
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/opts/SkSwizzler_opts.inc
-+++ chromium-151.0.7922.47/third_party/skia/src/opts/SkSwizzler_opts.inc
+--- chromium-152.0.7977.64.orig/third_party/skia/src/opts/SkSwizzler_opts.inc
++++ chromium-152.0.7977.64/third_party/skia/src/opts/SkSwizzler_opts.inc
@@ -14,7 +14,10 @@
#include <cmath>
#include <utility>
@@ -678,24 +882,46 @@ Index: chromium-151.0.7922.47/third_party/skia/src/opts/SkSwizzler_opts.inc
#elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE1 && (defined(__clang__) || !defined(_MSC_VER))
// -- SSE -- Harden against timing attacks -- MSVC is not supported.
using F4 = __m128;
-Index: chromium-151.0.7922.47/third_party/skia/src/core/SkBlitter_ARGB32.cpp
+Index: chromium-152.0.7977.64/third_party/skia/src/opts/SkOpts_SetTarget.h
===================================================================
---- chromium-151.0.7922.47.orig/third_party/skia/src/core/SkBlitter_ARGB32.cpp
-+++ chromium-151.0.7922.47/third_party/skia/src/core/SkBlitter_ARGB32.cpp
-@@ -129,6 +129,16 @@ static inline SkPMColor blend_lcd16_opaq
- #if SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_SSE2
- #include <emmintrin.h>
+--- chromium-152.0.7977.64.orig/third_party/skia/src/opts/SkOpts_SetTarget.h
++++ chromium-152.0.7977.64/third_party/skia/src/opts/SkOpts_SetTarget.h
+@@ -19,6 +19,9 @@
-+#if defined(SK_CPU_PPC64)
-+ /* Load signed 64-bit integer from P into vector element 0. The address need not be 16-byte aligned. */
-+ extern __inline __m128i
-+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+ _mm_loadu_si64 (void const *__P)
-+ {
-+ return _mm_set_epi64((__m64)0LL, *(__m64 *)__P);
-+ }
-+#endif
+ #if defined(SK_ARM_HAS_NEON)
+ #define SK_OPTS_NS neon
++ #elif defined(SK_CPU_PPC)
++ // Use SSE translation layer for VSX operations
++ #define SK_OPTS_NS ssse3
+ #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_ML4
+ #define SK_OPTS_NS ml4
+ #elif SK_CPU_X64_LEVEL >= SK_CPU_X64_LEVEL_AVX2
+@@ -69,9 +72,27 @@
+ #include <immintrin.h>
+ #endif
+
++ #if defined(SK_CPU_PPC)
+
- // The following (left) shifts cause the top 5 bits of the mask components to
- // line up with the corresponding components in an SkPMColor.
- // Note that the mask's RGB16 order may differ from the SkPMColor order.
++ // Use SSE translation layer for VSX operations
++ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSSE3
++ #define SK_OPTS_NS ssse3
++
++ #if defined(__clang__)
++ #pragma clang attribute push(__attribute__((target("sse2,ssse3"))), apply_to=function)
++ #elif defined(__GNUC__)
++ #pragma GCC push_options
++ #pragma GCC target("sse2,ssse3")
++ #endif
++
++ #if defined(__clang__) && defined(_MSC_VER)
++ #include <pmmintrin.h>
++ #include <tmmintrin.h>
++ #endif
++
+ // Why not put the target string in a #define, and remove the boilerplate? Because GCC doesn't
+ // allow the target() option to be expanded by the preprocessor - it must be a literal string.
+- #if SK_OPTS_TARGET == SK_OPTS_TARGET_SSSE3
++ #elif SK_OPTS_TARGET == SK_OPTS_TARGET_SSSE3
+
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSSE3
+ #define SK_OPTS_NS ssse3
diff --git a/sources b/sources
index a08d102..38dbf66 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
SHA512 (node-v22.22.0-stripped.tar.gz) = f32a8a73063b3c78cbacf941e11dd529ebcf2618b3ba661966312e49ee9870c43a3acf256e8d331a4b0b621b16a501810c02a3ad763c75884cc250addca8e106
-SHA512 (chromium-152.0.7977.64-clean.tar.xz) = 8c6911f8149d95c7aba9fb0c9f28a2ab921557bfa1e9a8ab2bc0cb03eb840558302985727e9702fc2ddbbc4a5d4560a175ce35357462cf9f2327be929857c1f7
+SHA512 (chromium-152.0.7977.75-clean.tar.xz) = 4278625e10710b8770d1b6a6abddc6fc3e333b693150b780a946e26a51ced63de53105457bc0a9714e8a1cce3b15c33f549ead87e7e700bf747c614aae07e6f5
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-03 7:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-03 7:50 [rpms/chromium] epel9: - Update to 152.0.7977.75 Than Ngo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox