| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/compositor/gpu_browser_compositor_output_surface.h" | 5 #include "content/browser/compositor/gpu_browser_compositor_output_surface.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
| 10 #include "cc/output/compositor_frame.h" | |
| 11 #include "cc/output/output_surface_client.h" | 10 #include "cc/output/output_surface_client.h" |
| 11 #include "cc/output/output_surface_frame.h" |
| 12 #include "components/display_compositor/compositor_overlay_candidate_validator.h
" | 12 #include "components/display_compositor/compositor_overlay_candidate_validator.h
" |
| 13 #include "content/browser/compositor/reflector_impl.h" | 13 #include "content/browser/compositor/reflector_impl.h" |
| 14 #include "content/browser/compositor/reflector_texture.h" | 14 #include "content/browser/compositor/reflector_texture.h" |
| 15 #include "content/browser/renderer_host/render_widget_host_impl.h" | 15 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| 16 #include "content/common/gpu/client/context_provider_command_buffer.h" | 16 #include "content/common/gpu/client/context_provider_command_buffer.h" |
| 17 #include "gpu/command_buffer/client/context_support.h" | 17 #include "gpu/command_buffer/client/context_support.h" |
| 18 #include "gpu/command_buffer/client/gles2_interface.h" | 18 #include "gpu/command_buffer/client/gles2_interface.h" |
| 19 #include "gpu/ipc/client/command_buffer_proxy_impl.h" | 19 #include "gpu/ipc/client/command_buffer_proxy_impl.h" |
| 20 | 20 |
| 21 namespace content { | 21 namespace content { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 void GpuBrowserCompositorOutputSurface::EnsureBackbuffer() {} | 78 void GpuBrowserCompositorOutputSurface::EnsureBackbuffer() {} |
| 79 | 79 |
| 80 void GpuBrowserCompositorOutputSurface::DiscardBackbuffer() { | 80 void GpuBrowserCompositorOutputSurface::DiscardBackbuffer() { |
| 81 context_provider()->ContextGL()->DiscardBackbufferCHROMIUM(); | 81 context_provider()->ContextGL()->DiscardBackbufferCHROMIUM(); |
| 82 } | 82 } |
| 83 | 83 |
| 84 void GpuBrowserCompositorOutputSurface::BindFramebuffer() { | 84 void GpuBrowserCompositorOutputSurface::BindFramebuffer() { |
| 85 context_provider()->ContextGL()->BindFramebuffer(GL_FRAMEBUFFER, 0); | 85 context_provider()->ContextGL()->BindFramebuffer(GL_FRAMEBUFFER, 0); |
| 86 } | 86 } |
| 87 | 87 |
| 88 void GpuBrowserCompositorOutputSurface::SwapBuffers(cc::CompositorFrame frame) { | 88 void GpuBrowserCompositorOutputSurface::SwapBuffers( |
| 89 DCHECK(frame.gl_frame_data); | 89 cc::OutputSurfaceFrame frame) { |
| 90 GetCommandBufferProxy()->SetLatencyInfo(frame.latency_info); |
| 90 | 91 |
| 91 GetCommandBufferProxy()->SetLatencyInfo(frame.metadata.latency_info); | 92 gfx::Rect swap_rect = frame.sub_buffer_rect; |
| 92 | 93 gfx::Size surface_size = frame.size; |
| 93 gfx::Rect swap_rect = frame.gl_frame_data->sub_buffer_rect; | |
| 94 gfx::Size surface_size = frame.gl_frame_data->size; | |
| 95 if (reflector_) { | 94 if (reflector_) { |
| 96 if (swap_rect == gfx::Rect(surface_size)) { | 95 if (swap_rect == gfx::Rect(surface_size)) { |
| 97 reflector_texture_->CopyTextureFullImage(surface_size); | 96 reflector_texture_->CopyTextureFullImage(surface_size); |
| 98 reflector_->OnSourceSwapBuffers(surface_size); | 97 reflector_->OnSourceSwapBuffers(surface_size); |
| 99 } else { | 98 } else { |
| 100 reflector_texture_->CopyTextureSubImage(swap_rect); | 99 reflector_texture_->CopyTextureSubImage(swap_rect); |
| 101 reflector_->OnSourcePostSubBuffer(swap_rect, surface_size); | 100 reflector_->OnSourcePostSubBuffer(swap_rect, surface_size); |
| 102 } | 101 } |
| 103 } | 102 } |
| 104 | 103 |
| 105 if (swap_rect == gfx::Rect(frame.gl_frame_data->size)) | 104 if (swap_rect == gfx::Rect(frame.size)) |
| 106 context_provider_->ContextSupport()->Swap(); | 105 context_provider_->ContextSupport()->Swap(); |
| 107 else | 106 else |
| 108 context_provider_->ContextSupport()->PartialSwapBuffers(swap_rect); | 107 context_provider_->ContextSupport()->PartialSwapBuffers(swap_rect); |
| 109 } | 108 } |
| 110 | 109 |
| 111 uint32_t GpuBrowserCompositorOutputSurface::GetFramebufferCopyTextureFormat() { | 110 uint32_t GpuBrowserCompositorOutputSurface::GetFramebufferCopyTextureFormat() { |
| 112 auto* gl = static_cast<ContextProviderCommandBuffer*>(context_provider()); | 111 auto* gl = static_cast<ContextProviderCommandBuffer*>(context_provider()); |
| 113 return gl->GetCopyTextureInternalFormat(); | 112 return gl->GetCopyTextureInternalFormat(); |
| 114 } | 113 } |
| 115 | 114 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 132 RenderWidgetHostImpl::CompositorFrameDrawn(latency_info); | 131 RenderWidgetHostImpl::CompositorFrameDrawn(latency_info); |
| 133 client_->DidSwapBuffersComplete(); | 132 client_->DidSwapBuffersComplete(); |
| 134 } | 133 } |
| 135 | 134 |
| 136 #if defined(OS_MACOSX) | 135 #if defined(OS_MACOSX) |
| 137 void GpuBrowserCompositorOutputSurface::SetSurfaceSuspendedForRecycle( | 136 void GpuBrowserCompositorOutputSurface::SetSurfaceSuspendedForRecycle( |
| 138 bool suspended) {} | 137 bool suspended) {} |
| 139 #endif | 138 #endif |
| 140 | 139 |
| 141 } // namespace content | 140 } // namespace content |
| OLD | NEW |