Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] chromium: update to 96.0.4664.45.
@ 2021-11-15 14:51 Duncaen
  2021-11-15 14:53 ` [PR PATCH] [Updated] " Duncaen
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Duncaen @ 2021-11-15 14:51 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 497 bytes --]

There is a new pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug


* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] i686-glibc
* [ ] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 51955 bytes --]

From a4af78d63bcdbf11f072885e9b82579228699ad6 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 srcpkgs/chromium/template                     | 138 +++-
 13 files changed, 318 insertions(+), 825 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..906125727ac5 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,29 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	if [ -z "$build_option_clang" ]; then
+		nocross="chromium can only be cross compiled with clang"
+	fi
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +94,58 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc++
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +215,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +242,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +282,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,29 +312,24 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
+do_build() {
+	_setup_toolchain
 	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
@ 2021-11-15 14:53 ` Duncaen
  2021-11-15 18:27 ` Duncaen
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Duncaen @ 2021-11-15 14:53 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] i686-glibc
* [ ] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 51955 bytes --]

From 57e7f4526b9b62dfee15acf9e7a55f99e37434f7 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 srcpkgs/chromium/template                     | 138 +++-
 13 files changed, 318 insertions(+), 825 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..906125727ac5 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,29 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	if [ -z "$build_option_clang" ]; then
+		nocross="chromium can only be cross compiled with clang"
+	fi
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +94,58 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc++
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +215,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +242,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +282,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,29 +312,24 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
+do_build() {
+	_setup_toolchain
 	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
  2021-11-15 14:53 ` [PR PATCH] [Updated] " Duncaen
@ 2021-11-15 18:27 ` Duncaen
  2021-11-15 18:42 ` Duncaen
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Duncaen @ 2021-11-15 18:27 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] i686-glibc
* [ ] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 53439 bytes --]

From 2b4d75586b39e246f0645c26da908f312a477113 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 .../patches/xxx-ppc64le-support.patch         |   4 +-
 srcpkgs/chromium/template                     | 140 +++-
 14 files changed, 321 insertions(+), 828 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
index d109aeb5b95c..c1421cfeebba 100644
--- a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
@@ -2126,7 +2126,7 @@ index d4ab936ee..1d22fc59c 100644
 --- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
 +++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
 @@ -315,6 +315,45 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
-   DISALLOW_COPY_AND_ASSIGN(MinidumpContextMIPS64Writer);
+   MinidumpContextPPC64 context_;
  };
  
 +class MinidumpContextPPC64Writer final : public MinidumpContextWriter {
@@ -2164,8 +2164,6 @@ index d4ab936ee..1d22fc59c 100644
 +
 + private:
 +  MinidumpContextPPC64 context_;
-+
-+  DISALLOW_COPY_AND_ASSIGN(MinidumpContextPPC64Writer);
 +};
 +
  }  // namespace crashpad
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..8dc222498905 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,29 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	if [ -z "$build_option_clang" ]; then
+		nocross="chromium can only be cross compiled with clang"
+	fi
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +94,58 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc++
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +215,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +242,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +282,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,35 +312,32 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
+do_build() {
+	_setup_toolchain
 	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler
 	vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver
 	vinstall out/Release/libEGL.so 755 usr/lib/${pkgname} libEGL.so
 	vinstall out/Release/libGLESv2.so 755 usr/lib/${pkgname} libGLESv2.so
+	vinstall out/Release/libvk_swiftshader.so 755 usr/lib/${pkgname} libvk_swiftshader.so
+	vinstall out/Release/vk_swiftshader_icd.json 755 usr/lib/${pkgname} vk_swiftshader_icd.json
 
 	vcopy "out/Release/*.bin" usr/lib/chromium
 	vcopy "out/Release/*.pak" usr/lib/chromium

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
  2021-11-15 14:53 ` [PR PATCH] [Updated] " Duncaen
  2021-11-15 18:27 ` Duncaen
@ 2021-11-15 18:42 ` Duncaen
  2021-11-15 22:50 ` Duncaen
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Duncaen @ 2021-11-15 18:42 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] i686-glibc
* [ ] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 54710 bytes --]

From 77f779860f74d7eb05979c904abec265c8cc2b7e Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../musl-patches/xxx-ppc64le-support.patch    |   6 +-
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 .../patches/xxx-ppc64le-support.patch         |   6 +-
 srcpkgs/chromium/template                     | 140 +++-
 15 files changed, 325 insertions(+), 832 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
index 681b1f011c31..a0f8d285fe81 100644
--- a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
@@ -61,9 +61,9 @@ index cdce9bf8..73d77dda 100644
  
  // The following platforms have an implementation of a hardware counter.
  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
--  defined(__powerpc__) || defined(__ppc__) || \
-+  ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
-   defined(_M_IX86) || defined(_M_X64)
+-    defined(__powerpc__) || defined(__ppc__) || defined(__riscv) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || defined(__riscv) || \
+     defined(_M_IX86) || defined(_M_X64)
  #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
  #else
 --- third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
index d109aeb5b95c..31760151a33e 100644
--- a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
@@ -2125,8 +2125,8 @@ diff --git a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h b/
 index d4ab936ee..1d22fc59c 100644
 --- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
 +++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
-@@ -315,6 +315,45 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
-   DISALLOW_COPY_AND_ASSIGN(MinidumpContextMIPS64Writer);
+@@ -315,6 +315,43 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
+   MinidumpContextPPC64 context_;
  };
  
 +class MinidumpContextPPC64Writer final : public MinidumpContextWriter {
@@ -2164,8 +2164,6 @@ index d4ab936ee..1d22fc59c 100644
 +
 + private:
 +  MinidumpContextPPC64 context_;
-+
-+  DISALLOW_COPY_AND_ASSIGN(MinidumpContextPPC64Writer);
 +};
 +
  }  // namespace crashpad
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..8dc222498905 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,29 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	if [ -z "$build_option_clang" ]; then
+		nocross="chromium can only be cross compiled with clang"
+	fi
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +94,58 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+="
+		 --gcc-toolchain=/usr
+		 --sysroot=${XBPS_CROSS_BASE}
+		 -nostdinc++
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}
+		 -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward
+		 -nostdinc
+		 -isystem ${XBPS_CROSS_BASE}/usr/include
+		 -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +215,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +242,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +282,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,35 +312,32 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
+do_build() {
+	_setup_toolchain
 	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler
 	vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver
 	vinstall out/Release/libEGL.so 755 usr/lib/${pkgname} libEGL.so
 	vinstall out/Release/libGLESv2.so 755 usr/lib/${pkgname} libGLESv2.so
+	vinstall out/Release/libvk_swiftshader.so 755 usr/lib/${pkgname} libvk_swiftshader.so
+	vinstall out/Release/vk_swiftshader_icd.json 755 usr/lib/${pkgname} vk_swiftshader_icd.json
 
 	vcopy "out/Release/*.bin" usr/lib/chromium
 	vcopy "out/Release/*.pak" usr/lib/chromium

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
                   ` (2 preceding siblings ...)
  2021-11-15 18:42 ` Duncaen
@ 2021-11-15 22:50 ` Duncaen
  2021-11-16 19:30 ` Duncaen
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Duncaen @ 2021-11-15 22:50 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [x] x86_64-glibc
* [ ] x86_64-musl
* [ ] i686-glibc
* [ ] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 54928 bytes --]

From a954e12c31b69c2f2342e0f34b01dcc5b6a8efe0 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../musl-patches/xxx-ppc64le-support.patch    |   6 +-
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 .../patches/xxx-ppc64le-support.patch         |   6 +-
 srcpkgs/chromium/template                     | 138 +++-
 15 files changed, 322 insertions(+), 833 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
index 681b1f011c31..a0f8d285fe81 100644
--- a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
@@ -61,9 +61,9 @@ index cdce9bf8..73d77dda 100644
  
  // The following platforms have an implementation of a hardware counter.
  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
--  defined(__powerpc__) || defined(__ppc__) || \
-+  ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
-   defined(_M_IX86) || defined(_M_X64)
+-    defined(__powerpc__) || defined(__ppc__) || defined(__riscv) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || defined(__riscv) || \
+     defined(_M_IX86) || defined(_M_X64)
  #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
  #else
 --- third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
index d109aeb5b95c..31760151a33e 100644
--- a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
@@ -2125,8 +2125,8 @@ diff --git a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h b/
 index d4ab936ee..1d22fc59c 100644
 --- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
 +++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
