| Index: Source/core/html/HTMLCanvasElement.cpp
|
| diff --git a/Source/core/html/HTMLCanvasElement.cpp b/Source/core/html/HTMLCanvasElement.cpp
|
| index 8b0d798af50c69d4d865d79bbb35a37064fa7925..5b5505bdcb2eb191bcb6596d88e81c9c5f9fed4d 100644
|
| --- a/Source/core/html/HTMLCanvasElement.cpp
|
| +++ b/Source/core/html/HTMLCanvasElement.cpp
|
| @@ -43,6 +43,7 @@
|
| #include "core/html/canvas/WebGLContextAttributes.h"
|
| #include "core/html/canvas/WebGLContextEvent.h"
|
| #include "core/html/canvas/WebGLRenderingContext.h"
|
| +#include "core/page/ChromeClient.h"
|
| #include "core/rendering/RenderHTMLCanvas.h"
|
| #include "platform/MIMETypeRegistry.h"
|
| #include "platform/graphics/Canvas2DImageBufferSurface.h"
|
| @@ -431,8 +432,9 @@ bool HTMLCanvasElement::shouldAccelerate(const IntSize& size) const
|
| if (!settings || !settings->accelerated2dCanvasEnabled())
|
| return false;
|
|
|
| - // Do not use acceleration for small canvas.
|
| - if (size.width() * size.height() < settings->minimumAccelerated2dCanvasSize())
|
| + // Do not use acceleration for small canvases, unless GPU rasterization is available.
|
| + // GPU raterization is a heuristic to avoid difficult content & whitelist targeted content.
|
| + if (!document().frame()->chromeClient().usesGpuRasterization() && size.width() * size.height() < settings->minimumAccelerated2dCanvasSize())
|
| return false;
|
|
|
| if (!blink::Platform::current()->canAccelerate2dCanvas())
|
|
|