Index: content/renderer/gpu/mailbox_output_surface.cc |
diff --git a/content/renderer/gpu/mailbox_output_surface.cc b/content/renderer/gpu/mailbox_output_surface.cc |
index c1166fc80e8343914beffec432a9e6a1651ee884..3af09e29337a4526d95466691a70b869781a4a55 100644 |
--- a/content/renderer/gpu/mailbox_output_surface.cc |
+++ b/content/renderer/gpu/mailbox_output_surface.cc |
@@ -47,12 +47,10 @@ void MailboxOutputSurface::EnsureBackbuffer() { |
TransferableFrame& texture = returned_textures_.front(); |
if (texture.size == size_) { |
current_backing_ = texture; |
- ConsumeTexture(texture); |
returned_textures_.pop(); |
break; |
} |
- ConsumeTexture(texture); |
context3d_->deleteTexture(texture.texture_id); |
returned_textures_.pop(); |
} |
@@ -60,7 +58,6 @@ void MailboxOutputSurface::EnsureBackbuffer() { |
if (!current_backing_.texture_id) { |
current_backing_.texture_id = context3d_->createTexture(); |
current_backing_.size = size_; |
- context3d_->genMailboxCHROMIUM(current_backing_.mailbox.name); |
context3d_->bindTexture(GL_TEXTURE_2D, current_backing_.texture_id); |
context3d_->texParameteri( |
GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
@@ -73,6 +70,9 @@ void MailboxOutputSurface::EnsureBackbuffer() { |
context3d_->texImage2D( |
GL_TEXTURE_2D, 0, GL_RGBA, size_.width(), size_.height(), 0, |
GL_RGBA, GL_UNSIGNED_BYTE, NULL); |
+ context3d_->genMailboxCHROMIUM(current_backing_.mailbox.name); |
+ context3d_->produceTextureCHROMIUM( |
+ GL_TEXTURE_2D, current_backing_.mailbox.name); |
} |
} |
} |
@@ -87,7 +87,6 @@ void MailboxOutputSurface::DiscardBackbuffer() { |
while (!returned_textures_.empty()) { |
const TransferableFrame& frame = returned_textures_.front(); |
- ConsumeTexture(frame); |
context3d_->deleteTexture(frame.texture_id); |
returned_textures_.pop(); |
} |
@@ -128,12 +127,6 @@ void MailboxOutputSurface::SendFrameToParentCompositor( |
DCHECK(size_ == current_backing_.size); |
DCHECK(!current_backing_.mailbox.IsZero()); |
- context3d_->framebufferTexture2D( |
- GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); |
no sievers
2013/06/03 22:03:51
This was necessary for some Android driver that ha
|
- context3d_->bindFramebuffer(GL_FRAMEBUFFER, 0); |
- context3d_->bindTexture(GL_TEXTURE_2D, current_backing_.texture_id); |
- context3d_->produceTextureCHROMIUM( |
- GL_TEXTURE_2D, current_backing_.mailbox.name); |
frame->gl_frame_data->mailbox = current_backing_.mailbox; |
frame->gl_frame_data->size = current_backing_.size; |
context3d_->flush(); |
@@ -165,7 +158,6 @@ void MailboxOutputSurface::OnSwapAck(const cc::CompositorFrameAck& ack) { |
if (!is_backbuffer_discarded_) { |
returned_textures_.push(*it); |
} else { |
- ConsumeTexture(*it); |
context3d_->deleteTexture(it->texture_id); |
} |
@@ -195,15 +187,6 @@ void MailboxOutputSurface::PostSubBuffer(gfx::Rect rect, |
DCHECK(GetNumAcksPending() < 2); |
} |
-void MailboxOutputSurface::ConsumeTexture(const TransferableFrame& frame) { |
- DCHECK(!frame.mailbox.IsZero()); |
- if (frame.sync_point) |
- context3d_->waitSyncPoint(frame.sync_point); |
- |
- context3d_->bindTexture(GL_TEXTURE_2D, frame.texture_id); |
- context3d_->consumeTextureCHROMIUM(GL_TEXTURE_2D, frame.mailbox.name); |
-} |
- |
size_t MailboxOutputSurface::GetNumAcksPending() { |
DCHECK(pending_textures_.size()); |
return pending_textures_.size() - 1; |