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