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 70d9cf301bc3dc51a20b8a18a76ffbd420f4fdeb..fbbf02fe9b8c642f7867fd0222aa68a768f31f29 100644 |
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
@@ -968,7 +968,11 @@ WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa |
m_maxViewportDims[0] = m_maxViewportDims[1] = 0; |
contextProvider->contextGL()->GetIntegerv(GL_MAX_VIEWPORT_DIMS, m_maxViewportDims); |
- RefPtr<DrawingBuffer> buffer = createDrawingBuffer(std::move(contextProvider)); |
+ RefPtr<DrawingBuffer> buffer; |
+ if (passedOffscreenCanvas) |
+ buffer = createDrawingBuffer(std::move(contextProvider), DrawingBuffer::DisallowChromiumImage); |
+ else |
+ buffer = createDrawingBuffer(std::move(contextProvider), DrawingBuffer::AllowChromiumImage); |
if (!buffer) { |
m_contextLostMode = SyntheticLostContext; |
return; |
@@ -990,7 +994,7 @@ WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa |
ADD_VALUES_TO_SET(m_supportedTypes, kSupportedTypesES2); |
} |
-PassRefPtr<DrawingBuffer> WebGLRenderingContextBase::createDrawingBuffer(std::unique_ptr<WebGraphicsContext3DProvider> contextProvider) |
+PassRefPtr<DrawingBuffer> WebGLRenderingContextBase::createDrawingBuffer(std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, DrawingBuffer::ChromiumImageUsage chromiumImageUsage) |
{ |
bool premultipliedAlpha = creationAttributes().premultipliedAlpha(); |
bool wantAlphaChannel = creationAttributes().alpha(); |
@@ -1015,7 +1019,8 @@ PassRefPtr<DrawingBuffer> WebGLRenderingContextBase::createDrawingBuffer(std::un |
wantStencilBuffer, |
wantAntialiasing, |
preserve, |
- webGLVersion); |
+ webGLVersion, |
+ chromiumImageUsage); |
} |
void WebGLRenderingContextBase::initializeNewContext() |
@@ -6177,7 +6182,8 @@ void WebGLRenderingContextBase::maybeRestoreContext(TimerBase*) |
RefPtr<DrawingBuffer> buffer; |
if (contextProvider && contextProvider->bindToCurrentThread()) { |
// Construct a new drawing buffer with the new GL context. |
- buffer = createDrawingBuffer(std::move(contextProvider)); |
+ // TODO(xidachen): make sure that the second parameter is correct for OffscreenCanvas. |
+ buffer = createDrawingBuffer(std::move(contextProvider), DrawingBuffer::AllowChromiumImage); |
// If DrawingBuffer::create() fails to allocate a fbo, |drawingBuffer| is set to null. |
} |
if (!buffer) { |