Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Unified Diff: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp

Issue 2365653005: Fix failing transferToImageBitmap layout tests and commit pixel test on Mac (Closed)
Patch Set: rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698