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 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 RasterTaskCompletionStatsAsValue(const RasterTaskCompletionStats& stats) { | 335 RasterTaskCompletionStatsAsValue(const RasterTaskCompletionStats& stats) { |
336 std::unique_ptr<base::trace_event::TracedValue> state( | 336 std::unique_ptr<base::trace_event::TracedValue> state( |
337 new base::trace_event::TracedValue()); | 337 new base::trace_event::TracedValue()); |
338 state->SetInteger("completed_count", | 338 state->SetInteger("completed_count", |
339 base::saturated_cast<int>(stats.completed_count)); | 339 base::saturated_cast<int>(stats.completed_count)); |
340 state->SetInteger("canceled_count", | 340 state->SetInteger("canceled_count", |
341 base::saturated_cast<int>(stats.canceled_count)); | 341 base::saturated_cast<int>(stats.canceled_count)); |
342 return std::move(state); | 342 return std::move(state); |
343 } | 343 } |
344 | 344 |
345 TileManager::TileManager(TileManagerClient* client, | 345 TileManager::TileManager( |
346 base::SequencedTaskRunner* task_runner, | 346 TileManagerClient* client, |
347 size_t scheduled_raster_task_limit, | 347 base::SequencedTaskRunner* origin_task_runner, |
348 bool use_partial_raster) | 348 scoped_refptr<base::SequencedTaskRunner> image_worker_task_runner, |
| 349 size_t scheduled_raster_task_limit, |
| 350 bool use_partial_raster) |
349 : client_(client), | 351 : client_(client), |
350 task_runner_(task_runner), | 352 task_runner_(origin_task_runner), |
351 resource_pool_(nullptr), | 353 resource_pool_(nullptr), |
352 tile_task_manager_(nullptr), | 354 tile_task_manager_(nullptr), |
353 scheduled_raster_task_limit_(scheduled_raster_task_limit), | 355 scheduled_raster_task_limit_(scheduled_raster_task_limit), |
354 use_partial_raster_(use_partial_raster), | 356 use_partial_raster_(use_partial_raster), |
355 use_gpu_rasterization_(false), | 357 use_gpu_rasterization_(false), |
356 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), | 358 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), |
357 did_check_for_completed_tasks_since_last_schedule_tasks_(true), | 359 did_check_for_completed_tasks_since_last_schedule_tasks_(true), |
358 did_oom_on_last_assign_(false), | 360 did_oom_on_last_assign_(false), |
| 361 image_controller_(origin_task_runner, |
| 362 std::move(image_worker_task_runner)), |
359 more_tiles_need_prepare_check_notifier_( | 363 more_tiles_need_prepare_check_notifier_( |
360 task_runner_, | 364 task_runner_, |
361 base::Bind(&TileManager::CheckIfMoreTilesNeedToBePrepared, | 365 base::Bind(&TileManager::CheckIfMoreTilesNeedToBePrepared, |
362 base::Unretained(this))), | 366 base::Unretained(this))), |
363 signals_check_notifier_(task_runner_, | 367 signals_check_notifier_(task_runner_, |
364 base::Bind(&TileManager::CheckAndIssueSignals, | 368 base::Bind(&TileManager::CheckAndIssueSignals, |
365 base::Unretained(this))), | 369 base::Unretained(this))), |
366 has_scheduled_tile_tasks_(false), | 370 has_scheduled_tile_tasks_(false), |
367 prepare_tiles_count_(0u), | 371 prepare_tiles_count_(0u), |
368 next_tile_id_(0u), | 372 next_tile_id_(0u), |
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 draw_info.set_use_resource(); | 1044 draw_info.set_use_resource(); |
1041 draw_info.resource_ = resource; | 1045 draw_info.resource_ = resource; |
1042 draw_info.contents_swizzled_ = DetermineResourceRequiresSwizzle(tile); | 1046 draw_info.contents_swizzled_ = DetermineResourceRequiresSwizzle(tile); |
1043 | 1047 |
1044 DCHECK(draw_info.IsReadyToDraw()); | 1048 DCHECK(draw_info.IsReadyToDraw()); |
1045 draw_info.set_was_ever_ready_to_draw(); | 1049 draw_info.set_was_ever_ready_to_draw(); |
1046 | 1050 |
1047 client_->NotifyTileStateChanged(tile); | 1051 client_->NotifyTileStateChanged(tile); |
1048 } | 1052 } |
1049 | 1053 |
| 1054 void TileManager::NotifyFrameFinished() { |
| 1055 image_controller_.NotifyFrameFinished(); |
| 1056 } |
| 1057 |
1050 ScopedTilePtr TileManager::CreateTile(const Tile::CreateInfo& info, | 1058 ScopedTilePtr TileManager::CreateTile(const Tile::CreateInfo& info, |
1051 int layer_id, | 1059 int layer_id, |
1052 int source_frame_number, | 1060 int source_frame_number, |
1053 int flags) { | 1061 int flags) { |
1054 // We need to have a tile task worker pool to do anything meaningful with | 1062 // We need to have a tile task worker pool to do anything meaningful with |
1055 // tiles. | 1063 // tiles. |
1056 DCHECK(tile_task_manager_); | 1064 DCHECK(tile_task_manager_); |
1057 ScopedTilePtr tile( | 1065 ScopedTilePtr tile( |
1058 new Tile(this, info, layer_id, source_frame_number, flags)); | 1066 new Tile(this, info, layer_id, source_frame_number, flags)); |
1059 DCHECK(tiles_.find(tile->id()) == tiles_.end()); | 1067 DCHECK(tiles_.find(tile->id()) == tiles_.end()); |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1345 all_tile_tasks_completed = false; | 1353 all_tile_tasks_completed = false; |
1346 did_notify_all_tile_tasks_completed = false; | 1354 did_notify_all_tile_tasks_completed = false; |
1347 } | 1355 } |
1348 | 1356 |
1349 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule() = default; | 1357 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule() = default; |
1350 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule( | 1358 TileManager::PrioritizedWorkToSchedule::PrioritizedWorkToSchedule( |
1351 PrioritizedWorkToSchedule&& other) = default; | 1359 PrioritizedWorkToSchedule&& other) = default; |
1352 TileManager::PrioritizedWorkToSchedule::~PrioritizedWorkToSchedule() = default; | 1360 TileManager::PrioritizedWorkToSchedule::~PrioritizedWorkToSchedule() = default; |
1353 | 1361 |
1354 } // namespace cc | 1362 } // namespace cc |
OLD | NEW |