OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 1919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1930 if (pending_tree_) | 1930 if (pending_tree_) |
1931 pending_tree_->set_needs_update_draw_properties(); | 1931 pending_tree_->set_needs_update_draw_properties(); |
1932 client_->UpdateRendererCapabilitiesOnImplThread(); | 1932 client_->UpdateRendererCapabilitiesOnImplThread(); |
1933 } | 1933 } |
1934 | 1934 |
1935 void LayerTreeHostImpl::CreateAndSetTileManager() { | 1935 void LayerTreeHostImpl::CreateAndSetTileManager() { |
1936 DCHECK(!tile_manager_); | 1936 DCHECK(!tile_manager_); |
1937 DCHECK(settings_.impl_side_painting); | 1937 DCHECK(settings_.impl_side_painting); |
1938 DCHECK(output_surface_); | 1938 DCHECK(output_surface_); |
1939 DCHECK(resource_provider_); | 1939 DCHECK(resource_provider_); |
1940 DCHECK(proxy_->ImplThreadTaskRunner()); | 1940 base::SingleThreadTaskRunner* task_runner = |
| 1941 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() |
| 1942 : proxy_->MainThreadTaskRunner(); |
| 1943 DCHECK(task_runner); |
1941 | 1944 |
1942 ContextProvider* context_provider = output_surface_->context_provider(); | 1945 ContextProvider* context_provider = output_surface_->context_provider(); |
1943 if (!context_provider) { | 1946 if (!context_provider) { |
1944 resource_pool_ = | 1947 resource_pool_ = |
1945 ResourcePool::Create(resource_provider_.get(), | 1948 ResourcePool::Create(resource_provider_.get(), |
1946 GL_TEXTURE_2D, | 1949 GL_TEXTURE_2D, |
1947 resource_provider_->best_texture_format()); | 1950 resource_provider_->best_texture_format()); |
1948 | 1951 |
1949 raster_worker_pool_ = | 1952 raster_worker_pool_ = |
1950 BitmapRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), | 1953 BitmapRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), |
1951 RasterWorkerPool::GetTaskGraphRunner(), | 1954 RasterWorkerPool::GetTaskGraphRunner(), |
1952 resource_provider_.get()); | 1955 resource_provider_.get()); |
1953 } else if (use_gpu_rasterization_) { | 1956 } else if (use_gpu_rasterization_) { |
1954 resource_pool_ = | 1957 resource_pool_ = |
1955 ResourcePool::Create(resource_provider_.get(), | 1958 ResourcePool::Create(resource_provider_.get(), |
1956 GL_TEXTURE_2D, | 1959 GL_TEXTURE_2D, |
1957 resource_provider_->best_texture_format()); | 1960 resource_provider_->best_texture_format()); |
1958 | 1961 |
1959 raster_worker_pool_ = | 1962 raster_worker_pool_ = GpuRasterWorkerPool::Create( |
1960 GpuRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), | 1963 task_runner, context_provider, resource_provider_.get()); |
1961 context_provider, | |
1962 resource_provider_.get()); | |
1963 } else if (UseZeroCopyRasterizer()) { | 1964 } else if (UseZeroCopyRasterizer()) { |
1964 resource_pool_ = ResourcePool::Create( | 1965 resource_pool_ = ResourcePool::Create( |
1965 resource_provider_.get(), | 1966 resource_provider_.get(), |
1966 GetMapImageTextureTarget(context_provider->ContextCapabilities()), | 1967 GetMapImageTextureTarget(context_provider->ContextCapabilities()), |
1967 resource_provider_->best_texture_format()); | 1968 resource_provider_->best_texture_format()); |
1968 | 1969 |
1969 raster_worker_pool_ = | 1970 raster_worker_pool_ = |
1970 ZeroCopyRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), | 1971 ZeroCopyRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), |
1971 RasterWorkerPool::GetTaskGraphRunner(), | 1972 RasterWorkerPool::GetTaskGraphRunner(), |
1972 resource_provider_.get()); | 1973 resource_provider_.get()); |
1973 } else if (UseOneCopyRasterizer()) { | 1974 } else if (UseOneCopyRasterizer()) { |
1974 // We need to create a staging resource pool when using copy rasterizer. | 1975 // We need to create a staging resource pool when using copy rasterizer. |
1975 staging_resource_pool_ = ResourcePool::Create( | 1976 staging_resource_pool_ = ResourcePool::Create( |
1976 resource_provider_.get(), | 1977 resource_provider_.get(), |
1977 GetMapImageTextureTarget(context_provider->ContextCapabilities()), | 1978 GetMapImageTextureTarget(context_provider->ContextCapabilities()), |
1978 resource_provider_->best_texture_format()); | 1979 resource_provider_->best_texture_format()); |
1979 resource_pool_ = | 1980 resource_pool_ = |
1980 ResourcePool::Create(resource_provider_.get(), | 1981 ResourcePool::Create(resource_provider_.get(), |
1981 GL_TEXTURE_2D, | 1982 GL_TEXTURE_2D, |
1982 resource_provider_->best_texture_format()); | 1983 resource_provider_->best_texture_format()); |
1983 | 1984 |
1984 raster_worker_pool_ = | 1985 raster_worker_pool_ = |
1985 OneCopyRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(), | 1986 OneCopyRasterWorkerPool::Create(task_runner, |
1986 RasterWorkerPool::GetTaskGraphRunner(), | 1987 RasterWorkerPool::GetTaskGraphRunner(), |
1987 context_provider, | 1988 context_provider, |
1988 resource_provider_.get(), | 1989 resource_provider_.get(), |
1989 staging_resource_pool_.get()); | 1990 staging_resource_pool_.get()); |
1990 } else { | 1991 } else { |
1991 resource_pool_ = ResourcePool::Create( | 1992 resource_pool_ = ResourcePool::Create( |
1992 resource_provider_.get(), | 1993 resource_provider_.get(), |
1993 GL_TEXTURE_2D, | 1994 GL_TEXTURE_2D, |
1994 resource_provider_->memory_efficient_texture_format()); | 1995 resource_provider_->memory_efficient_texture_format()); |
1995 | 1996 |
1996 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( | 1997 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( |
1997 proxy_->ImplThreadTaskRunner(), | 1998 task_runner, |
1998 RasterWorkerPool::GetTaskGraphRunner(), | 1999 RasterWorkerPool::GetTaskGraphRunner(), |
1999 context_provider, | 2000 context_provider, |
2000 resource_provider_.get(), | 2001 resource_provider_.get(), |
2001 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(), | 2002 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(), |
2002 settings_.refresh_rate)); | 2003 settings_.refresh_rate)); |
2003 } | 2004 } |
2004 | 2005 |
2005 tile_manager_ = | 2006 tile_manager_ = TileManager::Create(this, |
2006 TileManager::Create(this, | 2007 task_runner, |
2007 proxy_->ImplThreadTaskRunner(), | 2008 resource_pool_.get(), |
2008 resource_pool_.get(), | 2009 raster_worker_pool_->AsRasterizer(), |
2009 raster_worker_pool_->AsRasterizer(), | 2010 rendering_stats_instrumentation_); |
2010 rendering_stats_instrumentation_); | |
2011 | 2011 |
2012 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); | 2012 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); |
2013 need_to_update_visible_tiles_before_draw_ = false; | 2013 need_to_update_visible_tiles_before_draw_ = false; |
2014 } | 2014 } |
2015 | 2015 |
2016 void LayerTreeHostImpl::DestroyTileManager() { | 2016 void LayerTreeHostImpl::DestroyTileManager() { |
2017 tile_manager_ = nullptr; | 2017 tile_manager_ = nullptr; |
2018 resource_pool_ = nullptr; | 2018 resource_pool_ = nullptr; |
2019 staging_resource_pool_ = nullptr; | 2019 staging_resource_pool_ = nullptr; |
2020 raster_worker_pool_ = nullptr; | 2020 raster_worker_pool_ = nullptr; |
(...skipping 1358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3379 } | 3379 } |
3380 | 3380 |
3381 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 3381 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
3382 std::vector<PictureLayerImpl*>::iterator it = | 3382 std::vector<PictureLayerImpl*>::iterator it = |
3383 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 3383 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
3384 DCHECK(it != picture_layers_.end()); | 3384 DCHECK(it != picture_layers_.end()); |
3385 picture_layers_.erase(it); | 3385 picture_layers_.erase(it); |
3386 } | 3386 } |
3387 | 3387 |
3388 } // namespace cc | 3388 } // namespace cc |
OLD | NEW |