chromium: update to 96.0.4664.45.

- enable aarch64* cross build
- use -fdebug-prefix-map for better ccache hits with -o debug
This commit is contained in:
Duncaen 2021-09-26 15:47:29 +02:00 committed by Daniel Kolesa
parent 0ceb3487ba
commit cea371b26f
15 changed files with 324 additions and 835 deletions

View File

@ -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

View File

@ -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'));

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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>();
}

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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);

View File

@ -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",
]

View File

@ -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
}
}

View File

@ -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

View File

@ -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
}
_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
_setup_clang
fi
CXXFLAGS+=" -fdebug-prefix-map=$wrksrc=."
CFLAGS+=" -fdebug-prefix-map=$wrksrc=."
}
do_configure() {
local system="" conf=()
export -n CFLAGS CXXFLAGS LDFLAGS
if [ "$build_option_clang" ]; then
export CC=clang
export CXX=clang++
fi
export LDFLAGS="-pthread"
# 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