| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index ea30d8517395eed55d388bf2db0c7048ea3c3353..b3e1a6f8ae44364142695225cd868f2e2df321ed 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -312,7 +312,7 @@ void LayerTreeHostImpl::CommitComplete() {
|
| // more lazily when needed prior to drawing.
|
| sync_tree()->UpdateDrawProperties();
|
| // Start working on newly created tiles immediately if needed.
|
| - if (tile_manager_ && tile_priorities_dirty_)
|
| + if (tile_manager_ && tile_priorities_dirty_ && !use_gpu_rasterization_)
|
| ManageTiles();
|
| else
|
| NotifyReadyToActivate();
|
| @@ -386,11 +386,23 @@ void LayerTreeHostImpl::Animate(base::TimeTicks monotonic_time) {
|
| AnimateTopControls(monotonic_time);
|
| }
|
|
|
| +void LayerTreeHostImpl::RasterizeTiles() {
|
| + if (!tile_manager_)
|
| + return;
|
| + if (!tile_priorities_dirty_)
|
| + return;
|
| +
|
| + tile_priorities_dirty_ = false;
|
| + tile_manager_->RasterizeTiles(global_tile_state_);
|
| +}
|
| +
|
| void LayerTreeHostImpl::ManageTiles() {
|
| if (!tile_manager_)
|
| return;
|
| if (!tile_priorities_dirty_)
|
| return;
|
| + if (use_gpu_rasterization_)
|
| + return;
|
|
|
| tile_priorities_dirty_ = false;
|
| tile_manager_->ManageTiles(global_tile_state_);
|
| @@ -1070,6 +1082,9 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) {
|
| bool ok = active_tree_->UpdateDrawProperties();
|
| DCHECK(ok) << "UpdateDrawProperties failed during draw";
|
|
|
| + if (use_gpu_rasterization_)
|
| + RasterizeTiles();
|
| +
|
| frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList();
|
| frame->render_passes.clear();
|
| frame->render_passes_by_id.clear();
|
| @@ -1863,7 +1878,7 @@ void LayerTreeHostImpl::SetVisible(bool visible) {
|
|
|
| // Evict tiles immediately if invisible since this tab may never get another
|
| // draw or timer tick.
|
| - if (!visible_)
|
| + if (!visible_ && !use_gpu_rasterization_)
|
| ManageTiles();
|
|
|
| if (!renderer_)
|
| @@ -1957,8 +1972,8 @@ void LayerTreeHostImpl::CreateAndSetTileManager() {
|
| DCHECK(output_surface_);
|
| DCHECK(resource_provider_);
|
|
|
| - CreateResourceAndRasterWorkerPool(
|
| - &raster_worker_pool_, &resource_pool_, &staging_resource_pool_);
|
| + CreateResourceAndRasterWorkerPool(&raster_worker_pool_, &gpu_rasterizer_,
|
| + &resource_pool_, &staging_resource_pool_);
|
| DCHECK(raster_worker_pool_);
|
| DCHECK(resource_pool_);
|
|
|
| @@ -1969,18 +1984,17 @@ void LayerTreeHostImpl::CreateAndSetTileManager() {
|
| size_t scheduled_raster_task_limit =
|
| IsSynchronousSingleThreaded() ? std::numeric_limits<size_t>::max()
|
| : settings_.scheduled_raster_task_limit;
|
| - tile_manager_ = TileManager::Create(this,
|
| - task_runner,
|
| - resource_pool_.get(),
|
| - raster_worker_pool_->AsRasterizer(),
|
| - rendering_stats_instrumentation_,
|
| - scheduled_raster_task_limit);
|
| + tile_manager_ = TileManager::Create(
|
| + this, task_runner, resource_pool_.get(),
|
| + raster_worker_pool_->AsRasterizer(), gpu_rasterizer_.get(),
|
| + rendering_stats_instrumentation_, scheduled_raster_task_limit);
|
|
|
| UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
|
| }
|
|
|
| void LayerTreeHostImpl::CreateResourceAndRasterWorkerPool(
|
| scoped_ptr<RasterWorkerPool>* raster_worker_pool,
|
| + scoped_ptr<GpuRasterizer>* gpu_rasterizer,
|
| scoped_ptr<ResourcePool>* resource_pool,
|
| scoped_ptr<ResourcePool>* staging_resource_pool) {
|
| base::SingleThreadTaskRunner* task_runner =
|
| @@ -2013,6 +2027,11 @@ void LayerTreeHostImpl::CreateResourceAndRasterWorkerPool(
|
| context_provider,
|
| resource_provider_.get(),
|
| settings_.use_distance_field_text);
|
| +
|
| + *gpu_rasterizer =
|
| + GpuRasterizer::Create(context_provider, resource_provider_.get(),
|
| + settings_.use_distance_field_text);
|
| +
|
| return;
|
| }
|
|
|
| @@ -2079,6 +2098,7 @@ void LayerTreeHostImpl::DestroyTileManager() {
|
| resource_pool_ = nullptr;
|
| staging_resource_pool_ = nullptr;
|
| raster_worker_pool_ = nullptr;
|
| + gpu_rasterizer_ = nullptr;
|
| single_thread_synchronous_task_graph_runner_ = nullptr;
|
| }
|
|
|
|
|