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

Side by Side Diff: cc/tiles/tile_manager.cc

Issue 2336853002: cc: Plumb device color space through to rasterization (Closed)
Patch Set: Remove damage Created 4 years, 3 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/tiles/tile_manager.h ('k') | cc/trees/layer_tree.h » ('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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/tiles/tile_manager.h" 5 #include "cc/tiles/tile_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 780
781 // Track the number of dependents for each *_done task. 781 // Track the number of dependents for each *_done task.
782 size_t required_for_activate_count = 0; 782 size_t required_for_activate_count = 0;
783 size_t required_for_draw_count = 0; 783 size_t required_for_draw_count = 0;
784 size_t all_count = 0; 784 size_t all_count = 0;
785 785
786 size_t priority = kTileTaskPriorityBase; 786 size_t priority = kTileTaskPriorityBase;
787 787
788 graph_.Reset(); 788 graph_.Reset();
789 789
790 gfx::ColorSpace color_space = client_->GetTileColorSpace();
791
790 scoped_refptr<TileTask> required_for_activation_done_task = 792 scoped_refptr<TileTask> required_for_activation_done_task =
791 CreateTaskSetFinishedTask( 793 CreateTaskSetFinishedTask(
792 &TileManager::DidFinishRunningTileTasksRequiredForActivation); 794 &TileManager::DidFinishRunningTileTasksRequiredForActivation);
793 scoped_refptr<TileTask> required_for_draw_done_task = 795 scoped_refptr<TileTask> required_for_draw_done_task =
794 CreateTaskSetFinishedTask( 796 CreateTaskSetFinishedTask(
795 &TileManager::DidFinishRunningTileTasksRequiredForDraw); 797 &TileManager::DidFinishRunningTileTasksRequiredForDraw);
796 scoped_refptr<TileTask> all_done_task = 798 scoped_refptr<TileTask> all_done_task =
797 CreateTaskSetFinishedTask(&TileManager::DidFinishRunningAllTileTasks); 799 CreateTaskSetFinishedTask(&TileManager::DidFinishRunningAllTileTasks);
798 800
799 // Build a new task queue containing all task currently needed. Tasks 801 // Build a new task queue containing all task currently needed. Tasks
800 // are added in order of priority, highest priority task first. 802 // are added in order of priority, highest priority task first.
801 for (auto& prioritized_tile : tiles_that_need_to_be_rasterized) { 803 for (auto& prioritized_tile : tiles_that_need_to_be_rasterized) {
802 Tile* tile = prioritized_tile.tile(); 804 Tile* tile = prioritized_tile.tile();
803 805
804 DCHECK(tile->draw_info().requires_resource()); 806 DCHECK(tile->draw_info().requires_resource());
805 DCHECK(!tile->draw_info().resource_); 807 DCHECK(!tile->draw_info().resource_);
806 808
807 if (!tile->raster_task_) 809 if (!tile->raster_task_)
808 tile->raster_task_ = CreateRasterTask(prioritized_tile); 810 tile->raster_task_ = CreateRasterTask(prioritized_tile, color_space);
809 811
810 TileTask* task = tile->raster_task_.get(); 812 TileTask* task = tile->raster_task_.get();
811 813
812 DCHECK(!task->HasCompleted()); 814 DCHECK(!task->HasCompleted());
813 815
814 if (tile->required_for_activation()) { 816 if (tile->required_for_activation()) {
815 required_for_activate_count++; 817 required_for_activate_count++;
816 graph_.edges.push_back( 818 graph_.edges.push_back(
817 TaskGraph::Edge(task, required_for_activation_done_task.get())); 819 TaskGraph::Edge(task, required_for_activation_done_task.get()));
818 } 820 }
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 required_for_draw_done_task_ = std::move(required_for_draw_done_task); 920 required_for_draw_done_task_ = std::move(required_for_draw_done_task);
919 all_done_task_ = std::move(all_done_task); 921 all_done_task_ = std::move(all_done_task);
920 922
921 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; 923 did_check_for_completed_tasks_since_last_schedule_tasks_ = false;
922 924
923 TRACE_EVENT_ASYNC_STEP_INTO1("cc", "ScheduledTasks", this, "running", "state", 925 TRACE_EVENT_ASYNC_STEP_INTO1("cc", "ScheduledTasks", this, "running", "state",
924 ScheduledTasksStateAsValue()); 926 ScheduledTasksStateAsValue());
925 } 927 }
926 928
927 scoped_refptr<TileTask> TileManager::CreateRasterTask( 929 scoped_refptr<TileTask> TileManager::CreateRasterTask(
928 const PrioritizedTile& prioritized_tile) { 930 const PrioritizedTile& prioritized_tile,
931 const gfx::ColorSpace& color_space) {
929 Tile* tile = prioritized_tile.tile(); 932 Tile* tile = prioritized_tile.tile();
930 933
931 // Get the resource. 934 // Get the resource.
932 uint64_t resource_content_id = 0; 935 uint64_t resource_content_id = 0;
933 Resource* resource = nullptr; 936 Resource* resource = nullptr;
934 gfx::Rect invalidated_rect = tile->invalidated_content_rect(); 937 gfx::Rect invalidated_rect = tile->invalidated_content_rect();
935 if (UsePartialRaster() && tile->invalidated_id()) { 938 if (UsePartialRaster() && tile->invalidated_id()) {
936 resource = resource_pool_->TryAcquireResourceForPartialRaster( 939 resource = resource_pool_->TryAcquireResourceForPartialRaster(
937 tile->id(), tile->invalidated_content_rect(), tile->invalidated_id(), 940 tile->id(), tile->invalidated_content_rect(), tile->invalidated_id(),
938 &invalidated_rect); 941 &invalidated_rect);
939 } 942 }
940 943
941 if (resource) { 944 if (resource) {
942 resource_content_id = tile->invalidated_id(); 945 resource_content_id = tile->invalidated_id();
943 DCHECK_EQ(DetermineResourceFormat(tile), resource->format()); 946 DCHECK_EQ(DetermineResourceFormat(tile), resource->format());
944 } else { 947 } else {
945 resource = resource_pool_->AcquireResource(tile->desired_texture_size(), 948 resource = resource_pool_->AcquireResource(tile->desired_texture_size(),
946 DetermineResourceFormat(tile), 949 DetermineResourceFormat(tile),
947 gfx::ColorSpace()); 950 color_space);
948 } 951 }
949 952
950 // For LOW_RESOLUTION tiles, we don't draw or predecode images. 953 // For LOW_RESOLUTION tiles, we don't draw or predecode images.
951 RasterSource::PlaybackSettings playback_settings; 954 RasterSource::PlaybackSettings playback_settings;
952 playback_settings.skip_images = 955 playback_settings.skip_images =
953 prioritized_tile.priority().resolution == LOW_RESOLUTION; 956 prioritized_tile.priority().resolution == LOW_RESOLUTION;
954 957
955 // Create and queue all image decode tasks that this tile depends on. 958 // Create and queue all image decode tasks that this tile depends on.
956 TileTask::Vector decode_tasks; 959 TileTask::Vector decode_tasks;
957 std::vector<DrawImage>& images = scheduled_draw_images_[tile->id()]; 960 std::vector<DrawImage>& images = scheduled_draw_images_[tile->id()];
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1332 all_tile_tasks_completed = false; 1335 all_tile_tasks_completed = false;
1333 did_notify_all_tile_tasks_completed = false; 1336 did_notify_all_tile_tasks_completed = false;
1334 } 1337 }
1335 1338
1336 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule() = default; 1339 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule() = default;
1337 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule( 1340 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule(
1338 PrioritizedWorkToSchedule&& other) = default; 1341 PrioritizedWorkToSchedule&& other) = default;
1339 TileManager::PrioritizedWorkToSchedule::~PrioritizedWorkToSchedule() = default; 1342 TileManager::PrioritizedWorkToSchedule::~PrioritizedWorkToSchedule() = default;
1340 1343
1341 } // namespace cc 1344 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/tile_manager.h ('k') | cc/trees/layer_tree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698