Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(628)

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 786583002: cc: Renaming Rasterizer and RasterWorkerPool interfaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test. Update include files alphabetic orders. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 29 matching lines...) Expand all
40 #include "cc/layers/scrollbar_layer_impl_base.h" 40 #include "cc/layers/scrollbar_layer_impl_base.h"
41 #include "cc/output/compositor_frame_metadata.h" 41 #include "cc/output/compositor_frame_metadata.h"
42 #include "cc/output/copy_output_request.h" 42 #include "cc/output/copy_output_request.h"
43 #include "cc/output/delegating_renderer.h" 43 #include "cc/output/delegating_renderer.h"
44 #include "cc/output/gl_renderer.h" 44 #include "cc/output/gl_renderer.h"
45 #include "cc/output/software_renderer.h" 45 #include "cc/output/software_renderer.h"
46 #include "cc/quads/render_pass_draw_quad.h" 46 #include "cc/quads/render_pass_draw_quad.h"
47 #include "cc/quads/shared_quad_state.h" 47 #include "cc/quads/shared_quad_state.h"
48 #include "cc/quads/solid_color_draw_quad.h" 48 #include "cc/quads/solid_color_draw_quad.h"
49 #include "cc/quads/texture_draw_quad.h" 49 #include "cc/quads/texture_draw_quad.h"
50 #include "cc/resources/bitmap_raster_worker_pool.h" 50 #include "cc/resources/bitmap_tile_task_worker_pool.h"
51 #include "cc/resources/eviction_tile_priority_queue.h" 51 #include "cc/resources/eviction_tile_priority_queue.h"
52 #include "cc/resources/gpu_raster_worker_pool.h" 52 #include "cc/resources/gpu_tile_task_worker_pool.h"
53 #include "cc/resources/memory_history.h" 53 #include "cc/resources/memory_history.h"
54 #include "cc/resources/one_copy_raster_worker_pool.h" 54 #include "cc/resources/one_copy_tile_task_worker_pool.h"
55 #include "cc/resources/picture_layer_tiling.h" 55 #include "cc/resources/picture_layer_tiling.h"
56 #include "cc/resources/pixel_buffer_raster_worker_pool.h" 56 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h"
57 #include "cc/resources/prioritized_resource_manager.h" 57 #include "cc/resources/prioritized_resource_manager.h"
58 #include "cc/resources/raster_tile_priority_queue.h" 58 #include "cc/resources/raster_tile_priority_queue.h"
59 #include "cc/resources/raster_worker_pool.h"
60 #include "cc/resources/resource_pool.h" 59 #include "cc/resources/resource_pool.h"
61 #include "cc/resources/texture_mailbox_deleter.h" 60 #include "cc/resources/texture_mailbox_deleter.h"
61 #include "cc/resources/tile_task_worker_pool.h"
62 #include "cc/resources/ui_resource_bitmap.h" 62 #include "cc/resources/ui_resource_bitmap.h"
63 #include "cc/resources/zero_copy_raster_worker_pool.h" 63 #include "cc/resources/zero_copy_tile_task_worker_pool.h"
64 #include "cc/scheduler/delay_based_time_source.h" 64 #include "cc/scheduler/delay_based_time_source.h"
65 #include "cc/trees/damage_tracker.h" 65 #include "cc/trees/damage_tracker.h"
66 #include "cc/trees/layer_tree_host.h" 66 #include "cc/trees/layer_tree_host.h"
67 #include "cc/trees/layer_tree_host_common.h" 67 #include "cc/trees/layer_tree_host_common.h"
68 #include "cc/trees/layer_tree_impl.h" 68 #include "cc/trees/layer_tree_impl.h"
69 #include "cc/trees/occlusion_tracker.h" 69 #include "cc/trees/occlusion_tracker.h"
70 #include "cc/trees/single_thread_proxy.h" 70 #include "cc/trees/single_thread_proxy.h"
71 #include "cc/trees/tree_synchronizer.h" 71 #include "cc/trees/tree_synchronizer.h"
72 #include "gpu/command_buffer/client/gles2_interface.h" 72 #include "gpu/command_buffer/client/gles2_interface.h"
73 #include "gpu/GLES2/gl2extchromium.h" 73 #include "gpu/GLES2/gl2extchromium.h"
(...skipping 1867 matching lines...) Expand 10 before | Expand all | Expand 10 after
1941 pending_tree_->set_needs_update_draw_properties(); 1941 pending_tree_->set_needs_update_draw_properties();
1942 client_->UpdateRendererCapabilitiesOnImplThread(); 1942 client_->UpdateRendererCapabilitiesOnImplThread();
1943 } 1943 }
1944 1944
1945 void LayerTreeHostImpl::CreateAndSetTileManager() { 1945 void LayerTreeHostImpl::CreateAndSetTileManager() {
1946 DCHECK(!tile_manager_); 1946 DCHECK(!tile_manager_);
1947 DCHECK(settings_.impl_side_painting); 1947 DCHECK(settings_.impl_side_painting);
1948 DCHECK(output_surface_); 1948 DCHECK(output_surface_);
1949 DCHECK(resource_provider_); 1949 DCHECK(resource_provider_);
1950 1950
1951 CreateResourceAndRasterWorkerPool( 1951 CreateResourceAndTileTaskWorkerPool(&tile_task_worker_pool_, &resource_pool_,
1952 &raster_worker_pool_, &resource_pool_, &staging_resource_pool_); 1952 &staging_resource_pool_);
1953 DCHECK(raster_worker_pool_); 1953 DCHECK(tile_task_worker_pool_);
1954 DCHECK(resource_pool_); 1954 DCHECK(resource_pool_);
1955 1955
1956 base::SingleThreadTaskRunner* task_runner = 1956 base::SingleThreadTaskRunner* task_runner =
1957 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() 1957 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner()
1958 : proxy_->MainThreadTaskRunner(); 1958 : proxy_->MainThreadTaskRunner();
1959 DCHECK(task_runner); 1959 DCHECK(task_runner);
1960 size_t scheduled_raster_task_limit = 1960 size_t scheduled_raster_task_limit =
1961 IsSynchronousSingleThreaded() ? std::numeric_limits<size_t>::max() 1961 IsSynchronousSingleThreaded() ? std::numeric_limits<size_t>::max()
1962 : settings_.scheduled_raster_task_limit; 1962 : settings_.scheduled_raster_task_limit;
1963 tile_manager_ = TileManager::Create(this, 1963 tile_manager_ = TileManager::Create(
1964 task_runner, 1964 this, task_runner, resource_pool_.get(),
1965 resource_pool_.get(), 1965 tile_task_worker_pool_->AsTileTaskRunner(),
1966 raster_worker_pool_->AsRasterizer(), 1966 rendering_stats_instrumentation_, scheduled_raster_task_limit);
1967 rendering_stats_instrumentation_,
1968 scheduled_raster_task_limit);
1969 1967
1970 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 1968 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
1971 } 1969 }
1972 1970
1973 void LayerTreeHostImpl::CreateResourceAndRasterWorkerPool( 1971 void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool(
1974 scoped_ptr<RasterWorkerPool>* raster_worker_pool, 1972 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool,
1975 scoped_ptr<ResourcePool>* resource_pool, 1973 scoped_ptr<ResourcePool>* resource_pool,
1976 scoped_ptr<ResourcePool>* staging_resource_pool) { 1974 scoped_ptr<ResourcePool>* staging_resource_pool) {
1977 base::SingleThreadTaskRunner* task_runner = 1975 base::SingleThreadTaskRunner* task_runner =
1978 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() 1976 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner()
1979 : proxy_->MainThreadTaskRunner(); 1977 : proxy_->MainThreadTaskRunner();
1980 DCHECK(task_runner); 1978 DCHECK(task_runner);
1981 1979
1982 ContextProvider* context_provider = output_surface_->context_provider(); 1980 ContextProvider* context_provider = output_surface_->context_provider();
1983 if (!context_provider) { 1981 if (!context_provider) {
1984 *resource_pool = 1982 *resource_pool =
1985 ResourcePool::Create(resource_provider_.get(), 1983 ResourcePool::Create(resource_provider_.get(),
1986 GL_TEXTURE_2D, 1984 GL_TEXTURE_2D,
1987 resource_provider_->best_texture_format()); 1985 resource_provider_->best_texture_format());
1988 1986
1989 *raster_worker_pool = 1987 *tile_task_worker_pool = BitmapTileTaskWorkerPool::Create(
1990 BitmapRasterWorkerPool::Create(task_runner, 1988 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(),
1991 RasterWorkerPool::GetTaskGraphRunner(), 1989 resource_provider_.get());
1992 resource_provider_.get());
1993 return; 1990 return;
1994 } 1991 }
1995 1992
1996 if (use_gpu_rasterization_) { 1993 if (use_gpu_rasterization_) {
1997 *resource_pool = 1994 *resource_pool =
1998 ResourcePool::Create(resource_provider_.get(), 1995 ResourcePool::Create(resource_provider_.get(),
1999 GL_TEXTURE_2D, 1996 GL_TEXTURE_2D,
2000 resource_provider_->best_texture_format()); 1997 resource_provider_->best_texture_format());
2001 1998
2002 *raster_worker_pool = 1999 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create(
2003 GpuRasterWorkerPool::Create(task_runner, 2000 task_runner, context_provider, resource_provider_.get(),
2004 context_provider, 2001 settings_.use_distance_field_text);
2005 resource_provider_.get(),
2006 settings_.use_distance_field_text);
2007 return; 2002 return;
2008 } 2003 }
2009 2004
2010 if (GetRendererCapabilities().using_image) { 2005 if (GetRendererCapabilities().using_image) {
2011 unsigned image_target = GL_TEXTURE_2D; 2006 unsigned image_target = GL_TEXTURE_2D;
2012 #if defined(OS_MACOSX) 2007 #if defined(OS_MACOSX)
2013 // GL_TEXTURE_RECTANGLE_ARB target is required by IOSurface backed images. 2008 // GL_TEXTURE_RECTANGLE_ARB target is required by IOSurface backed images.
2014 DCHECK(context_provider->ContextCapabilities().gpu.texture_rectangle); 2009 DCHECK(context_provider->ContextCapabilities().gpu.texture_rectangle);
2015 image_target = GL_TEXTURE_RECTANGLE_ARB; 2010 image_target = GL_TEXTURE_RECTANGLE_ARB;
2016 #endif 2011 #endif
2017 if (settings_.use_image_external) { 2012 if (settings_.use_image_external) {
2018 DCHECK(context_provider->ContextCapabilities().gpu.egl_image_external); 2013 DCHECK(context_provider->ContextCapabilities().gpu.egl_image_external);
2019 image_target = GL_TEXTURE_EXTERNAL_OES; 2014 image_target = GL_TEXTURE_EXTERNAL_OES;
2020 } 2015 }
2021 2016
2022 if (settings_.use_zero_copy || IsSynchronousSingleThreaded()) { 2017 if (settings_.use_zero_copy || IsSynchronousSingleThreaded()) {
2023 *resource_pool = 2018 *resource_pool =
2024 ResourcePool::Create(resource_provider_.get(), image_target, 2019 ResourcePool::Create(resource_provider_.get(), image_target,
2025 resource_provider_->best_texture_format()); 2020 resource_provider_->best_texture_format());
2026 2021
2027 TaskGraphRunner* task_graph_runner; 2022 TaskGraphRunner* task_graph_runner;
2028 if (IsSynchronousSingleThreaded()) { 2023 if (IsSynchronousSingleThreaded()) {
2029 DCHECK(!single_thread_synchronous_task_graph_runner_); 2024 DCHECK(!single_thread_synchronous_task_graph_runner_);
2030 single_thread_synchronous_task_graph_runner_.reset(new TaskGraphRunner); 2025 single_thread_synchronous_task_graph_runner_.reset(new TaskGraphRunner);
2031 task_graph_runner = single_thread_synchronous_task_graph_runner_.get(); 2026 task_graph_runner = single_thread_synchronous_task_graph_runner_.get();
2032 } else { 2027 } else {
2033 task_graph_runner = RasterWorkerPool::GetTaskGraphRunner(); 2028 task_graph_runner = TileTaskWorkerPool::GetTaskGraphRunner();
2034 } 2029 }
2035 2030
2036 *raster_worker_pool = ZeroCopyRasterWorkerPool::Create( 2031 *tile_task_worker_pool = ZeroCopyTileTaskWorkerPool::Create(
2037 task_runner, task_graph_runner, resource_provider_.get()); 2032 task_runner, task_graph_runner, resource_provider_.get());
2038 return; 2033 return;
2039 } 2034 }
2040 2035
2041 if (settings_.use_one_copy) { 2036 if (settings_.use_one_copy) {
2042 // We need to create a staging resource pool when using copy rasterizer. 2037 // We need to create a staging resource pool when using copy rasterizer.
2043 *staging_resource_pool = 2038 *staging_resource_pool =
2044 ResourcePool::Create(resource_provider_.get(), image_target, 2039 ResourcePool::Create(resource_provider_.get(), image_target,
2045 resource_provider_->best_texture_format()); 2040 resource_provider_->best_texture_format());
2046 *resource_pool = 2041 *resource_pool =
2047 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D, 2042 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D,
2048 resource_provider_->best_texture_format()); 2043 resource_provider_->best_texture_format());
2049 2044
2050 *raster_worker_pool = OneCopyRasterWorkerPool::Create( 2045 *tile_task_worker_pool = OneCopyTileTaskWorkerPool::Create(
2051 task_runner, RasterWorkerPool::GetTaskGraphRunner(), context_provider, 2046 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(),
2052 resource_provider_.get(), staging_resource_pool_.get()); 2047 context_provider, resource_provider_.get(),
2048 staging_resource_pool_.get());
2053 return; 2049 return;
2054 } 2050 }
2055 } 2051 }
2056 2052
2057 *resource_pool = ResourcePool::Create( 2053 *resource_pool = ResourcePool::Create(
2058 resource_provider_.get(), GL_TEXTURE_2D, 2054 resource_provider_.get(), GL_TEXTURE_2D,
2059 resource_provider_->memory_efficient_texture_format()); 2055 resource_provider_->memory_efficient_texture_format());
2060 2056
2061 *raster_worker_pool = PixelBufferRasterWorkerPool::Create( 2057 *tile_task_worker_pool = PixelBufferTileTaskWorkerPool::Create(
2062 task_runner, RasterWorkerPool::GetTaskGraphRunner(), context_provider, 2058 task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), context_provider,
2063 resource_provider_.get(), 2059 resource_provider_.get(),
2064 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(), 2060 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(),
2065 settings_.renderer_settings.refresh_rate)); 2061 settings_.renderer_settings.refresh_rate));
2066 } 2062 }
2067 2063
2068 void LayerTreeHostImpl::DestroyTileManager() { 2064 void LayerTreeHostImpl::DestroyTileManager() {
2069 tile_manager_ = nullptr; 2065 tile_manager_ = nullptr;
2070 resource_pool_ = nullptr; 2066 resource_pool_ = nullptr;
2071 staging_resource_pool_ = nullptr; 2067 staging_resource_pool_ = nullptr;
2072 raster_worker_pool_ = nullptr; 2068 tile_task_worker_pool_ = nullptr;
2073 single_thread_synchronous_task_graph_runner_ = nullptr; 2069 single_thread_synchronous_task_graph_runner_ = nullptr;
2074 } 2070 }
2075 2071
2076 bool LayerTreeHostImpl::UsePendingTreeForSync() const { 2072 bool LayerTreeHostImpl::UsePendingTreeForSync() const {
2077 // In impl-side painting, synchronize to the pending tree so that it has 2073 // In impl-side painting, synchronize to the pending tree so that it has
2078 // time to raster before being displayed. 2074 // time to raster before being displayed.
2079 return settings_.impl_side_painting; 2075 return settings_.impl_side_painting;
2080 } 2076 }
2081 2077
2082 bool LayerTreeHostImpl::IsSynchronousSingleThreaded() const { 2078 bool LayerTreeHostImpl::IsSynchronousSingleThreaded() const {
(...skipping 1394 matching lines...) Expand 10 before | Expand all | Expand 10 after
3477 } 3473 }
3478 3474
3479 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3475 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3480 std::vector<PictureLayerImpl*>::iterator it = 3476 std::vector<PictureLayerImpl*>::iterator it =
3481 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3477 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3482 DCHECK(it != picture_layers_.end()); 3478 DCHECK(it != picture_layers_.end());
3483 picture_layers_.erase(it); 3479 picture_layers_.erase(it);
3484 } 3480 }
3485 3481
3486 } // namespace cc 3482 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698