-@@ -315,6 +315,45 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
-   DISALLOW_COPY_AND_ASSIGN(MinidumpContextMIPS64Writer);
+@@ -315,6 +315,43 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
+   MinidumpContextPPC64 context_;
  };
  
 +class MinidumpContextPPC64Writer final : public MinidumpContextWriter {
@@ -2164,8 +2164,6 @@ index d4ab936ee..1d22fc59c 100644
 +
 + private:
 +  MinidumpContextPPC64 context_;
-+
-+  DISALLOW_COPY_AND_ASSIGN(MinidumpContextPPC64Writer);
 +};
 +
  }  // namespace crashpad
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..8107b1539f69 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel libepoxy-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel libepoxy-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,26 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +91,57 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+=" --gcc-toolchain=/usr"
+		CFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CFLAGS+=" -nostdinc"
+		CFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+=" --gcc-toolchain=/usr"
+		CXXFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CXXFLAGS+=" -nostdinc++"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward"
+		CXXFLAGS+=" -nostdinc"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CXXFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		CFLAGS=$CFLAGS_FOR_BUILD CXXFLAGS=$CXXFLAGS_FOR_BUILD LDFLAGS=$LDFLAGS_FOR_BUILD \
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +211,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +238,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +278,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,35 +308,32 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
-	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
+do_build() {
+	_setup_toolchain
+	ninja -C out/Release ${makejobs} chrome chromedriver chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler
 	vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver
 	vinstall out/Release/libEGL.so 755 usr/lib/${pkgname} libEGL.so
 	vinstall out/Release/libGLESv2.so 755 usr/lib/${pkgname} libGLESv2.so
+	vinstall out/Release/libvk_swiftshader.so 755 usr/lib/${pkgname} libvk_swiftshader.so
+	vinstall out/Release/vk_swiftshader_icd.json 755 usr/lib/${pkgname} vk_swiftshader_icd.json
 
 	vcopy "out/Release/*.bin" usr/lib/chromium
 	vcopy "out/Release/*.pak" usr/lib/chromium

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
                   ` (3 preceding siblings ...)
  2021-11-15 22:50 ` Duncaen
@ 2021-11-16 19:30 ` Duncaen
  2021-11-16 19:30 ` Duncaen
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Duncaen @ 2021-11-16 19:30 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [x] x86_64-glibc
* [x] x86_64-musl
* [ ] i686-glibc
* [x] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 54945 bytes --]

From 426edf76873d79d927e6ec019f52dc0547d28007 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../musl-patches/xxx-ppc64le-support.patch    |   6 +-
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 .../patches/xxx-ppc64le-support.patch         |   6 +-
 srcpkgs/chromium/template                     | 138 +++-
 15 files changed, 322 insertions(+), 833 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
index 681b1f011c31..a0f8d285fe81 100644
--- a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
@@ -61,9 +61,9 @@ index cdce9bf8..73d77dda 100644
  
  // The following platforms have an implementation of a hardware counter.
  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
--  defined(__powerpc__) || defined(__ppc__) || \
-+  ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
-   defined(_M_IX86) || defined(_M_X64)
+-    defined(__powerpc__) || defined(__ppc__) || defined(__riscv) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || defined(__riscv) || \
+     defined(_M_IX86) || defined(_M_X64)
  #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
  #else
 --- third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
index d109aeb5b95c..31760151a33e 100644
--- a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
@@ -2125,8 +2125,8 @@ diff --git a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h b/
 index d4ab936ee..1d22fc59c 100644
 --- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
 +++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
