electron/patches/chromium/mas_disable_remote_layer.patch
electron-roller[bot] 5261e08d0c
chore: bump chromium to 113.0.5660.0 (main) (#37612)
* chore: bump chromium in DEPS to 113.0.5657.0

* chore: bump chromium in DEPS to 113.0.5660.0

* chore: update patches

printing.patch
https://chromium-review.googlesource.com/c/chromium/src/+/4347664
https://chromium-review.googlesource.com/c/chromium/src/+/4347664
https://chromium-review.googlesource.com/c/chromium/src/+/4338810
https://chromium-review.googlesource.com/c/chromium/src/+/4339496

mas_disable_remote_layer.patch
https://chromium-review.googlesource.com/c/chromium/src/+/4334544
https://chromium-review.googlesource.com/c/chromium/src/+/4335299

* Add API to verify `TOP_LEVEL_STORAGE_ACCESS` permission status

https://chromium-review.googlesource.com/c/chromium/src/+/4306712

* Move os_crypt into a sync/ subdirectory.

https://chromium-review.googlesource.com/c/chromium/src/+/4336304

* chore: generate libc++ headers

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2023-03-20 07:06:57 -04:00

165 lines
5.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cheng Zhao <zcbenz@gmail.com>
Date: Thu, 20 Sep 2018 17:48:49 -0700
Subject: mas: disable remote layer APIs (CAContext and CALayerHost) for MAS
build
Accordin to ccameron:
For apps that spend a lot of time watching video (especially fullscreen video),
the power/battery usage will likely increase 1.5x to 2x. For something that is,
e.g, scrolling, it'll be smaller, more like 1.15x or 1.25x.
In terms of performance, the impact will likely be fairly small -- any app that
could hit 60fps before will likely still be able to hit 60fps. There may even be
cases where performance improves when disabling remote CoreAnimation (remote
CoreAnimation is really only about battery usage).
diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.h b/gpu/ipc/service/image_transport_surface_overlay_mac.h
index 7d0b810073898dd4a3607828e3419b65ee1cb09d..20c6bd1a002e2b54eed0a8732b2807f598b5f20f 100644
--- a/gpu/ipc/service/image_transport_surface_overlay_mac.h
+++ b/gpu/ipc/service/image_transport_surface_overlay_mac.h
@@ -17,7 +17,9 @@
#include "ui/gl/gl_surface.h"
#include "ui/gl/presenter.h"
+#if !IS_MAS_BUILD()
@class CAContext;
+#endif
@class CALayer;
namespace ui {
@@ -73,8 +75,10 @@ class ImageTransportSurfaceOverlayMacEGL : public gl::Presenter {
base::WeakPtr<ImageTransportSurfaceDelegate> delegate_;
+#if !IS_MAS_BUILD()
const bool use_remote_layer_api_;
base::scoped_nsobject<CAContext> ca_context_;
+#endif
std::unique_ptr<ui::CALayerTreeCoordinator> ca_layer_tree_coordinator_;
gfx::Size pixel_size_;
diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.mm b/gpu/ipc/service/image_transport_surface_overlay_mac.mm
index 1f9d7ec4bd7ab0668a081ecc74bf9a3ab80c4697..4e3014ff05c001d37f583cb7c1af6b3dda9b1503 100644
--- a/gpu/ipc/service/image_transport_surface_overlay_mac.mm
+++ b/gpu/ipc/service/image_transport_surface_overlay_mac.mm
@@ -55,7 +55,9 @@
ImageTransportSurfaceOverlayMacEGL::ImageTransportSurfaceOverlayMacEGL(
base::WeakPtr<ImageTransportSurfaceDelegate> delegate)
: delegate_(delegate),
+#if !IS_MAS_BUILD()
use_remote_layer_api_(ui::RemoteLayerAPISupported()),
+#endif
scale_factor_(1),
vsync_callback_(delegate->GetGpuVSyncCallback()),
weak_ptr_factory_(this) {
@@ -68,6 +70,7 @@
->workarounds()
.disable_av_sample_buffer_display_layer;
+#if !IS_MAS_BUILD()
ca_layer_tree_coordinator_ = std::make_unique<ui::CALayerTreeCoordinator>(
use_remote_layer_api_, allow_av_sample_buffer_display_layer);
@@ -88,6 +91,10 @@
#endif
[ca_context_ setLayer:ca_layer_tree_coordinator_->GetCALayerForDisplay()];
}
+#else
+ ca_layer_tree_coordinator_ = std::make_unique<ui::CALayerTreeCoordinator>(
+ /*allow_remote_layers=*/false, allow_av_sample_buffer_display_layer);
+#endif
}
ImageTransportSurfaceOverlayMacEGL::~ImageTransportSurfaceOverlayMacEGL() {
@@ -169,9 +176,13 @@
TRACE_EVENT_INSTANT2("test_gpu", "SwapBuffers", TRACE_EVENT_SCOPE_THREAD,
"GLImpl", static_cast<int>(gl::GetGLImplementation()),
"width", pixel_size_.width());
+#if !IS_MAS_BUILD()
if (use_remote_layer_api_) {
params.ca_context_id = [ca_context_ contextId];
} else {
+#else
+ if (true) {
+#endif
IOSurfaceRef io_surface =
ca_layer_tree_coordinator_->GetIOSurfaceForDisplay();
if (io_surface) {
diff --git a/ui/accelerated_widget_mac/display_ca_layer_tree.mm b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
index 8cd4cd65a02b3ca332f1d4164ff7c16cda10cdb8..bcd99c491085d3bfca4434c65ad53d2f6da51831 100644
--- a/ui/accelerated_widget_mac/display_ca_layer_tree.mm
+++ b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
@@ -119,6 +119,7 @@ - (void)setContentsChanged;
}
void DisplayCALayerTree::GotCALayerFrame(uint32_t ca_context_id) {
+#if !IS_MAS_BUILD()
// Early-out if the remote layer has not changed.
if ([remote_layer_ contextId] == ca_context_id)
return;
@@ -149,6 +150,9 @@ - (void)setContentsChanged;
[io_surface_layer_ removeFromSuperlayer];
io_surface_layer_.reset();
}
+#else
+ NOTREACHED() << "Remote layer is being used in MAS build";
+#endif
}
void DisplayCALayerTree::GotIOSurfaceFrame(
diff --git a/ui/base/cocoa/remote_layer_api.h b/ui/base/cocoa/remote_layer_api.h
index 5763f05d30ee718b5b6ec75465bc5f58fc263a91..e470d8a719119427026b5656159f8c7188727ad4 100644
--- a/ui/base/cocoa/remote_layer_api.h
+++ b/ui/base/cocoa/remote_layer_api.h
@@ -17,6 +17,7 @@
#if BUILDFLAG(IS_MAC)
+#if !IS_MAS_BUILD()
// The CGSConnectionID is used to create the CAContext in the process that is
// going to share the CALayers that it is rendering to another process to
// display.
@@ -68,6 +69,8 @@ extern NSString* const kCAContextIgnoresHitTest;
#endif // __OBJC__
+#endif // MAS_BUILD
+
namespace ui {
// This function will check if all of the interfaces listed above are supported
diff --git a/ui/base/cocoa/remote_layer_api.mm b/ui/base/cocoa/remote_layer_api.mm
index fc25ba79d2b0e1acdb7ba54b89e7d6e16f94771b..962df2d65d61ec0836cf465d847eb666033846f2 100644
--- a/ui/base/cocoa/remote_layer_api.mm
+++ b/ui/base/cocoa/remote_layer_api.mm
@@ -10,6 +10,7 @@
namespace ui {
+#if !IS_MAS_BUILD()
namespace {
// Control use of cross-process CALayers to display content directly from the
// GPU process on Mac.
@@ -17,8 +18,10 @@
"RemoteCoreAnimationAPI",
base::FEATURE_ENABLED_BY_DEFAULT);
} // namespace
+#endif
bool RemoteLayerAPISupported() {
+#if !IS_MAS_BUILD()
if (!base::FeatureList::IsEnabled(kRemoteCoreAnimationAPI))
return false;
@@ -55,6 +58,9 @@ bool RemoteLayerAPISupported() {
// If everything is there, we should be able to use the API.
return true;
+#else
+ return false;
+#endif // MAS_BUILD
}
} // namespace