diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index cfe6f33a53ac02..fdf70fce6fb204 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -82,7 +82,6 @@
#include "third_party/blink/renderer/core/paint/paint_timing.h"
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
-#include "third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h"
#include "third_party/blink/renderer/platform/graphics/canvas_resource_dispatcher.h"
#include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h"
#include "third_party/blink/renderer/platform/graphics/graphics_layer.h"
@@ -501,7 +500,7 @@ void HTMLCanvasElement::DisableAcceleration(
if (unaccelerated_bridge_used_for_testing)
bridge = std::move(unaccelerated_bridge_used_for_testing);
else
- bridge = CreateUnaccelerated2dBuffer();
+ bridge = Create2DLayerBridge(Canvas2DLayerBridge::kDisableAcceleration);
if (bridge && canvas2d_bridge_)
ReplaceExisting2dLayerBridge(std::move(bridge));
@@ -1136,26 +1135,16 @@ unsigned HTMLCanvasElement::GetMSAASampleCountFor2dContext() const {
return GetDocument().GetSettings()->GetAccelerated2dCanvasMSAASampleCount();
}
-std::unique_ptr
-HTMLCanvasElement::CreateAccelerated2dBuffer() {
+std::unique_ptr HTMLCanvasElement::Create2DLayerBridge(
+ Canvas2DLayerBridge::AccelerationMode acceleration_mode) {
auto surface = std::make_unique(
- Size(), Canvas2DLayerBridge::kEnableAcceleration, ColorParams());
+ Size(), acceleration_mode, ColorParams());
if (!surface->IsValid())
return nullptr;
return surface;
}
-std::unique_ptr
-HTMLCanvasElement::CreateUnaccelerated2dBuffer() {
- auto surface = std::make_unique(
- Size(), Canvas2DLayerBridge::kDisableAcceleration, ColorParams());
- if (surface->IsValid())
- return surface;
-
- return nullptr;
-}
-
void HTMLCanvasElement::SetCanvas2DLayerBridgeInternal(
std::unique_ptr external_canvas2d_bridge) {
DCHECK(Is2d() && !canvas2d_bridge_);
@@ -1168,10 +1157,14 @@ void HTMLCanvasElement::SetCanvas2DLayerBridgeInternal(
if (external_canvas2d_bridge->IsValid())
canvas2d_bridge_ = std::move(external_canvas2d_bridge);
} else {
- if (ShouldAccelerate(kNormalAccelerationCriteria))
- canvas2d_bridge_ = CreateAccelerated2dBuffer();
- if (!canvas2d_bridge_)
- canvas2d_bridge_ = CreateUnaccelerated2dBuffer();
+ if (ShouldAccelerate(kNormalAccelerationCriteria)) {
+ canvas2d_bridge_ =
+ Create2DLayerBridge(Canvas2DLayerBridge::kEnableAcceleration);
+ }
+ if (!canvas2d_bridge_) {
+ canvas2d_bridge_ =
+ Create2DLayerBridge(Canvas2DLayerBridge::kDisableAcceleration);
+ }
}
if (!canvas2d_bridge_)
@@ -1280,7 +1273,8 @@ void HTMLCanvasElement::WillDrawImageTo2DContext(CanvasImageSource* source) {
source->IsAccelerated() && GetOrCreateCanvas2DLayerBridge() &&
!canvas2d_bridge_->IsAccelerated() &&
ShouldAccelerate(kIgnoreResourceLimitCriteria)) {
- std::unique_ptr surface = CreateAccelerated2dBuffer();
+ std::unique_ptr surface =
+ Create2DLayerBridge(Canvas2DLayerBridge::kEnableAcceleration);
if (surface) {
ReplaceExisting2dLayerBridge(std::move(surface));
SetNeedsCompositingUpdate();
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
index d4b585c6692a59..c755db70bbd10c 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.h
@@ -45,6 +45,7 @@
#include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h"
#include "third_party/blink/renderer/platform/geometry/float_rect.h"
#include "third_party/blink/renderer/platform/geometry/int_size.h"
+#include "third_party/blink/renderer/platform/graphics/canvas_2d_layer_bridge.h"
#include "third_party/blink/renderer/platform/graphics/canvas_resource_host.h"
#include "third_party/blink/renderer/platform/graphics/canvas_resource_provider.h"
#include "third_party/blink/renderer/platform/graphics/graphics_types.h"
@@ -341,8 +342,8 @@ class CORE_EXPORT HTMLCanvasElement final
void Reset();
- std::unique_ptr CreateAccelerated2dBuffer();
- std::unique_ptr CreateUnaccelerated2dBuffer();
+ std::unique_ptr Create2DLayerBridge(
+ Canvas2DLayerBridge::AccelerationMode acceleration_mode);
void SetCanvas2DLayerBridgeInternal(std::unique_ptr);
void SetSurfaceSize(const IntSize&);