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

Side by Side Diff: cc/raster/pixel_buffer_tile_task_worker_pool.cc

Issue 1202843008: cc: Fix BytesPerPixel issue and refactor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Android build break. Created 5 years, 4 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/cc_tests.gyp ('k') | cc/raster/tile_task_worker_pool_unittest.cc » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/raster/pixel_buffer_tile_task_worker_pool.h" 5 #include "cc/raster/pixel_buffer_tile_task_worker_pool.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/containers/stack_container.h" 9 #include "base/containers/stack_container.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 for (RasterTask::Vector::const_iterator it = 429 for (RasterTask::Vector::const_iterator it =
430 tasks_with_completed_uploads.begin(); 430 tasks_with_completed_uploads.begin();
431 it != tasks_with_completed_uploads.end(); ++it) { 431 it != tasks_with_completed_uploads.end(); ++it) {
432 RasterTask* task = it->get(); 432 RasterTask* task = it->get();
433 RasterTaskState::Vector::iterator state_it = 433 RasterTaskState::Vector::iterator state_it =
434 std::find_if(raster_task_states_.begin(), raster_task_states_.end(), 434 std::find_if(raster_task_states_.begin(), raster_task_states_.end(),
435 RasterTaskState::TaskComparator(task)); 435 RasterTaskState::TaskComparator(task));
436 DCHECK(state_it != raster_task_states_.end()); 436 DCHECK(state_it != raster_task_states_.end());
437 RasterTaskState& state = *state_it; 437 RasterTaskState& state = *state_it;
438 438
439 // We can use UncheckedMemorySizeBytes here, since these tasks come from 439 // We can use UncheckedSizeInBytes here, since these tasks come from tiles,
440 // tiles, the size of which is controlled by the compositor. 440 // the size of which is controlled by the compositor.
441 bytes_pending_upload_ -= Resource::UncheckedMemorySizeBytes( 441 bytes_pending_upload_ -= ResourceUtil::UncheckedSizeInBytes<size_t>(
442 task->resource()->size(), task->resource()->format()); 442 task->resource()->size(), task->resource()->format());
443 443
444 task->WillComplete(); 444 task->WillComplete();
445 task->CompleteOnOriginThread(this); 445 task->CompleteOnOriginThread(this);
446 task->DidComplete(); 446 task->DidComplete();
447 447
448 DCHECK(std::find(completed_raster_tasks_.begin(), 448 DCHECK(std::find(completed_raster_tasks_.begin(),
449 completed_raster_tasks_.end(), 449 completed_raster_tasks_.end(),
450 task) == completed_raster_tasks_.end()); 450 task) == completed_raster_tasks_.end());
451 completed_raster_tasks_.push_back(task); 451 completed_raster_tasks_.push_back(task);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 DCHECK(std::find(completed_raster_tasks_.begin(), 538 DCHECK(std::find(completed_raster_tasks_.begin(),
539 completed_raster_tasks_.end(), 539 completed_raster_tasks_.end(),
540 task) != completed_raster_tasks_.end()); 540 task) != completed_raster_tasks_.end());
541 continue; 541 continue;
542 } 542 }
543 543
544 // All raster tasks need to be throttled by bytes of pending uploads, 544 // All raster tasks need to be throttled by bytes of pending uploads,
545 // but if it's the only task allow it to complete no matter what its size, 545 // but if it's the only task allow it to complete no matter what its size,
546 // to prevent starvation of the task queue. 546 // to prevent starvation of the task queue.
547 size_t new_bytes_pending_upload = bytes_pending_upload; 547 size_t new_bytes_pending_upload = bytes_pending_upload;
548 // We can use UncheckedMemorySizeBytes here, since these tasks come from 548 // We can use UncheckedSizeInBytes here, since these tasks come from tiles,
549 // tiles, the size of which is controlled by the compositor. 549 // the size of which is controlled by the compositor.
550 new_bytes_pending_upload += Resource::UncheckedMemorySizeBytes( 550 new_bytes_pending_upload += ResourceUtil::UncheckedSizeInBytes<size_t>(
551 task->resource()->size(), task->resource()->format()); 551 task->resource()->size(), task->resource()->format());
552 if (new_bytes_pending_upload > max_bytes_pending_upload_ && 552 if (new_bytes_pending_upload > max_bytes_pending_upload_ &&
553 bytes_pending_upload) { 553 bytes_pending_upload) {
554 did_throttle_raster_tasks |= item.task_sets; 554 did_throttle_raster_tasks |= item.task_sets;
555 continue; 555 continue;
556 } 556 }
557 557
558 // If raster has finished, just update |bytes_pending_upload|. 558 // If raster has finished, just update |bytes_pending_upload|.
559 if (state.type == RasterTaskState::UPLOADING) { 559 if (state.type == RasterTaskState::UPLOADING) {
560 DCHECK(!task->HasCompleted()); 560 DCHECK(!task->HasCompleted());
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 // Triggers if the current task belongs to a set that should be empty. 705 // Triggers if the current task belongs to a set that should be empty.
706 DCHECK((state.task_sets & ~NonEmptyTaskSetsFromTaskCounts(task_counts_)) 706 DCHECK((state.task_sets & ~NonEmptyTaskSetsFromTaskCounts(task_counts_))
707 .none()); 707 .none());
708 RemoveTaskSetsFromTaskCounts(task_counts_, state.task_sets); 708 RemoveTaskSetsFromTaskCounts(task_counts_, state.task_sets);
709 continue; 709 continue;
710 } 710 }
711 711
712 resource_provider_->BeginSetPixels(raster_task->resource()->id()); 712 resource_provider_->BeginSetPixels(raster_task->resource()->id());
713 has_performed_uploads_since_last_flush_ = true; 713 has_performed_uploads_since_last_flush_ = true;
714 714
715 // We can use UncheckedMemorySizeBytes here, since these tasks come from 715 // We can use UncheckedSizeInBytes here, since these tasks come from tiles,
716 // tiles, the size of which is controlled by the compositor. 716 // the size of which is controlled by the compositor.
717 bytes_pending_upload_ += Resource::UncheckedMemorySizeBytes( 717 bytes_pending_upload_ += ResourceUtil::UncheckedSizeInBytes<size_t>(
718 raster_task->resource()->size(), raster_task->resource()->format()); 718 raster_task->resource()->size(), raster_task->resource()->format());
719 raster_tasks_with_pending_upload_.push_back(raster_task); 719 raster_tasks_with_pending_upload_.push_back(raster_task);
720 state.type = RasterTaskState::UPLOADING; 720 state.type = RasterTaskState::UPLOADING;
721 } 721 }
722 completed_tasks_.clear(); 722 completed_tasks_.clear();
723 } 723 }
724 724
725 scoped_refptr<base::trace_event::ConvertableToTraceFormat> 725 scoped_refptr<base::trace_event::ConvertableToTraceFormat>
726 PixelBufferTileTaskWorkerPool::StateAsValue() const { 726 PixelBufferTileTaskWorkerPool::StateAsValue() const {
727 scoped_refptr<base::trace_event::TracedValue> state = 727 scoped_refptr<base::trace_event::TracedValue> state =
(...skipping 17 matching lines...) Expand all
745 throttle_state->SetInteger( 745 throttle_state->SetInteger(
746 "bytes_available_for_upload", 746 "bytes_available_for_upload",
747 static_cast<int>(max_bytes_pending_upload_ - bytes_pending_upload_)); 747 static_cast<int>(max_bytes_pending_upload_ - bytes_pending_upload_));
748 throttle_state->SetInteger("bytes_pending_upload", 748 throttle_state->SetInteger("bytes_pending_upload",
749 static_cast<int>(bytes_pending_upload_)); 749 static_cast<int>(bytes_pending_upload_));
750 throttle_state->SetInteger("scheduled_raster_task_count", 750 throttle_state->SetInteger("scheduled_raster_task_count",
751 static_cast<int>(scheduled_raster_task_count_)); 751 static_cast<int>(scheduled_raster_task_count_));
752 } 752 }
753 753
754 } // namespace cc 754 } // namespace cc
OLDNEW
« no previous file with comments | « cc/cc_tests.gyp ('k') | cc/raster/tile_task_worker_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698