-@@ -315,6 +315,45 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
-   DISALLOW_COPY_AND_ASSIGN(MinidumpContextMIPS64Writer);
+@@ -315,6 +315,43 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
+   MinidumpContextPPC64 context_;
  };
  
 +class MinidumpContextPPC64Writer final : public MinidumpContextWriter {
@@ -2164,8 +2164,6 @@ index d4ab936ee..1d22fc59c 100644
 +
 + private:
 +  MinidumpContextPPC64 context_;
-+
-+  DISALLOW_COPY_AND_ASSIGN(MinidumpContextPPC64Writer);
 +};
 +
  }  // namespace crashpad
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..ff6eb803adeb 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel libepoxy-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,26 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel libXdamage-devel libepoxy-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +91,57 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+=" --gcc-toolchain=/usr"
+		CFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CFLAGS+=" -nostdinc"
+		CFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+=" --gcc-toolchain=/usr"
+		CXXFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CXXFLAGS+=" -nostdinc++"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward"
+		CXXFLAGS+=" -nostdinc"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CXXFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		CFLAGS=$CFLAGS_FOR_BUILD CXXFLAGS=$CXXFLAGS_FOR_BUILD LDFLAGS=$LDFLAGS_FOR_BUILD \
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +211,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +238,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +278,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,35 +308,32 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
-	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
+do_build() {
+	_setup_toolchain
+	ninja -C out/Release ${makejobs} chrome chromedriver chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler
 	vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver
 	vinstall out/Release/libEGL.so 755 usr/lib/${pkgname} libEGL.so
 	vinstall out/Release/libGLESv2.so 755 usr/lib/${pkgname} libGLESv2.so
+	vinstall out/Release/libvk_swiftshader.so 755 usr/lib/${pkgname} libvk_swiftshader.so
+	vinstall out/Release/vk_swiftshader_icd.json 755 usr/lib/${pkgname} vk_swiftshader_icd.json
 
 	vcopy "out/Release/*.bin" usr/lib/chromium
 	vcopy "out/Release/*.pak" usr/lib/chromium

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
                   ` (4 preceding siblings ...)
  2021-11-16 19:30 ` Duncaen
@ 2021-11-16 19:30 ` Duncaen
  2021-11-16 19:53 ` Duncaen
  2021-11-17  0:01 ` [PR PATCH] [Merged]: " q66
  7 siblings, 0 replies; 9+ messages in thread
From: Duncaen @ 2021-11-16 19:30 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [x] x86_64-glibc
* [x] x86_64-musl
* [ ] i686-glibc
* [x] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 54945 bytes --]

From db1ec4f5462264896c3f5893c7b9524760365e08 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../musl-patches/xxx-ppc64le-support.patch    |   6 +-
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 .../patches/xxx-ppc64le-support.patch         |   6 +-
 srcpkgs/chromium/template                     | 138 +++-
 15 files changed, 322 insertions(+), 833 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
index 681b1f011c31..a0f8d285fe81 100644
--- a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
@@ -61,9 +61,9 @@ index cdce9bf8..73d77dda 100644
  
  // The following platforms have an implementation of a hardware counter.
  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
--  defined(__powerpc__) || defined(__ppc__) || \
-+  ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
-   defined(_M_IX86) || defined(_M_X64)
+-    defined(__powerpc__) || defined(__ppc__) || defined(__riscv) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || defined(__riscv) || \
+     defined(_M_IX86) || defined(_M_X64)
  #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
  #else
 --- third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
index d109aeb5b95c..31760151a33e 100644
--- a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
@@ -2125,8 +2125,8 @@ diff --git a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h b/
 index d4ab936ee..1d22fc59c 100644
 --- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
 +++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
-@@ -315,6 +315,45 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
-   DISALLOW_COPY_AND_ASSIGN(MinidumpContextMIPS64Writer);
+@@ -315,6 +315,43 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
+   MinidumpContextPPC64 context_;
  };
  
 +class MinidumpContextPPC64Writer final : public MinidumpContextWriter {
@@ -2164,8 +2164,6 @@ index d4ab936ee..1d22fc59c 100644
 +
 + private:
 +  MinidumpContextPPC64 context_;
-+
-+  DISALLOW_COPY_AND_ASSIGN(MinidumpContextPPC64Writer);
 +};
 +
  }  // namespace crashpad
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..ff6eb803adeb 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel libepoxy-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,26 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel libXdamage-devel libepoxy-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +91,57 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+=" --gcc-toolchain=/usr"
+		CFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CFLAGS+=" -nostdinc"
+		CFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+=" --gcc-toolchain=/usr"
+		CXXFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CXXFLAGS+=" -nostdinc++"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward"
+		CXXFLAGS+=" -nostdinc"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CXXFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		CFLAGS=$CFLAGS_FOR_BUILD CXXFLAGS=$CXXFLAGS_FOR_BUILD LDFLAGS=$LDFLAGS_FOR_BUILD \
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +211,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +238,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +278,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,35 +308,32 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
-	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
+do_build() {
+	_setup_toolchain
+	ninja -C out/Release ${makejobs} chrome chromedriver chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler
 	vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver
 	vinstall out/Release/libEGL.so 755 usr/lib/${pkgname} libEGL.so
 	vinstall out/Release/libGLESv2.so 755 usr/lib/${pkgname} libGLESv2.so
+	vinstall out/Release/libvk_swiftshader.so 755 usr/lib/${pkgname} libvk_swiftshader.so
+	vinstall out/Release/vk_swiftshader_icd.json 755 usr/lib/${pkgname} vk_swiftshader_icd.json
 
 	vcopy "out/Release/*.bin" usr/lib/chromium
 	vcopy "out/Release/*.pak" usr/lib/chromium

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
                   ` (5 preceding siblings ...)
  2021-11-16 19:30 ` Duncaen
@ 2021-11-16 19:53 ` Duncaen
  2021-11-17  0:01 ` [PR PATCH] [Merged]: " q66
  7 siblings, 0 replies; 9+ messages in thread
From: Duncaen @ 2021-11-16 19:53 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-96
https://github.com/void-linux/void-packages/pull/34094

chromium: update to 96.0.4664.45.
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [x] x86_64-glibc
* [x] x86_64-musl
* [x] i686-glibc
* [x] aarch64-musl

A patch file from https://github.com/void-linux/void-packages/pull/34094.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-96-34094.patch --]
[-- Type: text/x-diff, Size: 54946 bytes --]

From 79cee2bd77cf23e5f14318236dcac314817dd057 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Sun, 26 Sep 2021 15:47:29 +0200
Subject: [PATCH] chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
---
 .../musl-patches/xxx-ppc64le-support.patch    |   6 +-
 .../patches/chromium-95-harfbuzz-3.patch      |  31 -
 .../patches/chromium-95-quiche-include.patch  |  25 -
 .../chromium-96-CommandLine-include.patch     |  24 +
 .../chromium-96-CouponDB-include.patch        |  25 +
 ...m-96-DrmRenderNodePathFinder-include.patch |  24 +
 ...ium-96-RestrictedCookieManager-tuple.patch |  31 +
 srcpkgs/chromium/patches/cross-build.patch    |  65 ++
 .../patches/ozone-x11-fix-VA-API.patch        | 671 ------------------
 srcpkgs/chromium/patches/python3.10.patch     |  57 --
 srcpkgs/chromium/patches/sndio.patch          |   9 -
 ...-visibility-of-build-config-freetype.patch |  31 +
 .../patches/unbundled-cross-toolchain.patch   |  12 +
 .../patches/xxx-ppc64le-support.patch         |   6 +-
 srcpkgs/chromium/template                     | 138 +++-
 15 files changed, 322 insertions(+), 833 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-95-quiche-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
 create mode 100644 srcpkgs/chromium/patches/cross-build.patch
 delete mode 100644 srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
 delete mode 100644 srcpkgs/chromium/patches/python3.10.patch
 create mode 100644 srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
 create mode 100644 srcpkgs/chromium/patches/unbundled-cross-toolchain.patch

diff --git a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
index 681b1f011c31..a0f8d285fe81 100644
--- a/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/files/musl-patches/xxx-ppc64le-support.patch
@@ -61,9 +61,9 @@ index cdce9bf8..73d77dda 100644
  
  // The following platforms have an implementation of a hardware counter.
  #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \
--  defined(__powerpc__) || defined(__ppc__) || \
-+  ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || \
-   defined(_M_IX86) || defined(_M_X64)
+-    defined(__powerpc__) || defined(__ppc__) || defined(__riscv) ||     \
++    ((defined(__powerpc__) || defined(__ppc__)) && defined(__GLIBC__)) || defined(__riscv) || \
+     defined(_M_IX86) || defined(_M_X64)
  #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
  #else
 --- third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h
diff --git a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch b/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
deleted file mode 100644
index 33fe9556aaf3..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-harfbuzz-3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9e00e702633c47c590a869bc66b5c2ceec09da50 Mon Sep 17 00:00:00 2001
-From: Dominik Röttsches <drott@chromium.org>
-Date: Tue, 28 Sep 2021 15:31:50 +0000
-Subject: [PATCH] Roll src/third_party/harfbuzz-ng/src/ 6602cbb70..a52c6df38 (80 commits)
-
-Fixed: 1252284
-Change-Id: Ie2ff99da5e41ca97b8881e1bd3e158881f4d5a8e
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3190252
-Commit-Queue: Dominik Röttsches <drott@chromium.org>
-Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
-Auto-Submit: Dominik Röttsches <drott@chromium.org>
-Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
-Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#925776}
-
-(only components/paint_preview/common/subset_font.cc)
----
-
-diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
-index 45daea7b1..43a448e 100644
---- a/components/paint_preview/common/subset_font.cc
-+++ b/components/paint_preview/common/subset_font.cc
-@@ -79,7 +79,7 @@
-   // Retain all variation information for OpenType variation fonts. See:
-   // https://docs.microsoft.com/en-us/typography/opentype/spec/otvaroverview
-   hb_set_t* skip_subset =
--      hb_subset_input_no_subset_tables_set(input.get());  // Owned by |input|.
-+      hb_subset_input_set(input.get(), HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG);
-   hb_set_add(skip_subset, HB_TAG('a', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('c', 'v', 'a', 'r'));
-   hb_set_add(skip_subset, HB_TAG('f', 'v', 'a', 'r'));
diff --git a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch b/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
deleted file mode 100644
index 4bbd45cfc094..000000000000
--- a/srcpkgs/chromium/patches/chromium-95-quiche-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From a9d986203bcfbaab84f270c1dc6c3abb4c450ee1 Mon Sep 17 00:00:00 2001
-From: Stephan Hartmann <stha09@googlemail.com>
-Date: Fri, 17 Sep 2021 14:57:33 +0000
-Subject: [PATCH] IWYU: add stddef.h for size_t in WindowManager
-
----
- net/third_party/quiche/src/http2/adapter/window_manager.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/third_party/quiche/src/http2/adapter/window_manager.h b/net/third_party/quiche/src/http2/adapter/window_manager.h
-index f15982d..5a7701e 100644
---- a/net/third_party/quiche/src/http2/adapter/window_manager.h
-+++ b/net/third_party/quiche/src/http2/adapter/window_manager.h
-@@ -1,6 +1,8 @@
- #ifndef QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_
- 
-+#include <stddef.h>
-+
- #include <functional>
- 
- #include "common/platform/api/quiche_export.h"
--- 
-2.32.0
-
diff --git a/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
new file mode 100644
index 000000000000..2d7b7e902376
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CommandLine-include.patch
@@ -0,0 +1,24 @@
+From 39e6e77798d86033e5eb1fb2a2caf20a5bca2262 Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 08:27:04 +0000
+Subject: [PATCH] IWYU: add memory for std::unique_ptr in base::CommandLine
+
+---
+ base/command_line.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/base/command_line.h b/base/command_line.h
+index 706726a..ad02812 100644
+--- a/base/command_line.h
++++ b/base/command_line.h
+@@ -19,6 +19,7 @@
+ #include <stddef.h>
+ #include <functional>
+ #include <map>
++#include <memory>
+ #include <string>
+ #include <vector>
+ 
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
new file mode 100644
index 000000000000..41acfb31b96e
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-CouponDB-include.patch
@@ -0,0 +1,25 @@
+From 3a7b8dd0fcceffcfd0ea7e3186d2850deed7a00b Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Wed, 6 Oct 2021 15:36:47 +0000
+Subject: [PATCH] IWYU: add vector for std::vector in CouponDB
+
+---
+ chrome/browser/commerce/coupons/coupon_db.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/chrome/browser/commerce/coupons/coupon_db.h b/chrome/browser/commerce/coupons/coupon_db.h
+index f0758f4..93e2dd3 100644
+--- a/chrome/browser/commerce/coupons/coupon_db.h
++++ b/chrome/browser/commerce/coupons/coupon_db.h
+@@ -5,6 +5,8 @@
+ #ifndef CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ #define CHROME_BROWSER_COMMERCE_COUPONS_COUPON_DB_H_
+ 
++#include <vector>
++
+ #include "base/callback_helpers.h"
+ #include "base/memory/weak_ptr.h"
+ #include "url/gurl.h"
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
new file mode 100644
index 000000000000..fd44eb2c91a0
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-DrmRenderNodePathFinder-include.patch
@@ -0,0 +1,24 @@
+From 9e36b3c28935fb50d43ccef443be786a8e3f8a5f Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Sat, 9 Oct 2021 16:17:34 +0000
+Subject: [PATCH] IWYU: add string.h for memcmp in ui:: DrmRenderNodePathFinder
+
+---
+ ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+index 06776a7..d5b7b71 100644
+--- a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
++++ b/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc
+@@ -5,6 +5,7 @@
+ #include "ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h"
+ 
+ #include <fcntl.h>
++#include <string.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+-- 
+2.32.0
+
diff --git a/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
new file mode 100644
index 000000000000..cbdca44b738d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-96-RestrictedCookieManager-tuple.patch
@@ -0,0 +1,31 @@
+From 86b1886673c3e75d3a7b8c802b3e9fa6ea945a1e Mon Sep 17 00:00:00 2001
+From: Jose Dapena Paz <jdapena@igalia.com>
+Date: Fri, 08 Oct 2021 06:32:55 +0000
+Subject: [PATCH] libstdc++: no implicit conversion from tuple created with std::tie to an std::pair in restricted cookie manager.
+
+Fix compilation error:
+    ../../services/network/restricted_cookie_manager.cc:164:30: error: no match for ‘operator[]’ (operand types are ‘network::CookieAccessesByURLAndSite’ {aka ‘std::map<std::pair<GURL, net::SiteForCookies>, std::unique_ptr<std::set<net::CookieWithAccessResult, network::CookieWithAccessResultComparer> > >’} and ‘std::tuple<const GURL&, const net::SiteForCookies&>’)
+
+There is no conversion from tuple to pair.
+
+Bug: 957519
+Change-Id: Idf29c7b21895ae28f45b35d6193ab4ac555945c8
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211752
+Reviewed-by: Robbie McElrath <rmcelrath@chromium.org>
+Commit-Queue: José Dapena Paz <jdapena@igalia.com>
+Cr-Commit-Position: refs/heads/main@{#929597}
+---
+
+diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc
+index 425426f..c8c10c6 100644
+--- a/services/network/restricted_cookie_manager.cc
++++ b/services/network/restricted_cookie_manager.cc
+@@ -161,7 +161,7 @@
+     const GURL& url,
+     const net::SiteForCookies& site_for_cookies) {
+   std::unique_ptr<CookieAccesses>& entry =
+-      recent_cookie_accesses_[std::tie(url, site_for_cookies)];
++      recent_cookie_accesses_[std::make_pair(url, site_for_cookies)];
+   if (!entry) {
+     entry = std::make_unique<CookieAccesses>();
+   }
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
new file mode 100644
index 000000000000..63b89395cb80
--- /dev/null
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -0,0 +1,65 @@
+--- a/build/config/compiler/BUILD.gn.orig
++++ b/build/config/compiler/BUILD.gn
+@@ -58,6 +58,10 @@
+ }
+ 
+ declare_args() {
++  is_musl = false
++}
++
++declare_args() {
+   # Normally, Android builds are lightly optimized, even for debug builds, to
+   # keep binary size down. Setting this flag to true disables such optimization
+   android_full_debug = false
+@@ -880,8 +884,13 @@
+       }
+     } else if (current_cpu == "arm64") {
+       if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
+-        cflags += [ "--target=aarch64-linux-gnu" ]
+-        ldflags += [ "--target=aarch64-linux-gnu" ]
++        if (is_musl) {
++          cflags += [ "--target=aarch64-linux-musl" ]
++          ldflags += [ "--target=aarch64-linux-musl" ]
++        } else {
++          cflags += [ "--target=aarch64-linux-gnu" ]
++          ldflags += [ "--target=aarch64-linux-gnu" ]
++        }
+       }
+     } else if (current_cpu == "mipsel" && !is_nacl) {
+       ldflags += [ "-Wl,--hash-style=sysv" ]
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -39,3 +39,22 @@
+     current_os = host_os
+   }
+ }
++
++gcc_toolchain("v8_snapshot_cross") {
++  cc = getenv("BUILD_CC")
++  cxx = getenv("BUILD_CXX")
++  ar = getenv("BUILD_AR")
++  nm = getenv("BUILD_NM")
++  ld = cxx
++
++  extra_cflags = getenv("BUILD_CFLAGS")
++  extra_cppflags = getenv("BUILD_CPPFLAGS")
++  extra_cxxflags = getenv("BUILD_CXXFLAGS")
++  extra_ldflags = getenv("BUILD_LDFLAGS")
++
++  toolchain_args = {
++    current_cpu = host_cpu
++    current_os = host_os
++    v8_current_cpu = target_cpu
++  }
++}
+--- a/build/config/linux/pkg_config.gni.orig
++++ b/build/config/linux/pkg_config.gni
+@@ -91,7 +91,7 @@
+   assert(defined(invoker.packages),
+          "Variable |packages| must be defined to be a list in pkg_config.")
+   config(target_name) {
+-    if (host_toolchain == current_toolchain) {
++    if (current_cpu != target_cpu) {
+       args = host_pkg_config_args + invoker.packages
+     } else {
+       args = pkg_config_args + invoker.packages
diff --git a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch b/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
deleted file mode 100644
index 61d72bfb0137..000000000000
--- a/srcpkgs/chromium/patches/ozone-x11-fix-VA-API.patch
+++ /dev/null
@@ -1,671 +0,0 @@
-From a4de986102a45e29c3ef596f22704bdca244c26c Mon Sep 17 00:00:00 2001
-From: Maksim Sisov <msisov@igalia.com>
-Date: Fri, 17 Sep 2021 08:45:55 +0000
-Subject: [PATCH] ozone/x11: fix VA-API.
-
-This patch fixes VA-API usage with Ozone/X11 backend (which
-is our default backend now as X11 has been deprecated -
-crrev.com/c/3114071)).
-
-non-Ozone X11 is disabled now and Ozone is always used
-on Linux. However, VA-API implementation is not Ozone friendly
-yet and requires major refactoring. But given that VA-API
-implementation on Linux worked only with X11, it's fine for
-now to change USE_X11 and !IsUsingOzonePlatform to
-BUILDFLAG(OZONE_PLATFORM_X11) and fail VA-API initialization
-in VADisplayState::Initialize for Ozone/Linux other than
-non-X11 backends.
-
-Bug: 1121948
-Change-Id: If85d289235e6d358103d9fa2bbe0f741fb599a26
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3141878
-Commit-Queue: Maksim Sisov <msisov@igalia.com>
-Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
-Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
-Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
-Reviewed-by: Alexander Dunaev <adunaev@igalia.com>
-Cr-Commit-Position: refs/heads/main@{#922466}
----
- media/BUILD.gn                                |  3 -
- media/gpu/BUILD.gn                            |  5 +-
- media/gpu/args.gni                            | 13 +++-
- media/gpu/vaapi/BUILD.gn                      |  8 +-
- media/gpu/vaapi/va_stub_header.fragment       |  6 +-
- media/gpu/vaapi/vaapi_picture_factory.cc      | 72 ++++++++----------
- .../vaapi_picture_native_pixmap_angle.cc      |  2 -
- media/gpu/vaapi/vaapi_picture_tfp.cc          |  2 -
- .../vaapi/vaapi_video_decode_accelerator.cc   |  9 +--
- ...vaapi_video_decode_accelerator_unittest.cc | 11 +--
- media/gpu/vaapi/vaapi_wrapper.cc              | 76 +++++++++----------
- media/gpu/vaapi/vaapi_wrapper.h               |  8 +-
- ui/ozone/platform/x11/ozone_platform_x11.cc   |  3 +
- ui/ozone/public/ozone_platform.h              | 10 +++
- 14 files changed, 108 insertions(+), 120 deletions(-)
-
-diff --git a/media/BUILD.gn b/media/BUILD.gn
-index dbee1d4338..d5c158c08f 100644
---- a/media/BUILD.gn
-+++ b/media/BUILD.gn
-@@ -130,9 +130,6 @@ component("media") {
-     public_deps += [ "//media/base/mac" ]
-   }
- 
--  if (use_x11) {
--    deps += [ "//ui/base/x" ]
--  }
-   if (use_ozone) {
-     deps += [ "//ui/ozone" ]
-   }
-diff --git a/media/gpu/BUILD.gn b/media/gpu/BUILD.gn
-index c7499485ac..3fedc78948 100644
---- a/media/gpu/BUILD.gn
-+++ b/media/gpu/BUILD.gn
-@@ -20,6 +20,7 @@ buildflag_header("buildflags") {
-     "USE_VAAPI_IMAGE_CODECS=$use_vaapi_image_codecs",
-     "USE_V4L2_CODEC=$use_v4l2_codec",
-     "USE_LIBV4L2=$use_v4lplugin",
-+    "USE_VAAPI_X11=$use_vaapi_x11",
-   ]
- }
- 
-@@ -215,9 +216,7 @@ component("gpu") {
-       "windows/supported_profile_helpers.cc",
-       "windows/supported_profile_helpers.h",
-     ]
--    configs += [
--      "//third_party/khronos:khronos_headers",
--    ]
-+    configs += [ "//third_party/khronos:khronos_headers" ]
-     public_deps += [ "//media/base/win:media_foundation_util" ]
-     deps += [
-       "//gpu/ipc/common:common",
-diff --git a/media/gpu/args.gni b/media/gpu/args.gni
-index 4004937949..2f53843918 100644
---- a/media/gpu/args.gni
-+++ b/media/gpu/args.gni
-@@ -3,7 +3,15 @@
- # found in the LICENSE file.
- 
- import("//build/config/chromeos/ui_mode.gni")
--import("//build/config/ui.gni")
-+import("//build/config/ozone.gni")
-+
-+declare_args() {
-+  # Indicates if X11 VA-API-based hardware acceleration is to be used.
-+  # See also the comment near the |use_vaapi| arg.
-+  use_vaapi_x11 =
-+      is_linux && ozone_platform_x11 && !is_chromecast && !is_chromeos_lacros &&
-+      (target_cpu == "x86" || target_cpu == "x64")
-+}
- 
- declare_args() {
-   # Indicates if V4L plugin is used.
-@@ -21,8 +29,7 @@ declare_args() {
-   # is typically the case on x86-based ChromeOS devices.
-   # VA-API should also be compiled by default on x11-using linux devices
-   # using x86/x64.
--  use_vaapi =
--      is_linux && use_x11 && (target_cpu == "x86" || target_cpu == "x64")
-+  use_vaapi = use_vaapi_x11
- 
-   # Indicates if ChromeOS protected media support exists. This is used
-   # to enable the CDM daemon in Chrome OS as well as support for
-diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
-index b11d2c60fa..0c2520dd6b 100644
---- a/media/gpu/vaapi/BUILD.gn
-+++ b/media/gpu/vaapi/BUILD.gn
-@@ -17,7 +17,7 @@ assert(use_vaapi)
- generate_stubs("libva_stubs") {
-   extra_header = "va_stub_header.fragment"
-   sigs = [ "va.sigs" ]
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     sigs += [ "va_x11.sigs" ]
-   }
-   if (is_chromeos_ash) {
-@@ -131,14 +131,14 @@ source_set("vaapi") {
-     ]
-   }
- 
--  if (use_x11 || use_ozone || use_egl) {
-+  if (use_ozone || use_egl) {
-     sources += [
-       "vaapi_picture_native_pixmap.cc",
-       "vaapi_picture_native_pixmap.h",
-     ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-     sources += [
-       "vaapi_picture_native_pixmap_angle.cc",
-@@ -197,7 +197,7 @@ source_set("common") {
-     deps += [ "//ui/ozone" ]
-   }
- 
--  if (use_x11) {
-+  if (use_vaapi_x11) {
-     deps += [ "//ui/gfx/x" ]
-   }
- 
-diff --git a/media/gpu/vaapi/va_stub_header.fragment b/media/gpu/vaapi/va_stub_header.fragment
-index bed198484d..e8c46c5e81 100644
---- a/media/gpu/vaapi/va_stub_header.fragment
-+++ b/media/gpu/vaapi/va_stub_header.fragment
-@@ -1,12 +1,14 @@
- // The extra include header needed in the generated stub file for defining
- // various libva types.
- 
-+#include "media/gpu/buildflags.h"
-+
- extern "C" {
- 
- #include <va/va_drm.h>
- #include <va/va.h>
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include <va/va_x11.h>
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- }
-diff --git a/media/gpu/vaapi/vaapi_picture_factory.cc b/media/gpu/vaapi/vaapi_picture_factory.cc
-index 719035b87c..9c7d7387d2 100644
---- a/media/gpu/vaapi/vaapi_picture_factory.cc
-+++ b/media/gpu/vaapi/vaapi_picture_factory.cc
-@@ -10,13 +10,13 @@
- #include "ui/base/ui_base_features.h"
- #include "ui/gl/gl_bindings.h"
- 
--#if defined(USE_X11)
--#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
--#include "media/gpu/vaapi/vaapi_picture_tfp.h"
--#endif
- #if defined(USE_OZONE)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_ozone.h"
--#endif
-+#endif  // defined(USE_OZONE)
-+#if BUILDFLAG(USE_VAAPI_X11)
-+#include "media/gpu/vaapi/vaapi_picture_native_pixmap_angle.h"
-+#include "media/gpu/vaapi/vaapi_picture_tfp.h"
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- #if defined(USE_EGL)
- #include "media/gpu/vaapi/vaapi_picture_native_pixmap_egl.h"
- #endif
-@@ -46,15 +46,13 @@ VaapiPictureFactory::VaapiPictureFactory() {
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLGLES2,
-                      VaapiPictureFactory::kVaapiImplementationDrm));
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   vaapi_impl_pairs_.insert(
-       std::make_pair(gl::kGLImplementationEGLANGLE,
-                      VaapiPictureFactory::kVaapiImplementationAngle));
--  if (!features::IsUsingOzonePlatform()) {
--    vaapi_impl_pairs_.insert(
--        std::make_pair(gl::kGLImplementationDesktopGL,
--                       VaapiPictureFactory::kVaapiImplementationX11));
--  }
-+  vaapi_impl_pairs_.insert(
-+      std::make_pair(gl::kGLImplementationDesktopGL,
-+                     VaapiPictureFactory::kVaapiImplementationX11));
- #endif
- 
-   DeterminePictureCreationAndDownloadingMechanism();
-@@ -96,19 +94,19 @@ VaapiPictureFactory::GetVaapiImplementation(gl::GLImplementation gl_impl) {
- }
- 
- uint32_t VaapiPictureFactory::GetGLTextureTarget() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return GL_TEXTURE_EXTERNAL_OES;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return GL_TEXTURE_2D;
-+#else
-+  return GL_TEXTURE_EXTERNAL_OES;
-+#endif
- }
- 
- gfx::BufferFormat VaapiPictureFactory::GetBufferFormat() {
--#if defined(USE_OZONE)
--  if (features::IsUsingOzonePlatform())
--    return gfx::BufferFormat::YUV_420_BIPLANAR;
--#endif
-+#if BUILDFLAG(USE_VAAPI_X11)
-   return gfx::BufferFormat::RGBX_8888;
-+#else
-+  return gfx::BufferFormat::YUV_420_BIPLANAR;
-+#endif
- }
- 
- void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
-@@ -116,51 +114,43 @@ void VaapiPictureFactory::DeterminePictureCreationAndDownloadingMechanism() {
- #if defined(USE_OZONE)
-     // We can be called without GL initialized, which is valid if we use Ozone.
-     case kVaapiImplementationNone:
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--      }
--
--      // This is reached by unit tests which don't require create_picture_cb_
--      // to be initialized or called.
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-       break;
- #endif  // defined(USE_OZONE)
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationX11:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ =
-           base::BindRepeating(&CreateVaapiPictureNativeImpl<VaapiTFPPicture>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
-     case kVaapiImplementationAngle:
--      DCHECK(!features::IsUsingOzonePlatform());
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapAngle>);
-       // Neither VaapiTFPPicture or VaapiPictureNativePixmapAngle needs the VPP.
-       needs_vpp_for_downloading_ = false;
-       break;
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
-     case kVaapiImplementationDrm:
- #if defined(USE_OZONE)
--      if (features::IsUsingOzonePlatform()) {
--        create_picture_cb_ = base::BindRepeating(
--            &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
--        needs_vpp_for_downloading_ = true;
--        break;
--      }
--#endif  // defined(USE_OZONE)
--#if defined(USE_EGL)
-+      create_picture_cb_ = base::BindRepeating(
-+          &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapOzone>);
-+      needs_vpp_for_downloading_ = true;
-+      break;
-+#elif defined(USE_EGL)
-       create_picture_cb_ = base::BindRepeating(
-           &CreateVaapiPictureNativeImpl<VaapiPictureNativePixmapEgl>);
-       needs_vpp_for_downloading_ = true;
-       break;
--#endif  // defined(USE_EGL)
-+#else
-       // ozone or egl must be used to use the DRM implementation.
--      NOTREACHED();
-+      FALLTHROUGH;
-+#endif
-     default:
-       NOTREACHED();
-+      break;
-   }
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-index 9de0c93b44..e5b9908490 100644
---- a/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-+++ b/media/gpu/vaapi/vaapi_picture_native_pixmap_angle.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gfx/x/xproto.h"
-@@ -92,7 +91,6 @@ Status VaapiPictureNativePixmapAngle::Allocate(gfx::BufferFormat format) {
-   if (!make_context_current_cb_ || !make_context_current_cb_.Run())
-     return StatusCode::kVaapiBadContext;
- 
--  DCHECK(!features::IsUsingOzonePlatform());
-   auto image =
-       base::MakeRefCounted<gl::GLImageEGLPixmap>(visible_size_, format);
-   if (!image)
-diff --git a/media/gpu/vaapi/vaapi_picture_tfp.cc b/media/gpu/vaapi/vaapi_picture_tfp.cc
-index 3f7e221d8a..11914e3640 100644
---- a/media/gpu/vaapi/vaapi_picture_tfp.cc
-+++ b/media/gpu/vaapi/vaapi_picture_tfp.cc
-@@ -6,7 +6,6 @@
- 
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_wrapper.h"
--#include "ui/base/ui_base_features.h"
- #include "ui/gfx/x/connection.h"
- #include "ui/gfx/x/future.h"
- #include "ui/gl/gl_bindings.h"
-@@ -37,7 +36,6 @@ VaapiTFPPicture::VaapiTFPPicture(
-       connection_(x11::Connection::Get()),
-       x_pixmap_(x11::Pixmap::None) {
-   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
--  DCHECK(!features::IsUsingOzonePlatform());
-   DCHECK(texture_id);
-   DCHECK(client_texture_id);
- }
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-index 7514fe4fdd..e4cd7c8d89 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
-@@ -184,12 +184,6 @@ bool VaapiVideoDecodeAccelerator::Initialize(const Config& config,
-                                              Client* client) {
-   DCHECK(task_runner_->BelongsToCurrentThread());
- 
--#if defined(USE_X11)
--  // TODO(crbug/1116701): implement decode acceleration when running with Ozone.
--  if (features::IsUsingOzonePlatform())
--    return false;
--#endif
--
-   vaapi_picture_factory_ = std::make_unique<VaapiPictureFactory>();
- 
-   if (config.is_encrypted()) {
-@@ -1213,12 +1207,11 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() {
- 
- VaapiVideoDecodeAccelerator::BufferAllocationMode
- VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() {
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // The IMPORT mode is used for Android on Chrome OS, so this doesn't apply
-   // here.
-   DCHECK_NE(output_mode_, VideoDecodeAccelerator::Config::OutputMode::IMPORT);
-   // TODO(crbug/1116701): get video decode acceleration working with ozone.
--  DCHECK(!features::IsUsingOzonePlatform());
-   // For H.264 on older devices, another +1 is experimentally needed for
-   // high-to-high resolution changes.
-   // TODO(mcasas): Figure out why and why only H264, see crbug.com/912295 and
-diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-index 5b9a543386..826bb103b1 100644
---- a/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator_unittest.cc
-@@ -17,7 +17,6 @@
- #include "media/gpu/vaapi/vaapi_wrapper.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "ui/base/ui_base_features.h"
- 
- using base::test::RunClosure;
- using ::testing::_;
-@@ -416,12 +415,10 @@ TEST_P(VaapiVideoDecodeAcceleratorTest, SupportedPlatforms) {
-             mock_vaapi_picture_factory_->GetVaapiImplementation(
-                 gl::kGLImplementationEGLGLES2));
- 
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform()) {
--    EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
--              mock_vaapi_picture_factory_->GetVaapiImplementation(
--                  gl::kGLImplementationDesktopGL));
--  }
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  EXPECT_EQ(VaapiPictureFactory::kVaapiImplementationX11,
-+            mock_vaapi_picture_factory_->GetVaapiImplementation(
-+                gl::kGLImplementationDesktopGL));
- #endif
- }
- 
-diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
-index 754d258848..e528b0f84d 100644
---- a/media/gpu/vaapi/vaapi_wrapper.cc
-+++ b/media/gpu/vaapi/vaapi_wrapper.cc
-@@ -65,7 +65,7 @@
- #include "ui/gl/gl_bindings.h"
- #include "ui/gl/gl_implementation.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- typedef XID Drawable;
- 
- extern "C" {
-@@ -73,7 +73,7 @@ extern "C" {
- }
- 
- #include "ui/gfx/x/connection.h"  // nogncheck
--#endif
-+#endif                            // BUILDFLAG(USE_VAAPI_X11)
- 
- #if defined(USE_OZONE)
- #include "ui/ozone/public/ozone_platform.h"
-@@ -87,14 +87,14 @@ using media_gpu_vaapi::kModuleVa_prot;
- 
- using media_gpu_vaapi::kModuleVa;
- using media_gpu_vaapi::kModuleVa_drm;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::kModuleVa_x11;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::InitializeStubs;
- using media_gpu_vaapi::IsVaInitialized;
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_x11Initialized;
--#endif
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- using media_gpu_vaapi::IsVa_drmInitialized;
- using media_gpu_vaapi::StubPathMap;
- 
-@@ -559,10 +559,20 @@ VADisplayState::VADisplayState()
- bool VADisplayState::Initialize() {
-   base::AutoLock auto_lock(va_lock_);
- 
-+#if defined(USE_OZONE) && defined(OS_LINUX)
-+  // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+  // Linux. See comment in OzonePlatform::PlatformProperties::supports_vaapi
-+  // for more details. This will also require revisiting everything that's
-+  // guarded by USE_VAAPI_X11. For example, if USE_VAAPI_X11 is true, but the
-+  // user chooses the Wayland backend for Ozone at runtime, then many things (if
-+  // not all) that we do for X11 won't apply.
-+  if (!ui::OzonePlatform::GetInstance()->GetPlatformProperties().supports_vaapi)
-+    return false;
-+#endif
-+
-   bool libraries_initialized = IsVaInitialized() && IsVa_drmInitialized();
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    libraries_initialized = libraries_initialized && IsVa_x11Initialized();
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  libraries_initialized = libraries_initialized && IsVa_x11Initialized();
- #endif
-   if (!libraries_initialized)
-     return false;
-@@ -577,34 +587,25 @@ bool VADisplayState::Initialize() {
-   return success;
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- 
- absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
--  bool use_drm_as_fallback = false;
-   switch (gl::GetGLImplementation()) {
-     case gl::kGLImplementationEGLGLES2:
-       return vaGetDisplayDRM(drm_fd.get());
- 
-     case gl::kGLImplementationNone:
--      use_drm_as_fallback = true;
--      FALLTHROUGH;
- 
-     case gl::kGLImplementationDesktopGL: {
--      if (!features::IsUsingOzonePlatform()) {
--        VADisplay display =
--            vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--        if (vaDisplayIsValid(display))
--          return display;
--        return vaGetDisplayDRM(drm_fd.get());
--      }
--      break;
-+      VADisplay display =
-+          vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
-+      if (vaDisplayIsValid(display))
-+        return display;
-+      return vaGetDisplayDRM(drm_fd.get());
-     }
- 
--    case gl::kGLImplementationEGLANGLE: {
--      if (!features::IsUsingOzonePlatform())
--        return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
--      break;
--    }
-+    case gl::kGLImplementationEGLANGLE:
-+      return vaGetDisplay(x11::Connection::Get()->GetXlibDisplay());
- 
-     default:
-       LOG(WARNING) << "VAAPI video acceleration not available for "
-@@ -612,10 +613,6 @@ absl::optional<VADisplay> GetVADisplayStateX11(const base::ScopedFD& drm_fd) {
-                           gl::GetGLImplementationParts());
-       return absl::nullopt;
-   }
--
--  if (use_drm_as_fallback)
--    return vaGetDisplayDRM(drm_fd.get());
--  return absl::nullopt;
- }
- 
- #else
-@@ -633,11 +630,11 @@ absl::optional<VADisplay> GetVADisplayState(const base::ScopedFD& drm_fd) {
-   }
- }
- 
--#endif  // defined(USE_X11)
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- bool VADisplayState::InitializeVaDisplay_Locked() {
-   absl::optional<VADisplay> display =
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-       GetVADisplayStateX11(drm_fd_);
- #else
-       GetVADisplayState(drm_fd_);
-@@ -702,10 +699,9 @@ bool VADisplayState::InitializeOnce() {
-   if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-     return false;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   if (gl::GetGLImplementation() == gl::kGLImplementationEGLANGLE &&
-       implementation_type_ == VAImplementation::kIntelIHD) {
--    DCHECK(!features::IsUsingOzonePlatform());
-     constexpr char libva_driver_impl_env[] = "LIBVA_DRIVER_NAME";
-     // TODO(crbug/1116703) The libva intel-media driver has a known segfault in
-     // vaPutSurface, so until this is fixed, fall back to the i965 driver. There
-@@ -722,7 +718,7 @@ bool VADisplayState::InitializeOnce() {
-     if (!InitializeVaDisplay_Locked() || !InitializeVaDriver_Locked())
-       return false;
-   }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   return true;
- }
-@@ -2452,11 +2448,10 @@ bool VaapiWrapper::MapAndCopyAndExecute(
-   return Execute_Locked(va_surface_id, va_buffer_ids);
- }
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                                         x11::Pixmap x_pixmap,
-                                         gfx::Size dest_size) {
--  DCHECK(!features::IsUsingOzonePlatform());
-   base::AutoLock auto_lock(*va_lock_);
- 
-   VAStatus va_res = vaSyncSurface(va_display_, va_surface_id);
-@@ -2470,7 +2465,7 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-   VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAPutSurface, false);
-   return true;
- }
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
- std::unique_ptr<ScopedVAImage> VaapiWrapper::CreateVaImage(
-     VASurfaceID va_surface_id,
-@@ -2844,9 +2839,8 @@ void VaapiWrapper::PreSandboxInitialization() {
- 
-   paths[kModuleVa].push_back(std::string("libva.so.") + va_suffix);
-   paths[kModuleVa_drm].push_back(std::string("libva-drm.so.") + va_suffix);
--#if defined(USE_X11)
--  if (!features::IsUsingOzonePlatform())
--    paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
-+#if BUILDFLAG(USE_VAAPI_X11)
-+  paths[kModuleVa_x11].push_back(std::string("libva-x11.so.") + va_suffix);
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
-   paths[kModuleVa_prot].push_back(std::string("libva.so.") + va_suffix);
-diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
-index 0e3da53624..88ffcd0799 100644
---- a/media/gpu/vaapi/vaapi_wrapper.h
-+++ b/media/gpu/vaapi/vaapi_wrapper.h
-@@ -36,9 +36,9 @@
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/gfx/geometry/size.h"
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
- #include "ui/gfx/x/xproto.h"  // nogncheck
--#endif  // USE_X11
-+#endif                        // BUILDFLAG(USE_VAAPI_X11)
- 
- namespace gfx {
- enum class BufferFormat;
-@@ -426,13 +426,13 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       const std::vector<std::pair<VABufferID, VABufferDescriptor>>& va_buffers)
-       WARN_UNUSED_RESULT;
- 
--#if defined(USE_X11)
-+#if BUILDFLAG(USE_VAAPI_X11)
-   // Put data from |va_surface_id| into |x_pixmap| of size
-   // |dest_size|, converting/scaling to it.
-   bool PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
-                             x11::Pixmap x_pixmap,
-                             gfx::Size dest_size) WARN_UNUSED_RESULT;
--#endif  // USE_X11
-+#endif  // BUILDFLAG(USE_VAAPI_X11)
- 
-   // Creates a ScopedVAImage from a VASurface |va_surface_id| and map it into
-   // memory with the given |format| and |size|. If |format| is not equal to the
-diff --git a/ui/ozone/platform/x11/ozone_platform_x11.cc b/ui/ozone/platform/x11/ozone_platform_x11.cc
-index 8889828e0f..963dc7a0cd 100644
---- a/ui/ozone/platform/x11/ozone_platform_x11.cc
-+++ b/ui/ozone/platform/x11/ozone_platform_x11.cc
-@@ -208,6 +208,9 @@ class OzonePlatformX11 : public OzonePlatform,
-       properties->supports_global_application_menus = true;
-       properties->app_modal_dialogs_use_event_blocker = true;
-       properties->fetch_buffer_formats_for_gmb_on_gpu = true;
-+#if defined(OS_LINUX)
-+      properties->supports_vaapi = true;
-+#endif
- 
-       initialised = true;
-     }
-diff --git a/ui/ozone/public/ozone_platform.h b/ui/ozone/public/ozone_platform.h
-index df95f07486..2d7f44bbfa 100644
---- a/ui/ozone/public/ozone_platform.h
-+++ b/ui/ozone/public/ozone_platform.h
-@@ -15,6 +15,7 @@
- #include "base/macros.h"
- #include "base/message_loop/message_pump_type.h"
- #include "base/single_thread_task_runner.h"
-+#include "build/build_config.h"
- #include "mojo/public/cpp/bindings/binder_map.h"
- #include "ui/gfx/buffer_types.h"
- #include "ui/gfx/native_widget_types.h"
-@@ -154,6 +155,15 @@ class COMPONENT_EXPORT(OZONE) OzonePlatform {
-     // Determines whether buffer formats should be fetched on GPU and passed
-     // back via gpu extra info.
-     bool fetch_buffer_formats_for_gmb_on_gpu = false;
-+
-+#if defined(OS_LINUX)
-+    // TODO(crbug.com/1116701): add vaapi support for other Ozone platforms on
-+    // Linux. At the moment, VA-API Linux implementation supports only X11
-+    // backend. This implementation must be refactored to support Ozone
-+    // properly. As a temporary solution, VA-API on Linux checks if vaapi is
-+    // supported (which implicitly means that it is Ozone/X11).
-+    bool supports_vaapi = false;
-+#endif
-   };
- 
-   // Groups platform properties that can only be known at run time.
diff --git a/srcpkgs/chromium/patches/python3.10.patch b/srcpkgs/chromium/patches/python3.10.patch
deleted file mode 100644
index 9ce6ee71202e..000000000000
--- a/srcpkgs/chromium/patches/python3.10.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-diff -ur ./third_party/jinja2.orig/runtime.py ./third_party/jinja2/runtime.py
---- a/third_party/jinja2.orig/runtime.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/runtime.py	2021-10-13 11:51:16.493986556 -0400
-@@ -315,7 +315,7 @@
- 
- # register the context as mapping if possible
- try:
--    from collections import Mapping
-+    from collections.abc import Mapping
-     Mapping.register(Context)
- except ImportError:
-     pass
-diff -ur ./third_party/jinja2.orig/sandbox.py ./third_party/jinja2/sandbox.py
---- a/third_party/jinja2.orig/sandbox.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/sandbox.py	2021-10-13 11:50:51.513980399 -0400
-@@ -14,7 +14,7 @@
- """
- import types
- import operator
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.environment import Environment
- from jinja2.exceptions import SecurityError
- from jinja2._compat import string_types, PY2
-@@ -79,7 +79,7 @@
-     pass
- 
- #: register Python 2.6 abstract base classes
--from collections import MutableSet, MutableMapping, MutableSequence
-+from collections.abc import MutableSet, MutableMapping, MutableSequence
- _mutable_set_types += (MutableSet,)
- _mutable_mapping_types += (MutableMapping,)
- _mutable_sequence_types += (MutableSequence,)
-diff -ur ./third_party/jinja2.orig/tests.py ./third_party/jinja2/tests.py
---- a/third_party/jinja2.orig/tests.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/tests.py	2021-10-13 11:51:51.693995227 -0400
-@@ -10,7 +10,7 @@
- """
- import operator
- import re
--from collections import Mapping
-+from collections.abc import Mapping
- from jinja2.runtime import Undefined
- from jinja2._compat import text_type, string_types, integer_types
- import decimal
-diff -ur ./third_party/jinja2.orig/utils.py ./third_party/jinja2/utils.py
---- a/third_party/jinja2.orig/utils.py	2021-09-24 00:26:35.000000000 -0400
-+++ b/third_party/jinja2/utils.py	2021-10-13 11:51:34.969991106 -0400
-@@ -482,7 +482,7 @@
- 
- # register the LRU cache as mutable mapping if possible
- try:
--    from collections import MutableMapping
-+    from collections.abc import MutableMapping
-     MutableMapping.register(LRUCache)
- except ImportError:
-     pass
diff --git a/srcpkgs/chromium/patches/sndio.patch b/srcpkgs/chromium/patches/sndio.patch
index 67fb8fca62d0..bac8a63bc24f 100644
--- a/srcpkgs/chromium/patches/sndio.patch
+++ b/srcpkgs/chromium/patches/sndio.patch
@@ -47,15 +47,6 @@ diff -Naur chromium-83.0.4103.97.orig/media/audio/linux/audio_manager_linux.cc c
  
  namespace media {
  
-@@ -26,7 +31,8 @@
-   kPulse,
-   kAlsa,
-   kCras,
--  kAudioIOMax = kCras  // Must always be equal to largest logged entry.
-+  kSndio,
-+  kAudioIOMax = kSndio // Must always be equal to largest logged entry.
- };
- 
  std::unique_ptr<media::AudioManager> CreateAudioManager(
 @@ -39,6 +45,16 @@
                                                audio_log_factory);
diff --git a/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
new file mode 100644
index 000000000000..d10023bc0267
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundle-fix-visibility-of-build-config-freetype.patch
@@ -0,0 +1,31 @@
+From 271e45339b7b969e98ccef7837cb1b15480b07fc Mon Sep 17 00:00:00 2001
+From: Stephan Hartmann <stha09@googlemail.com>
+Date: Thu, 4 Nov 2021 18:58:34 +0000
+Subject: [PATCH] unbundle: fix visibility of //build/config/freetype
+
+For system freetype //build/linux:freetype_from_pkgconfig is restricted
+to //third_party:freetype_harfbuzz and //third_party/harfbuzz-ng:harfbuzz_source.
+However //build/config/freetype:freetype is accessing it too.
+
+Bug: None
+Change-Id: Ic4a37b01e4ae221372a9220cbad04c598b844c21
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3259304
+Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
+Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#938388}
+---
+ build/linux/BUILD.gn | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/build/linux/BUILD.gn b/build/linux/BUILD.gn
+index 54314c7687..cd49e3d524 100644
+--- a/build/linux/BUILD.gn
++++ b/build/linux/BUILD.gn
+@@ -23,6 +23,7 @@ if (use_system_freetype) {
+   # the system, use with caution,for details see build/config/freetype/BUILD.gn.
+   pkg_config("freetype_from_pkgconfig") {
+     visibility = [
++      "//build/config/freetype:freetype",
+       "//third_party:freetype_harfbuzz",
+       "//third_party/harfbuzz-ng:harfbuzz_source",
+     ]
diff --git a/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
new file mode 100644
index 000000000000..c3f2294ac4b2
--- /dev/null
+++ b/srcpkgs/chromium/patches/unbundled-cross-toolchain.patch
@@ -0,0 +1,12 @@
+--- a/build/toolchain/linux/unbundle/BUILD.gn.orig
++++ b/build/toolchain/linux/unbundle/BUILD.gn
+@@ -35,7 +35,7 @@
+   extra_ldflags = getenv("BUILD_LDFLAGS")
+ 
+   toolchain_args = {
+-    current_cpu = current_cpu
+-    current_os = current_os
++    current_cpu = host_cpu
++    current_os = host_os
+   }
+ }
diff --git a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
index d109aeb5b95c..06109237b794 100644
--- a/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
+++ b/srcpkgs/chromium/patches/xxx-ppc64le-support.patch
@@ -2125,8 +2125,8 @@ diff --git a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h b/
 index d4ab936ee..1d22fc59c 100644
 --- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
 +++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.h
-@@ -315,6 +315,45 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
-   DISALLOW_COPY_AND_ASSIGN(MinidumpContextMIPS64Writer);
+@@ -315,6 +315,43 @@ class MinidumpContextMIPS64Writer final : public MinidumpContextWriter {
+   MinidumpContextMIPS64 context_;
  };
  
 +class MinidumpContextPPC64Writer final : public MinidumpContextWriter {
@@ -2164,8 +2164,6 @@ index d4ab936ee..1d22fc59c 100644
 +
 + private:
 +  MinidumpContextPPC64 context_;
-+
-+  DISALLOW_COPY_AND_ASSIGN(MinidumpContextPPC64Writer);
 +};
 +
  }  // namespace crashpad
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index dfe427489f8f..ff6eb803adeb 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,7 +1,7 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=95.0.4638.54
+version=96.0.4664.45
 revision=1
 archs="i686* x86_64* aarch64* armv7l* ppc64le*"
 short_desc="Google's attempt at creating a safer, faster, and more stable browser"
@@ -9,8 +9,7 @@ maintainer="Enno Boland <gottox@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=3eef88d745e6ddaeaf507358f1510482d6f399cf335061bb1226a5f7120061fd
-nocross=yes
+checksum=488c6ad983ebf7781cb4d704f70496e8aa2165611b46656d7aa62f269c760407
 
 lib32disabled=yes
 
@@ -24,8 +23,8 @@ desc_option_pulseaudio="Enable support for PulseAudio"
 desc_option_sndio="Enable support for sndio"
 desc_option_pipewire="Enable support for screen sharing for WebRTC via PipeWire"
 
-hostmakedepends="$(vopt_if clang "clang lld llvm12") python pkgconf perl gperf bison ninja nodejs hwids
- libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk)"
+hostmakedepends="$(vopt_if clang "clang lld llvm12") python python3 pkgconf perl gperf bison ninja nodejs hwids
+ libatomic-devel libevent-devel libglib-devel $(vopt_if js_optimize openjdk) wayland-devel libepoxy-devel"
 makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXi-devel libgcrypt-devel libgnome-keyring-devel cups-devel elfutils-devel
  libXcomposite-devel speech-dispatcher-devel libXrandr-devel mit-krb5-devel
@@ -34,8 +33,9 @@ makedepends="libpng-devel gtk+-devel gtk+3-devel nss-devel pciutils-devel
  libXcursor-devel libflac-devel speex-devel libmtp-devel libwebp-devel
  libjpeg-turbo-devel libevent-devel json-c-devel harfbuzz-devel
  minizip-devel jsoncpp-devel zlib-devel libcap-devel libXdamage-devel
- re2-devel fontconfig-devel freetype-devel opus-devel
+ re2-devel fontconfig-devel freetype-devel opus-devel libatomic-devel
  ffmpeg-devel libva-devel python-setuptools xcb-proto libcurl-devel
+ libxshmfence-devel
  $(vopt_if pipewire pipewire-devel) $(vopt_if sndio sndio-devel)"
 depends="libexif hwids desktop-file-utils hicolor-icon-theme xdg-utils"
 
@@ -43,6 +43,26 @@ case "$XBPS_TARGET_MACHINE" in
 	ppc64*-musl) makedepends+=" libucontext-devel" ;;
 esac
 
+if [ "$CROSS_BUILD" ]; then
+	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
+	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel harfbuzz-devel
+	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
+	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 libcurl-devel snappy-devel re2-devel libXrandr-devel libXcomposite-devel cups-devel
+	 mit-krb5-devel alsa-lib-devel libXdamage-devel libepoxy-devel"
+fi
+
+if [ ! "$XBPS_WORDSIZE" = "$XBPS_TARGET_WORDSIZE" ]; then
+	broken="chromium (v8) can only be cross compiled if word size matches"
+fi
+
+if [ "$CROSS_BUILD" ]; then
+	case "${XBPS_TARGET_MACHINE}" in
+		aarch64*) ;;
+		*) nocross="chromium can not be cross compiled for this architecture" ;;
+	esac
+fi
+
 post_patch() {
 	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 		for f in "${FILESDIR}"/musl-patches/*.patch; do
@@ -71,20 +91,57 @@ post_patch() {
 	vsed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
 		tools/generate_shim_headers/generate_shim_headers.py
 }
-do_configure() {
-	local system="" conf=()
-	export -n CFLAGS CXXFLAGS LDFLAGS
 
+_setup_clang() {
+	local gcc_version=$(gcc -dumpversion)
+	local clang_version=$(clang -dumpversion)
+	export CC=clang
+	export CXX=clang++
+	export AR=llvm-ar
+	export NM=llvm-nm
+	export CFLAGS="-Wno-unknown-warning-option"
+	export CXXFLAGS="-Wno-unknown-warning-option"
+	export LDFLAGS=""
+	export BUILD_CC=clang
+	export BUILD_CXX=clang++
+	export BUILD_AR=llvm-ar
+	export BUILD_NM=llvm-nm
+	export BUILD_CFLAGS="-Wno-unknown-warning-option"
+	export BUILD_CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		CFLAGS+=" --gcc-toolchain=/usr"
+		CFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CFLAGS+=" -nostdinc"
+		CFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		CXXFLAGS+=" --gcc-toolchain=/usr"
+		CXXFLAGS+=" --sysroot=${XBPS_CROSS_BASE}"
+		CXXFLAGS+=" -nostdinc++"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward"
+		CXXFLAGS+=" -nostdinc"
+		CXXFLAGS+=" -isystem ${XBPS_CROSS_BASE}/usr/include"
+		CXXFLAGS+=" -isystem /usr/lib/clang/${clang_version}/include"
+		LDFLAGS+=" --gcc-toolchain=/usr --sysroot=${XBPS_CROSS_BASE}"
+	fi
+}
+
+_setup_toolchain() {
 	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
+		_setup_clang
 	fi
+	CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+	CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
+}
 
-	export LDFLAGS="-pthread"
+do_configure() {
+	local system="" conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
-	tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
+		CFLAGS=$CFLAGS_FOR_BUILD CXXFLAGS=$CXXFLAGS_FOR_BUILD LDFLAGS=$LDFLAGS_FOR_BUILD \
+		tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles
 
 	# we need to generate ppc64 stuff for libvpx as it's not shipped
 	# this has to be done before unbundling, but after gn is built
@@ -154,8 +211,8 @@ do_configure() {
 		'enable_nacl_nonsfi=false'
 
 		'use_sysroot=false'
-		'custom_toolchain="//build/toolchain/linux/unbundle:default"'
-		'host_toolchain="//build/toolchain/linux/unbundle:default"'
+
+		'host_pkg_config="/usr/bin/pkg-config"'
 
 		"is_clang=$(vopt_if clang true false)"
 		"use_lld=$(vopt_if clang true false)"
@@ -181,6 +238,7 @@ do_configure() {
 		'enable_hangout_services_extension=true'
 
 		'use_system_harfbuzz=true'
+		'use_system_wayland_scanner=true'
 
 		'use_cups=true'
 
@@ -220,11 +278,28 @@ do_configure() {
 		'chrome_pgo_phase=0'
 	)
 
+	if [ "$CROSS_BUILD" ]; then
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:host"'
+			'v8_snapshot_toolchain="//build/toolchain/linux/unbundle:v8_snapshot_cross"'
+		)
+	else
+		conf+=(
+			'custom_toolchain="//build/toolchain/linux/unbundle:default"'
+			'host_toolchain="//build/toolchain/linux/unbundle:default"'
+		)
+	fi
+
 	# this does not work on ppc64 yet
 	case "$XBPS_TARGET_MACHINE" in
 		ppc64*) conf+=( "enable_jxl_decoder=false" );;
 	esac
 
+	if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
+		conf+=( 'is_musl=true' )
+	fi
+
 	case "${XBPS_TARGET_MACHINE}" in
 		x86_64*) conf+=( 'target_cpu="x64"' ) ;;
 		i686*) conf+=( 'target_cpu="x86"' ) ;;
@@ -233,35 +308,32 @@ do_configure() {
 		ppc64*) conf+=( 'target_cpu="ppc64"' ) ;;
 	esac
 
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
+	if [ "$CROSS_BUILD" ]; then
+		case "${XBPS_MACHINE}" in
+			x86_64*) conf+=( 'host_cpu="x64"' ) ;;
+			i686*) conf+=( 'host_cpu="x86"' ) ;;
+			arm*) conf+=( 'host_cpu="arm"' ) ;;
+			aarch64*) conf+=( 'host_cpu="arm64"' ) ;;
+			ppc64*) conf+=( 'host_cpu="ppc64"' ) ;;
+		esac
 	fi
-
+	_setup_toolchain
 	out/Release/gn gen out/Release --args="${conf[*]}"
 }
-do_build() {
-	if [ "$build_option_clang" ]; then
-		export CC=clang
-		export CXX=clang++
-		export AR=llvm-ar
-		export NM=llvm-nm
-		export CFLAGS="-Wno-unknown-warning-option"
-		export CXXFLAGS="-Wno-unknown-warning-option"
-	fi
 
-	ninja -C out/Release ${makejobs} chrome chromedriver mksnapshot chrome_crashpad_handler
+do_build() {
+	_setup_toolchain
+	ninja -C out/Release ${makejobs} chrome chromedriver chrome_crashpad_handler
 }
+
 do_install() {
 	vinstall out/Release/chrome 755 usr/lib/${pkgname} ${pkgname}
 	vinstall out/Release/chrome_crashpad_handler 755 usr/lib/${pkgname} chrome_crashpad_handler
 	vinstall out/Release/chromedriver 755 usr/lib/${pkgname} chromedriver
 	vinstall out/Release/libEGL.so 755 usr/lib/${pkgname} libEGL.so
 	vinstall out/Release/libGLESv2.so 755 usr/lib/${pkgname} libGLESv2.so
+	vinstall out/Release/libvk_swiftshader.so 755 usr/lib/${pkgname} libvk_swiftshader.so
+	vinstall out/Release/vk_swiftshader_icd.json 755 usr/lib/${pkgname} vk_swiftshader_icd.json
 
 	vcopy "out/Release/*.bin" usr/lib/chromium
 	vcopy "out/Release/*.pak" usr/lib/chromium

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PR PATCH] [Merged]: chromium: update to 96.0.4664.45.
  2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
                   ` (6 preceding siblings ...)
  2021-11-16 19:53 ` Duncaen
@ 2021-11-17  0:01 ` q66
  7 siblings, 0 replies; 9+ messages in thread
From: q66 @ 2021-11-17  0:01 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 353 bytes --]

There's a merged pull request on the void-packages repository

chromium: update to 96.0.4664.45.
https://github.com/void-linux/void-packages/pull/34094

Description:
- enable aarch64* cross build
- use `-fdebug-prefix-map` for better ccache hits with -o debug

[ci skip]

* [x] x86_64-glibc
* [x] x86_64-musl
* [x] i686-glibc
* [x] aarch64-musl

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-11-17  0:01 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-15 14:51 [PR PATCH] chromium: update to 96.0.4664.45 Duncaen
2021-11-15 14:53 ` [PR PATCH] [Updated] " Duncaen
2021-11-15 18:27 ` Duncaen
2021-11-15 18:42 ` Duncaen
2021-11-15 22:50 ` Duncaen
2021-11-16 19:30 ` Duncaen
2021-11-16 19:30 ` Duncaen
2021-11-16 19:53 ` Duncaen
2021-11-17  0:01 ` [PR PATCH] [Merged]: " q66

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).