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

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

Issue 1063493002: cc: Remove all traces of synchronous GPU rasterization (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 5 years, 8 months 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include <map> 9 #include <map>
10 10
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 #include "cc/resources/eviction_tile_priority_queue.h" 53 #include "cc/resources/eviction_tile_priority_queue.h"
54 #include "cc/resources/gpu_rasterizer.h" 54 #include "cc/resources/gpu_rasterizer.h"
55 #include "cc/resources/gpu_tile_task_worker_pool.h" 55 #include "cc/resources/gpu_tile_task_worker_pool.h"
56 #include "cc/resources/memory_history.h" 56 #include "cc/resources/memory_history.h"
57 #include "cc/resources/one_copy_tile_task_worker_pool.h" 57 #include "cc/resources/one_copy_tile_task_worker_pool.h"
58 #include "cc/resources/picture_layer_tiling.h" 58 #include "cc/resources/picture_layer_tiling.h"
59 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" 59 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h"
60 #include "cc/resources/prioritized_resource_manager.h" 60 #include "cc/resources/prioritized_resource_manager.h"
61 #include "cc/resources/raster_tile_priority_queue.h" 61 #include "cc/resources/raster_tile_priority_queue.h"
62 #include "cc/resources/resource_pool.h" 62 #include "cc/resources/resource_pool.h"
63 #include "cc/resources/software_rasterizer.h"
64 #include "cc/resources/texture_mailbox_deleter.h" 63 #include "cc/resources/texture_mailbox_deleter.h"
65 #include "cc/resources/tile_task_worker_pool.h" 64 #include "cc/resources/tile_task_worker_pool.h"
66 #include "cc/resources/ui_resource_bitmap.h" 65 #include "cc/resources/ui_resource_bitmap.h"
67 #include "cc/resources/zero_copy_tile_task_worker_pool.h" 66 #include "cc/resources/zero_copy_tile_task_worker_pool.h"
68 #include "cc/scheduler/delay_based_time_source.h" 67 #include "cc/scheduler/delay_based_time_source.h"
69 #include "cc/trees/damage_tracker.h" 68 #include "cc/trees/damage_tracker.h"
70 #include "cc/trees/latency_info_swap_promise_monitor.h" 69 #include "cc/trees/latency_info_swap_promise_monitor.h"
71 #include "cc/trees/layer_tree_host.h" 70 #include "cc/trees/layer_tree_host.h"
72 #include "cc/trees/layer_tree_host_common.h" 71 #include "cc/trees/layer_tree_host_common.h"
73 #include "cc/trees/layer_tree_impl.h" 72 #include "cc/trees/layer_tree_impl.h"
(...skipping 1922 matching lines...) Expand 10 before | Expand all | Expand 10 after
1996 pending_tree_->set_needs_update_draw_properties(); 1995 pending_tree_->set_needs_update_draw_properties();
1997 client_->UpdateRendererCapabilitiesOnImplThread(); 1996 client_->UpdateRendererCapabilitiesOnImplThread();
1998 } 1997 }
1999 1998
2000 void LayerTreeHostImpl::CreateAndSetTileManager() { 1999 void LayerTreeHostImpl::CreateAndSetTileManager() {
2001 DCHECK(!tile_manager_); 2000 DCHECK(!tile_manager_);
2002 DCHECK(settings_.impl_side_painting); 2001 DCHECK(settings_.impl_side_painting);
2003 DCHECK(output_surface_); 2002 DCHECK(output_surface_);
2004 DCHECK(resource_provider_); 2003 DCHECK(resource_provider_);
2005 2004
2006 rasterizer_ = CreateRasterizer();
2007 CreateResourceAndTileTaskWorkerPool(&tile_task_worker_pool_, &resource_pool_, 2005 CreateResourceAndTileTaskWorkerPool(&tile_task_worker_pool_, &resource_pool_,
2008 &staging_resource_pool_); 2006 &staging_resource_pool_);
2009 DCHECK(tile_task_worker_pool_); 2007 DCHECK(tile_task_worker_pool_);
2010 DCHECK(resource_pool_); 2008 DCHECK(resource_pool_);
2011 2009
2012 base::SingleThreadTaskRunner* task_runner = 2010 base::SingleThreadTaskRunner* task_runner =
2013 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() 2011 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner()
2014 : proxy_->MainThreadTaskRunner(); 2012 : proxy_->MainThreadTaskRunner();
2015 DCHECK(task_runner); 2013 DCHECK(task_runner);
2016 size_t scheduled_raster_task_limit = 2014 size_t scheduled_raster_task_limit =
2017 IsSynchronousSingleThreaded() ? std::numeric_limits<size_t>::max() 2015 IsSynchronousSingleThreaded() ? std::numeric_limits<size_t>::max()
2018 : settings_.scheduled_raster_task_limit; 2016 : settings_.scheduled_raster_task_limit;
2019 tile_manager_ = 2017 tile_manager_ = TileManager::Create(
2020 TileManager::Create(this, task_runner, resource_pool_.get(), 2018 this, task_runner, resource_pool_.get(),
2021 tile_task_worker_pool_->AsTileTaskRunner(), 2019 tile_task_worker_pool_->AsTileTaskRunner(), scheduled_raster_task_limit);
2022 rasterizer_.get(), scheduled_raster_task_limit);
2023 2020
2024 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 2021 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
2025 } 2022 }
2026 2023
2027 scoped_ptr<Rasterizer> LayerTreeHostImpl::CreateRasterizer() {
2028 ContextProvider* context_provider = output_surface_->context_provider();
2029 if (use_gpu_rasterization_ && context_provider) {
2030 return GpuRasterizer::Create(context_provider, resource_provider_.get(),
2031 settings_.use_distance_field_text,
2032 settings_.threaded_gpu_rasterization_enabled,
2033 settings_.gpu_rasterization_msaa_sample_count);
2034 }
2035 return SoftwareRasterizer::Create();
2036 }
2037
2038 void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool( 2024 void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool(
2039 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, 2025 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool,
2040 scoped_ptr<ResourcePool>* resource_pool, 2026 scoped_ptr<ResourcePool>* resource_pool,
2041 scoped_ptr<ResourcePool>* staging_resource_pool) { 2027 scoped_ptr<ResourcePool>* staging_resource_pool) {
2042 base::SingleThreadTaskRunner* task_runner = 2028 base::SingleThreadTaskRunner* task_runner =
2043 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner() 2029 proxy_->HasImplThread() ? proxy_->ImplThreadTaskRunner()
2044 : proxy_->MainThreadTaskRunner(); 2030 : proxy_->MainThreadTaskRunner();
2045 DCHECK(task_runner); 2031 DCHECK(task_runner);
2046 2032
2047 ContextProvider* context_provider = output_surface_->context_provider(); 2033 ContextProvider* context_provider = output_surface_->context_provider();
(...skipping 13 matching lines...) Expand all
2061 DCHECK(!single_thread_synchronous_task_graph_runner_); 2047 DCHECK(!single_thread_synchronous_task_graph_runner_);
2062 single_thread_synchronous_task_graph_runner_.reset(new TaskGraphRunner); 2048 single_thread_synchronous_task_graph_runner_.reset(new TaskGraphRunner);
2063 task_graph_runner = single_thread_synchronous_task_graph_runner_.get(); 2049 task_graph_runner = single_thread_synchronous_task_graph_runner_.get();
2064 } 2050 }
2065 2051
2066 if (use_gpu_rasterization_) { 2052 if (use_gpu_rasterization_) {
2067 *resource_pool = 2053 *resource_pool =
2068 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D); 2054 ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D);
2069 2055
2070 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create( 2056 *tile_task_worker_pool = GpuTileTaskWorkerPool::Create(
2071 task_runner, task_graph_runner, 2057 task_runner, task_graph_runner, context_provider,
2072 static_cast<GpuRasterizer*>(rasterizer_.get())); 2058 resource_provider_.get(), settings_.use_distance_field_text,
2059 settings_.gpu_rasterization_msaa_sample_count);
2073 return; 2060 return;
2074 } 2061 }
2075 2062
2076 if (GetRendererCapabilities().using_image) { 2063 if (GetRendererCapabilities().using_image) {
2077 unsigned image_target = settings_.use_image_texture_target; 2064 unsigned image_target = settings_.use_image_texture_target;
2078 DCHECK_IMPLIES( 2065 DCHECK_IMPLIES(
2079 image_target == GL_TEXTURE_RECTANGLE_ARB, 2066 image_target == GL_TEXTURE_RECTANGLE_ARB,
2080 context_provider->ContextCapabilities().gpu.texture_rectangle); 2067 context_provider->ContextCapabilities().gpu.texture_rectangle);
2081 DCHECK_IMPLIES( 2068 DCHECK_IMPLIES(
2082 image_target == GL_TEXTURE_EXTERNAL_OES, 2069 image_target == GL_TEXTURE_EXTERNAL_OES,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 base::TimeTicks end_time = expected_next_main_frame_args.frame_time; 2119 base::TimeTicks end_time = expected_next_main_frame_args.frame_time;
2133 frame_timing_tracker_->SaveMainFrameTimeStamps( 2120 frame_timing_tracker_->SaveMainFrameTimeStamps(
2134 request_ids, start_time, end_time, active_tree_->source_frame_number()); 2121 request_ids, start_time, end_time, active_tree_->source_frame_number());
2135 } 2122 }
2136 2123
2137 void LayerTreeHostImpl::DestroyTileManager() { 2124 void LayerTreeHostImpl::DestroyTileManager() {
2138 tile_manager_ = nullptr; 2125 tile_manager_ = nullptr;
2139 resource_pool_ = nullptr; 2126 resource_pool_ = nullptr;
2140 staging_resource_pool_ = nullptr; 2127 staging_resource_pool_ = nullptr;
2141 tile_task_worker_pool_ = nullptr; 2128 tile_task_worker_pool_ = nullptr;
2142 rasterizer_ = nullptr;
2143 single_thread_synchronous_task_graph_runner_ = nullptr; 2129 single_thread_synchronous_task_graph_runner_ = nullptr;
2144 } 2130 }
2145 2131
2146 bool LayerTreeHostImpl::IsSynchronousSingleThreaded() const { 2132 bool LayerTreeHostImpl::IsSynchronousSingleThreaded() const {
2147 return !proxy_->HasImplThread() && !settings_.single_thread_proxy_scheduler; 2133 return !proxy_->HasImplThread() && !settings_.single_thread_proxy_scheduler;
2148 } 2134 }
2149 2135
2150 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { 2136 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) {
2151 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); 2137 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget);
2152 } 2138 }
(...skipping 1291 matching lines...) Expand 10 before | Expand all | Expand 10 after
3444 new_target.SetToMin(layer_impl->MaxScrollOffset()); 3430 new_target.SetToMin(layer_impl->MaxScrollOffset());
3445 3431
3446 curve->UpdateTarget( 3432 curve->UpdateTarget(
3447 animation->TrimTimeToCurrentIteration(CurrentBeginFrameArgs().frame_time) 3433 animation->TrimTimeToCurrentIteration(CurrentBeginFrameArgs().frame_time)
3448 .InSecondsF(), 3434 .InSecondsF(),
3449 new_target); 3435 new_target);
3450 3436
3451 return true; 3437 return true;
3452 } 3438 }
3453 } // namespace cc 3439 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698