OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/renderer_host/compositor_impl_android.h" | 5 #include "content/browser/renderer_host/compositor_impl_android.h" |
6 | 6 |
7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
8 #include <android/native_window_jni.h> | 8 #include <android/native_window_jni.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 #include <utility> | 10 #include <utility> |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "cc/trees/layer_tree_host.h" | 42 #include "cc/trees/layer_tree_host.h" |
43 #include "cc/trees/layer_tree_settings.h" | 43 #include "cc/trees/layer_tree_settings.h" |
44 #include "content/browser/android/child_process_launcher_android.h" | 44 #include "content/browser/android/child_process_launcher_android.h" |
45 #include "content/browser/compositor/browser_compositor_overlay_candidate_valida
tor_android.h" | 45 #include "content/browser/compositor/browser_compositor_overlay_candidate_valida
tor_android.h" |
46 #include "content/browser/compositor/gl_helper.h" | 46 #include "content/browser/compositor/gl_helper.h" |
47 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" | 47 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" |
48 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" | 48 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" |
49 #include "content/browser/gpu/compositor_util.h" | 49 #include "content/browser/gpu/compositor_util.h" |
50 #include "content/browser/gpu/gpu_surface_tracker.h" | 50 #include "content/browser/gpu/gpu_surface_tracker.h" |
51 #include "content/browser/renderer_host/render_widget_host_impl.h" | 51 #include "content/browser/renderer_host/render_widget_host_impl.h" |
52 #include "content/common/gpu/client/command_buffer_proxy_impl.h" | |
53 #include "content/common/gpu/client/context_provider_command_buffer.h" | 52 #include "content/common/gpu/client/context_provider_command_buffer.h" |
54 #include "content/common/gpu/client/gpu_channel_host.h" | |
55 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" | 53 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
56 #include "content/common/gpu_process_launch_causes.h" | 54 #include "content/common/gpu_process_launch_causes.h" |
57 #include "content/common/host_shared_bitmap_manager.h" | 55 #include "content/common/host_shared_bitmap_manager.h" |
58 #include "content/public/browser/android/compositor.h" | 56 #include "content/public/browser/android/compositor.h" |
59 #include "content/public/browser/android/compositor_client.h" | 57 #include "content/public/browser/android/compositor_client.h" |
60 #include "content/public/common/content_switches.h" | 58 #include "content/public/common/content_switches.h" |
61 #include "gpu/blink/webgraphicscontext3d_in_process_command_buffer_impl.h" | 59 #include "gpu/blink/webgraphicscontext3d_in_process_command_buffer_impl.h" |
62 #include "gpu/command_buffer/client/context_support.h" | 60 #include "gpu/command_buffer/client/context_support.h" |
63 #include "gpu/command_buffer/client/gles2_interface.h" | 61 #include "gpu/command_buffer/client/gles2_interface.h" |
| 62 #include "gpu/ipc/client/command_buffer_proxy_impl.h" |
| 63 #include "gpu/ipc/client/gpu_channel_host.h" |
64 #include "third_party/khronos/GLES2/gl2.h" | 64 #include "third_party/khronos/GLES2/gl2.h" |
65 #include "third_party/khronos/GLES2/gl2ext.h" | 65 #include "third_party/khronos/GLES2/gl2ext.h" |
66 #include "third_party/skia/include/core/SkMallocPixelRef.h" | 66 #include "third_party/skia/include/core/SkMallocPixelRef.h" |
67 #include "ui/android/window_android.h" | 67 #include "ui/android/window_android.h" |
68 #include "ui/gfx/android/device_display_info.h" | 68 #include "ui/gfx/android/device_display_info.h" |
69 #include "ui/gfx/swap_result.h" | 69 #include "ui/gfx/swap_result.h" |
70 | 70 |
71 namespace content { | 71 namespace content { |
72 | 72 |
73 namespace { | 73 namespace { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 compositor_->AddObserver(this); | 121 compositor_->AddObserver(this); |
122 | 122 |
123 return true; | 123 return true; |
124 } | 124 } |
125 | 125 |
126 cc::OverlayCandidateValidator* GetOverlayCandidateValidator() const override { | 126 cc::OverlayCandidateValidator* GetOverlayCandidateValidator() const override { |
127 return overlay_candidate_validator_.get(); | 127 return overlay_candidate_validator_.get(); |
128 } | 128 } |
129 | 129 |
130 private: | 130 private: |
131 CommandBufferProxyImpl* GetCommandBufferProxy() { | 131 gpu::CommandBufferProxyImpl* GetCommandBufferProxy() { |
132 ContextProviderCommandBuffer* provider_command_buffer = | 132 ContextProviderCommandBuffer* provider_command_buffer = |
133 static_cast<content::ContextProviderCommandBuffer*>( | 133 static_cast<content::ContextProviderCommandBuffer*>( |
134 context_provider_.get()); | 134 context_provider_.get()); |
135 CommandBufferProxyImpl* command_buffer_proxy = | 135 gpu::CommandBufferProxyImpl* command_buffer_proxy = |
136 provider_command_buffer->GetCommandBufferProxy(); | 136 provider_command_buffer->GetCommandBufferProxy(); |
137 DCHECK(command_buffer_proxy); | 137 DCHECK(command_buffer_proxy); |
138 return command_buffer_proxy; | 138 return command_buffer_proxy; |
139 } | 139 } |
140 | 140 |
141 void OnSwapBuffersCompleted(const std::vector<ui::LatencyInfo>& latency_info, | 141 void OnSwapBuffersCompleted(const std::vector<ui::LatencyInfo>& latency_info, |
142 gfx::SwapResult result) { | 142 gfx::SwapResult result) { |
143 RenderWidgetHostImpl::CompositorFrameDrawn(latency_info); | 143 RenderWidgetHostImpl::CompositorFrameDrawn(latency_info); |
144 OutputSurface::OnSwapBuffersComplete(); | 144 OutputSurface::OnSwapBuffersComplete(); |
145 } | 145 } |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
404 } | 404 } |
405 | 405 |
406 void CompositorImpl::SetNeedsComposite() { | 406 void CompositorImpl::SetNeedsComposite() { |
407 if (!host_->visible()) | 407 if (!host_->visible()) |
408 return; | 408 return; |
409 host_->SetNeedsAnimate(); | 409 host_->SetNeedsAnimate(); |
410 } | 410 } |
411 | 411 |
412 static scoped_ptr<WebGraphicsContext3DCommandBufferImpl> | 412 static scoped_ptr<WebGraphicsContext3DCommandBufferImpl> |
413 CreateGpuProcessViewContext( | 413 CreateGpuProcessViewContext( |
414 const scoped_refptr<GpuChannelHost>& gpu_channel_host, | 414 const scoped_refptr<gpu::GpuChannelHost>& gpu_channel_host, |
415 const gpu::gles2::ContextCreationAttribHelper& attributes, | 415 const gpu::gles2::ContextCreationAttribHelper& attributes, |
416 int surface_id) { | 416 int surface_id) { |
417 GURL url("chrome://gpu/Compositor::createContext3D"); | 417 GURL url("chrome://gpu/Compositor::createContext3D"); |
418 static const size_t kBytesPerPixel = 4; | 418 static const size_t kBytesPerPixel = 4; |
419 gfx::DeviceDisplayInfo display_info; | 419 gfx::DeviceDisplayInfo display_info; |
420 size_t full_screen_texture_size_in_bytes = | 420 size_t full_screen_texture_size_in_bytes = |
421 display_info.GetDisplayHeight() * | 421 display_info.GetDisplayHeight() * |
422 display_info.GetDisplayWidth() * | 422 display_info.GetDisplayWidth() * |
423 kBytesPerPixel; | 423 kBytesPerPixel; |
424 WebGraphicsContext3DCommandBufferImpl::SharedMemoryLimits limits; | 424 WebGraphicsContext3DCommandBufferImpl::SharedMemoryLimits limits; |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 | 532 |
533 DCHECK(window_); | 533 DCHECK(window_); |
534 DCHECK(surface_id_); | 534 DCHECK(surface_id_); |
535 | 535 |
536 BrowserGpuChannelHostFactory* factory = | 536 BrowserGpuChannelHostFactory* factory = |
537 BrowserGpuChannelHostFactory::instance(); | 537 BrowserGpuChannelHostFactory::instance(); |
538 // This channel might be lost (and even if it isn't right now, it might | 538 // This channel might be lost (and even if it isn't right now, it might |
539 // still get marked as lost from the IO thread, at any point in time really). | 539 // still get marked as lost from the IO thread, at any point in time really). |
540 // But from here on just try and always lead to either | 540 // But from here on just try and always lead to either |
541 // DidInitializeOutputSurface() or DidFailToInitializeOutputSurface(). | 541 // DidInitializeOutputSurface() or DidFailToInitializeOutputSurface(). |
542 scoped_refptr<GpuChannelHost> gpu_channel_host(factory->GetGpuChannel()); | 542 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host(factory->GetGpuChannel()); |
543 scoped_refptr<ContextProviderCommandBuffer> context_provider( | 543 scoped_refptr<ContextProviderCommandBuffer> context_provider( |
544 ContextProviderCommandBuffer::Create( | 544 ContextProviderCommandBuffer::Create( |
545 CreateGpuProcessViewContext(gpu_channel_host, attributes, | 545 CreateGpuProcessViewContext(gpu_channel_host, attributes, |
546 surface_id_), | 546 surface_id_), |
547 DISPLAY_COMPOSITOR_ONSCREEN_CONTEXT)); | 547 DISPLAY_COMPOSITOR_ONSCREEN_CONTEXT)); |
548 DCHECK(context_provider.get()); | 548 DCHECK(context_provider.get()); |
549 | 549 |
550 scoped_ptr<cc::OutputSurface> real_output_surface( | 550 scoped_ptr<cc::OutputSurface> real_output_surface( |
551 new OutputSurfaceWithoutParent( | 551 new OutputSurfaceWithoutParent( |
552 this, context_provider, | 552 this, context_provider, |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 | 646 |
647 void CompositorImpl::SetNeedsAnimate() { | 647 void CompositorImpl::SetNeedsAnimate() { |
648 needs_animate_ = true; | 648 needs_animate_ = true; |
649 if (!host_->visible()) | 649 if (!host_->visible()) |
650 return; | 650 return; |
651 | 651 |
652 host_->SetNeedsAnimate(); | 652 host_->SetNeedsAnimate(); |
653 } | 653 } |
654 | 654 |
655 } // namespace content | 655 } // namespace content |
OLD | NEW |