Chromium Code Reviews| Index: cc/output/gl_renderer.cc |
| diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
| index d249a2f472054b60ac0151cc12d55f93c1e7e43f..382b955a3328487c7d87fa9be060ed3df3085d7a 100644 |
| --- a/cc/output/gl_renderer.cc |
| +++ b/cc/output/gl_renderer.cc |
| @@ -2365,23 +2365,12 @@ void GLRenderer::GetFramebufferPixelsAsync( |
| bool own_mailbox = !request->has_texture_mailbox(); |
| GLuint texture_id = 0; |
| - gl_->GenTextures(1, &texture_id); |
| - |
| gpu::Mailbox mailbox; |
| if (own_mailbox) { |
| GLC(gl_, gl_->GenMailboxCHROMIUM(mailbox.name)); |
| - } else { |
| - mailbox = request->texture_mailbox().mailbox(); |
| - DCHECK_EQ(static_cast<unsigned>(GL_TEXTURE_2D), |
| - request->texture_mailbox().target()); |
| - DCHECK(!mailbox.IsZero()); |
| - unsigned incoming_sync_point = request->texture_mailbox().sync_point(); |
| - if (incoming_sync_point) |
| - GLC(gl_, gl_->WaitSyncPointCHROMIUM(incoming_sync_point)); |
| - } |
| + gl_->GenTextures(1, &texture_id); |
| + GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, texture_id)); |
| - GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, texture_id)); |
| - if (own_mailbox) { |
| GLC(gl_, |
| gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); |
| GLC(gl_, |
| @@ -2394,16 +2383,26 @@ void GLRenderer::GetFramebufferPixelsAsync( |
| GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); |
| GLC(gl_, gl_->ProduceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
| } else { |
| - GLC(gl_, gl_->ConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
| + mailbox = request->texture_mailbox().mailbox(); |
| + DCHECK_EQ(static_cast<unsigned>(GL_TEXTURE_2D), |
| + request->texture_mailbox().target()); |
| + DCHECK(!mailbox.IsZero()); |
| + unsigned incoming_sync_point = request->texture_mailbox().sync_point(); |
| + if (incoming_sync_point) |
| + GLC(gl_, gl_->WaitSyncPointCHROMIUM(incoming_sync_point)); |
| + |
| + texture_id = GLC( |
| + gl_, |
| + gl_->CreateAndConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name)); |
| } |
| GetFramebufferTexture(texture_id, RGBA_8888, window_rect); |
| - GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, 0)); |
| unsigned sync_point = gl_->InsertSyncPointCHROMIUM(); |
| TextureMailbox texture_mailbox(mailbox, GL_TEXTURE_2D, sync_point); |
| scoped_ptr<SingleReleaseCallback> release_callback; |
| if (own_mailbox) { |
| + GLC(gl_, gl_->BindTexture(GL_TEXTURE_2D, 0)); |
|
danakj
2014/07/08 15:51:30
FWIW GetFramebufferTexture already binds/unbinds,
dshwang
2014/07/08 16:36:16
GetFramebufferTexture actually call BindTexture(GL
danakj
2014/07/08 16:40:25
I like having something here to show it's unbound
|
| release_callback = texture_mailbox_deleter_->GetReleaseCallback( |
| output_surface_->context_provider(), texture_id); |
| } else { |