| 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 | 90 GetCommandBufferProxy()->SetLatencyInfo(frame.latency_info); |
| 91 GetCommandBufferProxy()->SetLatencyInfo(frame.metadata.latency_info); | |
| 92 | 91 |
| 93 if (reflector_) { | 92 if (reflector_) { |
| 94 if (frame.gl_frame_data->sub_buffer_rect == | 93 if (frame.sub_buffer_rect == gfx::Rect(frame.size)) { |
| 95 gfx::Rect(frame.gl_frame_data->size)) { | |
| 96 reflector_texture_->CopyTextureFullImage(SurfaceSize()); | 94 reflector_texture_->CopyTextureFullImage(SurfaceSize()); |
| 97 reflector_->OnSourceSwapBuffers(); | 95 reflector_->OnSourceSwapBuffers(); |
| 98 } else { | 96 } else { |
| 99 const gfx::Rect& rect = frame.gl_frame_data->sub_buffer_rect; | 97 const gfx::Rect& rect = frame.sub_buffer_rect; |
| 100 reflector_texture_->CopyTextureSubImage(rect); | 98 reflector_texture_->CopyTextureSubImage(rect); |
| 101 reflector_->OnSourcePostSubBuffer(rect); | 99 reflector_->OnSourcePostSubBuffer(rect); |
| 102 } | 100 } |
| 103 } | 101 } |
| 104 | 102 |
| 105 if (frame.gl_frame_data->sub_buffer_rect == | 103 if (frame.sub_buffer_rect == gfx::Rect(frame.size)) { |
| 106 gfx::Rect(frame.gl_frame_data->size)) { | |
| 107 context_provider_->ContextSupport()->Swap(); | 104 context_provider_->ContextSupport()->Swap(); |
| 108 } else { | 105 } else { |
| 109 context_provider_->ContextSupport()->PartialSwapBuffers( | 106 context_provider_->ContextSupport()->PartialSwapBuffers( |
| 110 frame.gl_frame_data->sub_buffer_rect); | 107 frame.sub_buffer_rect); |
| 111 } | 108 } |
| 112 } | 109 } |
| 113 | 110 |
| 114 uint32_t GpuBrowserCompositorOutputSurface::GetFramebufferCopyTextureFormat() { | 111 uint32_t GpuBrowserCompositorOutputSurface::GetFramebufferCopyTextureFormat() { |
| 115 auto* gl = static_cast<ContextProviderCommandBuffer*>(context_provider()); | 112 auto* gl = static_cast<ContextProviderCommandBuffer*>(context_provider()); |
| 116 return gl->GetCopyTextureInternalFormat(); | 113 return gl->GetCopyTextureInternalFormat(); |
| 117 } | 114 } |
| 118 | 115 |
| 119 bool GpuBrowserCompositorOutputSurface::IsDisplayedAsOverlayPlane() const { | 116 bool GpuBrowserCompositorOutputSurface::IsDisplayedAsOverlayPlane() const { |
| 120 return false; | 117 return false; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 135 RenderWidgetHostImpl::CompositorFrameDrawn(latency_info); | 132 RenderWidgetHostImpl::CompositorFrameDrawn(latency_info); |
| 136 client_->DidSwapBuffersComplete(); | 133 client_->DidSwapBuffersComplete(); |
| 137 } | 134 } |
| 138 | 135 |
| 139 #if defined(OS_MACOSX) | 136 #if defined(OS_MACOSX) |
| 140 void GpuBrowserCompositorOutputSurface::SetSurfaceSuspendedForRecycle( | 137 void GpuBrowserCompositorOutputSurface::SetSurfaceSuspendedForRecycle( |
| 141 bool suspended) {} | 138 bool suspended) {} |
| 142 #endif | 139 #endif |
| 143 | 140 |
| 144 } // namespace content | 141 } // namespace content |
| OLD | NEW |