diff options
author | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-04 03:25:26 +0000 |
---|---|---|
committer | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-04 03:25:26 +0000 |
commit | a26776fe79e4960432f0a8d42dd0fa814956ca04 (patch) | |
tree | 943d3eb7f5f989c0f97f1a9b064a315b9a66a086 | |
parent | 6610080fc23e4d9ea394f7077ebea3d2fb365720 (diff) | |
download | chromium_src-a26776fe79e4960432f0a8d42dd0fa814956ca04.zip chromium_src-a26776fe79e4960432f0a8d42dd0fa814956ca04.tar.gz chromium_src-a26776fe79e4960432f0a8d42dd0fa814956ca04.tar.bz2 |
Simplify mailbox handling in MailboxOutputSurface
With r202992 landed, We don't need to consume anymore before recycling, we only
need to produce once, and we don't need to unbind from FBOs before doing so.
BUG=None
Review URL: https://chromiumcodereview.appspot.com/16305019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203823 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/renderer/gpu/mailbox_output_surface.cc | 23 | ||||
-rw-r--r-- | content/renderer/gpu/mailbox_output_surface.h | 2 |
2 files changed, 3 insertions, 22 deletions
diff --git a/content/renderer/gpu/mailbox_output_surface.cc b/content/renderer/gpu/mailbox_output_surface.cc index c1166fc..3af09e2 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); - 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; diff --git a/content/renderer/gpu/mailbox_output_surface.h b/content/renderer/gpu/mailbox_output_surface.h index 9f2119f..34c25fe 100644 --- a/content/renderer/gpu/mailbox_output_surface.h +++ b/content/renderer/gpu/mailbox_output_surface.h @@ -57,8 +57,6 @@ class MailboxOutputSurface : public CompositorOutputSurface { uint32 sync_point; }; - void ConsumeTexture(const TransferableFrame& frame); - TransferableFrame current_backing_; std::deque<TransferableFrame> pending_textures_; std::queue<TransferableFrame> returned_textures_; |