Index: Source/platform/graphics/gpu/DrawingBuffer.cpp |
diff --git a/Source/platform/graphics/gpu/DrawingBuffer.cpp b/Source/platform/graphics/gpu/DrawingBuffer.cpp |
index 182ba0b004577c248eec139de540030241b2b0e2..e3055786d8ac0ed587e8551b4b4db72d9ad0025c 100644 |
--- a/Source/platform/graphics/gpu/DrawingBuffer.cpp |
+++ b/Source/platform/graphics/gpu/DrawingBuffer.cpp |
@@ -297,7 +297,7 @@ bool DrawingBuffer::prepareMailbox(WebExternalTextureMailbox* outMailbox, WebExt |
ASSERT(!frontColorBufferMailbox->m_parentDrawingBuffer); |
frontColorBufferMailbox->m_parentDrawingBuffer = this; |
*outMailbox = frontColorBufferMailbox->mailbox; |
- m_frontColorBuffer = frontColorBufferMailbox->textureInfo; |
+ m_frontColorBuffer = { frontColorBufferMailbox->textureInfo, frontColorBufferMailbox->mailbox }; |
return true; |
} |
@@ -457,8 +457,8 @@ bool DrawingBuffer::initialize(const IntSize& size) |
bool DrawingBuffer::copyToPlatformTexture(WebGraphicsContext3D* context, Platform3DObject texture, GLenum internalFormat, GLenum destType, GLint level, bool premultiplyAlpha, bool flipY, bool fromFrontBuffer) |
{ |
GLint textureId = m_colorBuffer.textureId; |
- if (fromFrontBuffer && m_frontColorBuffer.textureId) |
- textureId = m_frontColorBuffer.textureId; |
+ if (fromFrontBuffer && m_frontColorBuffer.texInfo.textureId) |
+ textureId = m_frontColorBuffer.texInfo.textureId; |
if (m_contentsChanged) { |
if (m_multisampleMode != None) { |
@@ -536,12 +536,6 @@ void DrawingBuffer::paintCompositedResultsToCanvas(ImageBuffer* imageBuffer) |
return; |
Platform3DObject tex = imageBuffer->getBackingTexture(); |
if (tex) { |
- RefPtr<MailboxInfo> bufferMailbox = adoptRef(new MailboxInfo()); |
- m_context->genMailboxCHROMIUM(bufferMailbox->mailbox.name); |
- m_context->produceTextureDirectCHROMIUM(m_frontColorBuffer.textureId, GL_TEXTURE_2D, bufferMailbox->mailbox.name); |
dshwang
2014/10/20 19:00:25
As the method name, this method exists for copying
|
- m_context->flush(); |
- |
- bufferMailbox->mailbox.syncPoint = m_context->insertSyncPoint(); |
OwnPtr<WebGraphicsContext3DProvider> provider = |
adoptPtr(Platform::current()->createSharedOffscreenGraphicsContext3DProvider()); |
if (!provider) |
@@ -550,22 +544,21 @@ void DrawingBuffer::paintCompositedResultsToCanvas(ImageBuffer* imageBuffer) |
if (!context) |
return; |
- context->waitSyncPoint(bufferMailbox->mailbox.syncPoint); |
- Platform3DObject sourceTexture = context->createAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, bufferMailbox->mailbox.name); |
+ context->waitSyncPoint(m_frontColorBuffer.mailbox.syncPoint); |
+ Platform3DObject sourceTexture = context->createAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, m_frontColorBuffer.mailbox.name); |
context->copyTextureCHROMIUM(GL_TEXTURE_2D, sourceTexture, |
tex, 0, GL_RGBA, GL_UNSIGNED_BYTE); |
context->deleteTexture(sourceTexture); |
context->flush(); |
m_context->waitSyncPoint(context->insertSyncPoint()); |
imageBuffer->didModifyBackingTexture(); |
- |
return; |
} |
Platform3DObject framebuffer = m_context->createFramebuffer(); |
m_context->bindFramebuffer(GL_FRAMEBUFFER, framebuffer); |
// We don't need to bind a copy of m_frontColorBuffer since the texture parameters are untouched. |
- m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_frontColorBuffer.textureId, 0); |
+ m_context->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_frontColorBuffer.texInfo.textureId, 0); |
paintFramebufferToCanvas(framebuffer, size().width(), size().height(), !m_actualAttributes.premultipliedAlpha, imageBuffer); |
m_context->deleteFramebuffer(framebuffer); |
@@ -617,7 +610,7 @@ void DrawingBuffer::beginDestruction() |
setSize(IntSize()); |
m_colorBuffer = TextureInfo(); |
- m_frontColorBuffer = TextureInfo(); |
+ m_frontColorBuffer = FrontBufferInfo(); |
m_multisampleColorBuffer = 0; |
m_depthStencilBuffer = 0; |
m_depthBuffer = 0; |