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

Unified Diff: cc/tiles/tile_manager.cc

Issue 2866173002: [WIP] cc: Use sRGB for rastering non-wide-color-gamut content
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
« cc/paint/display_item_list.cc ('K') | « cc/tiles/tile_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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>();
« cc/paint/display_item_list.cc ('K') | « cc/tiles/tile_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698