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 fe6bd6aeb41c9fdf3e4995903f5c9a25029bab6d..b09f74bf7a7cdd439a1e036396414d84dedbae34 100644 |
--- a/content/renderer/gpu/mailbox_output_surface.cc |
+++ b/content/renderer/gpu/mailbox_output_surface.cc |
@@ -68,8 +68,11 @@ void MailboxOutputSurface::EnsureBackbuffer() { |
TransferableFrame& texture = returned_textures_.front(); |
if (texture.size == surface_size_) { |
current_backing_ = texture; |
- if (current_backing_.sync_point) |
- gl->WaitSyncPointCHROMIUM(current_backing_.sync_point); |
+ if (current_backing_.sync_point || |
+ current_backing_.sync_token.HasData()) { |
+ gl->WaitSyncPointCHROMIUM(current_backing_.sync_point, |
+ current_backing_.sync_token.GetConstData()); |
+ } |
returned_textures_.pop(); |
break; |
} |
@@ -174,6 +177,7 @@ void MailboxOutputSurface::OnSwapAck(uint32 output_surface_id, |
} |
DCHECK(it != pending_textures_.end()); |
it->sync_point = ack.gl_frame_data->sync_point; |
+ it->sync_token = ack.gl_frame_data->sync_token; |
if (!is_backbuffer_discarded_) { |
returned_textures_.push(*it); |
@@ -219,4 +223,13 @@ size_t MailboxOutputSurface::GetNumAcksPending() { |
return pending_textures_.size() - 1; |
} |
+MailboxOutputSurface::TransferableFrame::TransferableFrame() |
+ : texture_id(0), sync_point(0) {} |
+ |
+MailboxOutputSurface::TransferableFrame::TransferableFrame( |
+ uint32 texture_id, |
+ const gpu::Mailbox& mailbox, |
+ const gfx::Size size) |
+ : texture_id(texture_id), mailbox(mailbox), size(size), sync_point(0) {} |
+ |
} // namespace content |