| Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
|
| index e54a4fb7fc4bec91d3c9595f280fb2c66c7bbbb6..cfb07c8fd3cc2d3a42a83add6e1a29da703ade3f 100644
|
| --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
|
| +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
|
| @@ -5058,9 +5058,16 @@ void WebGLRenderingContextBase::texImageHelperHTMLCanvasElement(
|
| // float/integer/sRGB internal format.
|
| // TODO(crbug.com/622958): relax the constrains if copyTextureCHROMIUM is
|
| // upgraded to handle more formats.
|
| - if (!canvas->renderingContext() ||
|
| - !canvas->renderingContext()->isAccelerated() ||
|
| - !canUseTexImageByGPU(functionID, internalformat, type)) {
|
| + bool forceSoftwareReadbackFrom2DCanvas =
|
| + this->canvas() && this->canvas()->document().settings() &&
|
| + this->canvas()
|
| + ->document()
|
| + .settings()
|
| + ->forceSoftwareReadbackFrom2DCanvas();
|
| + CanvasRenderingContext* sourceContext = canvas->renderingContext();
|
| + if (!sourceContext || !sourceContext->isAccelerated() ||
|
| + !canUseTexImageByGPU(functionID, internalformat, type) ||
|
| + (forceSoftwareReadbackFrom2DCanvas && sourceContext->is2d())) {
|
| // 2D canvas has only FrontBuffer.
|
| texImageImpl(functionID, target, level, internalformat, xoffset, yoffset,
|
| zoffset, format, type,
|
|
|