76c5f5cc8a
In the GN build, libchromiumcontent is no longer a distinct library, but merely a container for a set of scripts and patches. Maintaining those patches in a separate repository is tedious and error-prone, so merge them into the main repo. Once this is merged and GN is the default way to build Electron, the libchromiumcontent repository can be archived.
111 lines
5.4 KiB
Diff
111 lines
5.4 KiB
Diff
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc
|
|
index 0affacaa0294..0c321d51364d 100644
|
|
--- a/content/renderer/renderer_blink_platform_impl.cc
|
|
+++ b/content/renderer/renderer_blink_platform_impl.cc
|
|
@@ -1136,8 +1136,10 @@ RendererBlinkPlatformImpl::CreateOffscreenGraphicsContext3DProvider(
|
|
attributes.sample_buffers = 0;
|
|
attributes.bind_generates_resource = false;
|
|
attributes.enable_raster_interface = web_attributes.enable_raster_interface;
|
|
- // Prefer discrete GPU for WebGL.
|
|
- attributes.gpu_preference = gl::PreferDiscreteGpu;
|
|
+
|
|
+ attributes.gpu_preference = web_attributes.prefer_integrated_gpu
|
|
+ ? gl::PreferIntegratedGpu
|
|
+ : gl::PreferDiscreteGpu;
|
|
|
|
attributes.fail_if_major_perf_caveat =
|
|
web_attributes.fail_if_major_performance_caveat;
|
|
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
|
|
index ca4543a10e69..a1f5e5c9f906 100644
|
|
--- a/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
|
|
+++ b/third_party/blink/renderer/core/html/canvas/canvas_context_creation_attributes_core.h
|
|
@@ -30,6 +30,7 @@ class CORE_EXPORT CanvasContextCreationAttributesCore {
|
|
String pixel_format = "8-8-8-8";
|
|
bool premultiplied_alpha = true;
|
|
bool preserve_drawing_buffer = false;
|
|
+ String power_preference = "default";
|
|
bool stencil = false;
|
|
|
|
// This attribute is of type XRDevice, defined in modules/xr/XRDevice.h
|
|
diff --git a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
|
|
index 7419bb20d316..5b04af00fab4 100644
|
|
--- a/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
|
|
+++ b/third_party/blink/renderer/modules/canvas/htmlcanvas/canvas_context_creation_attributes_module.idl
|
|
@@ -28,6 +28,12 @@ enum CanvasPixelFormat {
|
|
"float16",
|
|
};
|
|
|
|
+enum CanvasPowerPreference {
|
|
+ "default",
|
|
+ "low-power",
|
|
+ "high-performance",
|
|
+};
|
|
+
|
|
[PermissiveDictionaryConversion]
|
|
dictionary CanvasContextCreationAttributesModule {
|
|
// This is an experimental feature, but it is not hidden behind a flag in
|
|
@@ -47,6 +47,7 @@ dictionary CanvasContextCreationAttributesModule {
|
|
boolean antialias = true;
|
|
boolean premultipliedAlpha = true;
|
|
boolean preserveDrawingBuffer = false;
|
|
+ CanvasPowerPreference powerPreference = "default";
|
|
boolean failIfMajorPerformanceCaveat = false;
|
|
[OriginTrialEnabled=WebXR] XRDevice compatibleXRDevice = null;
|
|
};
|
|
diff --git a/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc b/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
|
|
index 332fa9fb0547..e8fae4b01c39 100644
|
|
--- a/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
|
|
+++ b/third_party/blink/renderer/modules/webgl/webgl_context_attribute_helpers.cc
|
|
@@ -18,6 +18,7 @@ WebGLContextAttributes ToWebGLContextAttributes(
|
|
result.setAntialias(attrs.antialias);
|
|
result.setPremultipliedAlpha(attrs.premultiplied_alpha);
|
|
result.setPreserveDrawingBuffer(attrs.preserve_drawing_buffer);
|
|
+ result.setPowerPreference(attrs.power_preference);
|
|
result.setFailIfMajorPerformanceCaveat(
|
|
attrs.fail_if_major_performance_caveat);
|
|
result.setCompatibleXRDevice(
|
|
@@ -30,6 +30,7 @@ Platform::ContextAttributes ToPlatformContextAttributes(
|
|
unsigned web_gl_version,
|
|
bool support_own_offscreen_surface) {
|
|
Platform::ContextAttributes result;
|
|
+ result.prefer_integrated_gpu = attrs.power_preference == "low-power";
|
|
result.fail_if_major_performance_caveat =
|
|
attrs.fail_if_major_performance_caveat;
|
|
result.context_type = web_gl_version == 2 ? Platform::kWebGL2ContextType
|
|
diff --git a/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl b/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
|
|
index 180673be9bd0..0af29cbc9402 100644
|
|
--- a/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
|
|
+++ b/third_party/blink/renderer/modules/webgl/webgl_context_attributes.idl
|
|
@@ -26,6 +26,12 @@
|
|
|
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2
|
|
|
|
+enum WebGLPowerPreference {
|
|
+ "default",
|
|
+ "low-power",
|
|
+ "high-performance",
|
|
+};
|
|
+
|
|
dictionary WebGLContextAttributes {
|
|
boolean alpha = true;
|
|
boolean depth = true;
|
|
@@ -33,6 +33,7 @@ dictionary WebGLContextAttributes {
|
|
boolean antialias = true;
|
|
boolean premultipliedAlpha = true;
|
|
boolean preserveDrawingBuffer = false;
|
|
+ WebGLPowerPreference powerPreference = "default";
|
|
boolean failIfMajorPerformanceCaveat = false;
|
|
[OriginTrialEnabled=WebXR] XRDevice compatibleXRDevice = null;
|
|
};
|
|
diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h
|
|
index d4948345246e..bc277ba6aa5f 100644
|
|
--- a/third_party/blink/public/platform/platform.h
|
|
+++ b/third_party/blink/public/platform/platform.h
|
|
@@ -522,6 +522,7 @@ class BLINK_PLATFORM_EXPORT Platform {
|
|
kGLES3ContextType, // GLES 3.0 context
|
|
};
|
|
struct ContextAttributes {
|
|
+ bool prefer_integrated_gpu = false;
|
|
bool fail_if_major_performance_caveat = false;
|
|
ContextType context_type = kGLES2ContextType;
|
|
// Offscreen contexts usually share a surface for the default frame buffer
|