Chromium Code Reviews| Index: cc/tiles/tile_manager.cc |
| diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc |
| index 1c78b5353496048ab7f3c8f64d671522631592e8..f65f63e35a4941ee4fa4f3dbc21a564a6ea13d46 100644 |
| --- a/cc/tiles/tile_manager.cc |
| +++ b/cc/tiles/tile_manager.cc |
| @@ -643,7 +643,7 @@ TileManager::PrioritizedWorkToSchedule TileManager::AssignGpuMemoryToTiles() { |
| MemoryUsage memory_usage(resource_pool_->memory_usage_bytes(), |
| resource_pool_->resource_count()); |
| - gfx::ColorSpace raster_color_space = client_->GetRasterColorSpace(); |
| + gfx::ColorSpace client_raster_color_space = client_->GetRasterColorSpace(); |
| std::unique_ptr<RasterTilePriorityQueue> raster_priority_queue( |
| client_->BuildRasterQueue(global_state_.tree_priority, |
| @@ -655,6 +655,8 @@ TileManager::PrioritizedWorkToSchedule TileManager::AssignGpuMemoryToTiles() { |
| Tile* tile = prioritized_tile.tile(); |
| TilePriority priority = prioritized_tile.priority(); |
| + gfx::ColorSpace raster_color_space = GetTileColorSpace(prioritized_tile); |
| + |
| if (TilePriorityViolatesMemoryPolicy(priority)) { |
| TRACE_EVENT_INSTANT0( |
| "cc", "TileManager::AssignGpuMemory tile violates memory policy", |
| @@ -765,7 +767,7 @@ TileManager::PrioritizedWorkToSchedule TileManager::AssignGpuMemoryToTiles() { |
| // Creating the raster task here will acquire resources, but |
| // this resource usage has already been accounted for above. |
| tile->raster_task_ = |
| - CreateRasterTask(prioritized_tile, client_->GetRasterColorSpace(), |
| + CreateRasterTask(prioritized_tile, raster_color_space, |
| &work_to_schedule.checker_image_decode_queue); |
| } |
| @@ -800,7 +802,7 @@ TileManager::PrioritizedWorkToSchedule TileManager::AssignGpuMemoryToTiles() { |
| if (tile->draw_info().is_checker_imaged() || |
| tile->raster_task_scheduled_with_checker_images()) { |
| AddCheckeredImagesToDecodeQueue( |
| - prioritized_tile, raster_color_space, |
| + prioritized_tile, GetTileColorSpace(prioritized_tile), |
| &work_to_schedule.checker_image_decode_queue); |
| } |
| } |
| @@ -914,8 +916,6 @@ void TileManager::ScheduleTasks( |
| graph_.Reset(); |
| - gfx::ColorSpace raster_color_space = client_->GetRasterColorSpace(); |
| - |
| scoped_refptr<TileTask> required_for_activation_done_task = |
| CreateTaskSetFinishedTask( |
| &TileManager::DidFinishRunningTileTasksRequiredForActivation); |
| @@ -972,7 +972,7 @@ void TileManager::ScheduleTasks( |
| std::vector<DrawImage> images; |
| prioritized_tile.raster_source()->GetDiscardableImagesInRect( |
| tile->enclosing_layer_rect(), tile->raster_transform().scale(), |
| - raster_color_space, &images); |
| + GetTileColorSpace(prioritized_tile), &images); |
| new_locked_images.insert(new_locked_images.end(), images.begin(), |
| images.end()); |
| } |
| @@ -1500,6 +1500,13 @@ scoped_refptr<TileTask> TileManager::CreateTaskSetFinishedTask( |
| base::Bind(callback, task_set_finished_weak_ptr_factory_.GetWeakPtr()))); |
| } |
| +gfx::ColorSpace TileManager::GetTileColorSpace( |
| + const PrioritizedTile& prioritized_tile) const { |
| + return prioritized_tile.raster_source()->HasNonSRGBContent() |
| + ? client_raster_color_space |
| + : gfx::ColorSpace::CreateSRGB(); |
|
vmpstr
2017/05/09 22:58:27
Is this a cheap call? Assuming that everything is
|
| +} |
| + |
| std::unique_ptr<base::trace_event::ConvertableToTraceFormat> |
| TileManager::ActivationStateAsValue() { |
| auto state = base::MakeUnique<base::trace_event::TracedValue>(); |