| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |