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 <unordered_set> | 10 #include <unordered_set> |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 // -1. | 177 // -1. |
178 attributes.alpha_size = 0; | 178 attributes.alpha_size = 0; |
179 attributes.red_size = 5; | 179 attributes.red_size = 5; |
180 attributes.green_size = 6; | 180 attributes.green_size = 6; |
181 attributes.blue_size = 5; | 181 attributes.blue_size = 5; |
182 } | 182 } |
183 | 183 |
184 return attributes; | 184 return attributes; |
185 } | 185 } |
186 | 186 |
| 187 void CreateContextProviderAfterGpuChannelEstablished( |
| 188 gpu::SurfaceHandle handle, |
| 189 gpu::gles2::ContextCreationAttribHelper attributes, |
| 190 gpu::SharedMemoryLimits shared_memory_limits, |
| 191 Compositor::ContextProviderCallback callback, |
| 192 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host) { |
| 193 if (!gpu_channel_host) |
| 194 callback.Run(nullptr); |
| 195 |
| 196 constexpr bool automatic_flushes = false; |
| 197 constexpr bool support_locking = false; |
| 198 scoped_refptr<ui::ContextProviderCommandBuffer> context_provider = |
| 199 new ui::ContextProviderCommandBuffer( |
| 200 std::move(gpu_channel_host), gpu::GPU_STREAM_DEFAULT, |
| 201 gpu::GpuStreamPriority::NORMAL, handle, |
| 202 GURL(std::string("chrome://gpu/Compositor::CreateContextProvider")), |
| 203 automatic_flushes, support_locking, shared_memory_limits, attributes, |
| 204 nullptr /* shared_context */, |
| 205 ui::command_buffer_metrics::CONTEXT_TYPE_UNKNOWN); |
| 206 callback.Run(std::move(context_provider)); |
| 207 } |
| 208 |
187 class AndroidOutputSurface : public cc::OutputSurface { | 209 class AndroidOutputSurface : public cc::OutputSurface { |
188 public: | 210 public: |
189 AndroidOutputSurface( | 211 AndroidOutputSurface( |
190 scoped_refptr<ui::ContextProviderCommandBuffer> context_provider, | 212 scoped_refptr<ui::ContextProviderCommandBuffer> context_provider, |
191 base::Closure swap_buffers_callback) | 213 base::Closure swap_buffers_callback) |
192 : cc::OutputSurface(std::move(context_provider)), | 214 : cc::OutputSurface(std::move(context_provider)), |
193 swap_buffers_callback_(std::move(swap_buffers_callback)), | 215 swap_buffers_callback_(std::move(swap_buffers_callback)), |
194 overlay_candidate_validator_( | 216 overlay_candidate_validator_( |
195 new display_compositor:: | 217 new display_compositor:: |
196 CompositorOverlayCandidateValidatorAndroid()), | 218 CompositorOverlayCandidateValidatorAndroid()), |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 return client ? new CompositorImpl(client, root_window) : NULL; | 370 return client ? new CompositorImpl(client, root_window) : NULL; |
349 } | 371 } |
350 | 372 |
351 // static | 373 // static |
352 void Compositor::Initialize() { | 374 void Compositor::Initialize() { |
353 DCHECK(!CompositorImpl::IsInitialized()); | 375 DCHECK(!CompositorImpl::IsInitialized()); |
354 g_initialized = true; | 376 g_initialized = true; |
355 } | 377 } |
356 | 378 |
357 // static | 379 // static |
| 380 void Compositor::CreateContextProvider( |
| 381 gpu::SurfaceHandle handle, |
| 382 gpu::gles2::ContextCreationAttribHelper attributes, |
| 383 gpu::SharedMemoryLimits shared_memory_limits, |
| 384 ContextProviderCallback callback) { |
| 385 BrowserGpuChannelHostFactory::instance()->EstablishGpuChannel( |
| 386 base::Bind(&CreateContextProviderAfterGpuChannelEstablished, handle, |
| 387 attributes, shared_memory_limits, callback)); |
| 388 } |
| 389 |
| 390 // static |
358 cc::SurfaceManager* CompositorImpl::GetSurfaceManager() { | 391 cc::SurfaceManager* CompositorImpl::GetSurfaceManager() { |
359 return &g_compositor_dependencies.Get().surface_manager; | 392 return &g_compositor_dependencies.Get().surface_manager; |
360 } | 393 } |
361 | 394 |
362 // static | 395 // static |
363 cc::FrameSinkId CompositorImpl::AllocateFrameSinkId() { | 396 cc::FrameSinkId CompositorImpl::AllocateFrameSinkId() { |
364 return g_compositor_dependencies.Get() | 397 return g_compositor_dependencies.Get() |
365 .frame_sink_id_allocator.NextFrameSinkId(); | 398 .frame_sink_id_allocator.NextFrameSinkId(); |
366 } | 399 } |
367 | 400 |
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 } | 854 } |
822 GetSurfaceManager()->UnregisterFrameSinkHierarchy(frame_sink_id_, | 855 GetSurfaceManager()->UnregisterFrameSinkHierarchy(frame_sink_id_, |
823 frame_sink_id); | 856 frame_sink_id); |
824 } | 857 } |
825 | 858 |
826 bool CompositorImpl::HavePendingReadbacks() { | 859 bool CompositorImpl::HavePendingReadbacks() { |
827 return !readback_layer_tree_->children().empty(); | 860 return !readback_layer_tree_->children().empty(); |
828 } | 861 } |
829 | 862 |
830 } // namespace content | 863 } // namespace content |
OLD | NEW |