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

Side by Side Diff: cc/tile_manager.cc

Issue 12289021: cc: Only register live tiles with the TileManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add comments, fix 80+char line Created 7 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « cc/tile_manager.h ('k') | no next file » | 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/tile_manager.h" 5 #include "cc/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 default: 138 default:
139 DCHECK(false) << "Unrecognized TileRasterState value"; 139 DCHECK(false) << "Unrecognized TileRasterState value";
140 return scoped_ptr<base::Value>(base::Value::CreateStringValue( 140 return scoped_ptr<base::Value>(base::Value::CreateStringValue(
141 "<unknown TileRasterState value>")); 141 "<unknown TileRasterState value>"));
142 } 142 }
143 } 143 }
144 144
145 ManagedTileState::ManagedTileState(Tile* tile) 145 ManagedTileState::ManagedTileState(Tile* tile)
146 : tile(tile), 146 : tile(tile),
147 can_use_gpu_memory(false), 147 can_use_gpu_memory(false),
148 can_be_freed(true),
149 resource_is_being_initialized(false), 148 resource_is_being_initialized(false),
150 contents_swizzled(false), 149 contents_swizzled(false),
151 need_to_gather_pixel_refs(true), 150 need_to_gather_pixel_refs(true),
152 gpu_memmgr_stats_bin(NEVER_BIN), 151 gpu_memmgr_stats_bin(NEVER_BIN),
153 raster_state(IDLE_STATE), 152 raster_state(IDLE_STATE),
154 resolution(NON_IDEAL_RESOLUTION), 153 resolution(NON_IDEAL_RESOLUTION),
155 time_to_needed_in_seconds(std::numeric_limits<float>::infinity()), 154 time_to_needed_in_seconds(std::numeric_limits<float>::infinity()),
156 distance_to_visible_in_pixels(std::numeric_limits<float>::infinity()) { 155 distance_to_visible_in_pixels(std::numeric_limits<float>::infinity()) {
157 for (int i = 0; i < NUM_TREES; ++i) { 156 for (int i = 0; i < NUM_TREES; ++i) {
158 tree_bin[i] = NEVER_BIN; 157 tree_bin[i] = NEVER_BIN;
159 bin[i] = NEVER_BIN; 158 bin[i] = NEVER_BIN;
160 } 159 }
161 tile->tile_manager()->RegisterManagedTile(this); 160 tile->tile_manager()->RegisterManagedTile(this);
162 } 161 }
163 162
164 ManagedTileState::~ManagedTileState() { 163 ManagedTileState::~ManagedTileState() {
165 tile->tile_manager()->UnregisterManagedTile(this); 164 tile->tile_manager()->UnregisterManagedTile(this);
166 DCHECK(!resource); 165 DCHECK(!resource);
167 DCHECK(!resource_is_being_initialized); 166 DCHECK(!resource_is_being_initialized);
168 } 167 }
169 168
170 scoped_ptr<base::Value> ManagedTileState::AsValue() const { 169 scoped_ptr<base::Value> ManagedTileState::AsValue() const {
171 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); 170 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
172 state->SetBoolean("can_use_gpu_memory", can_use_gpu_memory); 171 state->SetBoolean("can_use_gpu_memory", can_use_gpu_memory);
173 state->SetBoolean("can_be_freed", can_be_freed); 172 state->SetBoolean("can_be_freed", can_be_freed());
174 state->SetBoolean("has_resource", resource.get() != 0); 173 state->SetBoolean("has_resource", resource.get() != 0);
175 state->SetBoolean("resource_is_being_initialized", resource_is_being_initializ ed); 174 state->SetBoolean("resource_is_being_initialized", resource_is_being_initializ ed);
176 state->Set("raster_state", TileRasterStateAsValue(raster_state).release()); 175 state->Set("raster_state", TileRasterStateAsValue(raster_state).release());
177 state->Set("bin.0", TileManagerBinAsValue(bin[ACTIVE_TREE]).release()); 176 state->Set("bin.0", TileManagerBinAsValue(bin[ACTIVE_TREE]).release());
178 state->Set("bin.1", TileManagerBinAsValue(bin[PENDING_TREE]).release()); 177 state->Set("bin.1", TileManagerBinAsValue(bin[PENDING_TREE]).release());
179 state->Set("gpu_memmgr_stats_bin", TileManagerBinAsValue(bin[ACTIVE_TREE]).rel ease()); 178 state->Set("gpu_memmgr_stats_bin", TileManagerBinAsValue(bin[ACTIVE_TREE]).rel ease());
180 state->Set("resolution", TileResolutionAsValue(resolution).release()); 179 state->Set("resolution", TileResolutionAsValue(resolution).release());
181 state->Set("time_to_needed_in_seconds", MathUtil::asValueSafely(time_to_needed _in_seconds).release()); 180 state->Set("time_to_needed_in_seconds", MathUtil::asValueSafely(time_to_needed _in_seconds).release());
182 state->Set("distance_to_visible_in_pixels", MathUtil::asValueSafely(distance_t o_visible_in_pixels).release()); 181 state->Set("distance_to_visible_in_pixels", MathUtil::asValueSafely(distance_t o_visible_in_pixels).release());
183 return state.PassAs<base::Value>(); 182 return state.PassAs<base::Value>();
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 408
410 TRACE_EVENT_INSTANT1("cc", "DidManage", "state", 409 TRACE_EVENT_INSTANT1("cc", "DidManage", "state",
411 ValueToString(BasicStateAsValue())); 410 ValueToString(BasicStateAsValue()));
412 411
413 // Finally, kick the rasterizer. 412 // Finally, kick the rasterizer.
414 DispatchMoreTasks(); 413 DispatchMoreTasks();
415 } 414 }
416 415
417 void TileManager::CheckForCompletedTileUploads() { 416 void TileManager::CheckForCompletedTileUploads() {
418 while (!tiles_with_pending_set_pixels_.empty()) { 417 while (!tiles_with_pending_set_pixels_.empty()) {
419 ManagedTileState* mts = tiles_with_pending_set_pixels_.front(); 418 // Note that a scoped_refptr must be used because the unsetting of
419 // cannot_be_freed_ref may cause mts to be unregistered.
420 scoped_refptr<ManagedTileState> mts =
421 tiles_with_pending_set_pixels_.front();
420 DCHECK(mts->resource); 422 DCHECK(mts->resource);
421 423
422 // Set pixel tasks complete in the order they are posted. 424 // Set pixel tasks complete in the order they are posted.
423 if (!resource_pool_->resource_provider()->didSetPixelsComplete( 425 if (!resource_pool_->resource_provider()->didSetPixelsComplete(
424 mts->resource->id())) { 426 mts->resource->id())) {
425 break; 427 break;
426 } 428 }
427 429
428 if (mts->tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0 && 430 if (mts->tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0 &&
429 mts->tile->priority(ACTIVE_TREE).resolution == HIGH_RESOLUTION) 431 mts->tile->priority(ACTIVE_TREE).resolution == HIGH_RESOLUTION)
430 client_->DidUploadVisibleHighResolutionTile(); 432 client_->DidUploadVisibleHighResolutionTile();
431 433
432 // It's now safe to release the pixel buffer. 434 // It's now safe to release the pixel buffer.
433 resource_pool_->resource_provider()->releasePixelBuffer( 435 resource_pool_->resource_provider()->releasePixelBuffer(
434 mts->resource->id()); 436 mts->resource->id());
435 437
436 DidFinishTileInitialization(mts); 438 mts->resource_is_being_initialized = false;
439 mts->cannot_be_freed_ref = NULL;
437 440
438 bytes_pending_set_pixels_ -= mts->tile->bytes_consumed_if_allocated(); 441 bytes_pending_set_pixels_ -= mts->tile->bytes_consumed_if_allocated();
439 DidTileRasterStateChange(mts, IDLE_STATE); 442 DidTileRasterStateChange(mts, IDLE_STATE);
440 tiles_with_pending_set_pixels_.pop(); 443 tiles_with_pending_set_pixels_.pop();
441 } 444 }
442 445
443 DispatchMoreTasks(); 446 DispatchMoreTasks();
444 } 447 }
445 448
446 void TileManager::AbortPendingTileUploads() { 449 void TileManager::AbortPendingTileUploads() {
447 while (!tiles_with_pending_set_pixels_.empty()) { 450 while (!tiles_with_pending_set_pixels_.empty()) {
448 ManagedTileState* mts = tiles_with_pending_set_pixels_.front(); 451 // Note that a scoped_refptr must be used because the unsetting of
452 // cannot_be_freed_ref may cause mts to be unregistered.
453 scoped_refptr<ManagedTileState> mts =
454 tiles_with_pending_set_pixels_.front();
449 DCHECK(mts->resource); 455 DCHECK(mts->resource);
450 456
451 resource_pool_->resource_provider()->abortSetPixels( 457 resource_pool_->resource_provider()->abortSetPixels(
452 mts->resource->id()); 458 mts->resource->id());
453 resource_pool_->resource_provider()->releasePixelBuffer( 459 resource_pool_->resource_provider()->releasePixelBuffer(
454 mts->resource->id()); 460 mts->resource->id());
455 461
456 mts->resource_is_being_initialized = false; 462 mts->resource_is_being_initialized = false;
457 mts->can_be_freed = true; 463 mts->cannot_be_freed_ref = NULL;
458 mts->can_use_gpu_memory = false; 464 mts->can_use_gpu_memory = false;
459 FreeResourcesForTile(mts); 465 FreeResourcesForTile(mts);
460 466
461 bytes_pending_set_pixels_ -= mts->tile->bytes_consumed_if_allocated(); 467 bytes_pending_set_pixels_ -= mts->tile->bytes_consumed_if_allocated();
462 DidTileRasterStateChange(mts, IDLE_STATE); 468 DidTileRasterStateChange(mts, IDLE_STATE);
463 tiles_with_pending_set_pixels_.pop(); 469 tiles_with_pending_set_pixels_.pop();
464 } 470 }
465 } 471 }
466 472
467 void TileManager::GetMemoryStats( 473 void TileManager::GetMemoryStats(
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 // By clearing the tiles_that_need_to_be_rasterized_ vector and 592 // By clearing the tiles_that_need_to_be_rasterized_ vector and
587 // tiles_with_image_decoding_tasks_ list above we move all tiles 593 // tiles_with_image_decoding_tasks_ list above we move all tiles
588 // currently waiting for raster to idle state. 594 // currently waiting for raster to idle state.
589 // Call DidTileRasterStateChange() for each of these tiles to 595 // Call DidTileRasterStateChange() for each of these tiles to
590 // have this state change take effect. 596 // have this state change take effect.
591 // Some memory cannot be released. We figure out how much in this 597 // Some memory cannot be released. We figure out how much in this
592 // loop as well. 598 // loop as well.
593 for (TileVector::iterator it = live_or_allocated_tiles_.begin(); 599 for (TileVector::iterator it = live_or_allocated_tiles_.begin();
594 it != live_or_allocated_tiles_.end(); ++it) { 600 it != live_or_allocated_tiles_.end(); ++it) {
595 ManagedTileState* mts = *it; 601 ManagedTileState* mts = *it;
596 if (!mts->can_be_freed) 602 if (!mts->can_be_freed())
597 unreleasable_bytes += mts->tile->bytes_consumed_if_allocated(); 603 unreleasable_bytes += mts->tile->bytes_consumed_if_allocated();
598 if (mts->raster_state == WAITING_FOR_RASTER_STATE) 604 if (mts->raster_state == WAITING_FOR_RASTER_STATE)
599 DidTileRasterStateChange(mts, IDLE_STATE); 605 DidTileRasterStateChange(mts, IDLE_STATE);
600 } 606 }
601 607
602 size_t bytes_allocatable = global_state_.memory_limit_in_bytes - unreleasable_ bytes; 608 size_t bytes_allocatable = global_state_.memory_limit_in_bytes - unreleasable_ bytes;
603 size_t bytes_that_exceeded_memory_budget_in_now_bin = 0; 609 size_t bytes_that_exceeded_memory_budget_in_now_bin = 0;
604 size_t bytes_left = bytes_allocatable; 610 size_t bytes_left = bytes_allocatable;
605 for (TileVector::iterator it = live_or_allocated_tiles_.begin(); it != live_or _allocated_tiles_.end(); ++it) { 611 for (TileVector::iterator it = live_or_allocated_tiles_.begin(); it != live_or _allocated_tiles_.end(); ++it) {
606 ManagedTileState* mts = *it; 612 ManagedTileState* mts = *it;
607 size_t tile_bytes = mts->tile->bytes_consumed_if_allocated(); 613 size_t tile_bytes = mts->tile->bytes_consumed_if_allocated();
608 if (!mts->can_be_freed) 614 if (!mts->can_be_freed())
609 continue; 615 continue;
610 if (mts->bin[HIGH_PRIORITY_BIN] == NEVER_BIN && 616 if (mts->bin[HIGH_PRIORITY_BIN] == NEVER_BIN &&
611 mts->bin[LOW_PRIORITY_BIN] == NEVER_BIN) { 617 mts->bin[LOW_PRIORITY_BIN] == NEVER_BIN) {
612 mts->can_use_gpu_memory = false; 618 mts->can_use_gpu_memory = false;
613 FreeResourcesForTile(mts); 619 FreeResourcesForTile(mts);
614 continue; 620 continue;
615 } 621 }
616 if (tile_bytes > bytes_left) { 622 if (tile_bytes > bytes_left) {
617 mts->can_use_gpu_memory = false; 623 mts->can_use_gpu_memory = false;
618 if (mts->bin[HIGH_PRIORITY_BIN] == NOW_BIN || 624 if (mts->bin[HIGH_PRIORITY_BIN] == NOW_BIN ||
(...skipping 27 matching lines...) Expand all
646 bytes_that_exceeded_memory_budget_in_now_bin; 652 bytes_that_exceeded_memory_budget_in_now_bin;
647 653
648 // Reverse two tiles_that_need_* vectors such that pop_back gets 654 // Reverse two tiles_that_need_* vectors such that pop_back gets
649 // the highest priority tile. 655 // the highest priority tile.
650 std::reverse( 656 std::reverse(
651 tiles_that_need_to_be_rasterized_.begin(), 657 tiles_that_need_to_be_rasterized_.begin(),
652 tiles_that_need_to_be_rasterized_.end()); 658 tiles_that_need_to_be_rasterized_.end());
653 } 659 }
654 660
655 void TileManager::FreeResourcesForTile(ManagedTileState* mts) { 661 void TileManager::FreeResourcesForTile(ManagedTileState* mts) {
656 DCHECK(mts->can_be_freed); 662 DCHECK(mts->can_be_freed());
657 if (mts->resource) 663 if (mts->resource)
658 resource_pool_->ReleaseResource(mts->resource.Pass()); 664 resource_pool_->ReleaseResource(mts->resource.Pass());
659 } 665 }
660 666
661 bool TileManager::CanDispatchRasterTask(ManagedTileState* mts) { 667 bool TileManager::CanDispatchRasterTask(ManagedTileState* mts) {
662 if (raster_worker_pool_->IsBusy()) 668 if (raster_worker_pool_->IsBusy())
663 return false; 669 return false;
664 size_t new_bytes_pending = bytes_pending_set_pixels_; 670 size_t new_bytes_pending = bytes_pending_set_pixels_;
665 new_bytes_pending += mts->tile->bytes_consumed_if_allocated(); 671 new_bytes_pending += mts->tile->bytes_consumed_if_allocated();
666 return new_bytes_pending <= kMaxPendingUploadBytes && 672 return new_bytes_pending <= kMaxPendingUploadBytes &&
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 787
782 scoped_ptr<ResourcePool::Resource> TileManager::PrepareTileForRaster( 788 scoped_ptr<ResourcePool::Resource> TileManager::PrepareTileForRaster(
783 ManagedTileState* mts) { 789 ManagedTileState* mts) {
784 DCHECK(mts->can_use_gpu_memory); 790 DCHECK(mts->can_use_gpu_memory);
785 scoped_ptr<ResourcePool::Resource> resource = 791 scoped_ptr<ResourcePool::Resource> resource =
786 resource_pool_->AcquireResource(mts->tile->tile_size_.size(), 792 resource_pool_->AcquireResource(mts->tile->tile_size_.size(),
787 mts->tile->format_); 793 mts->tile->format_);
788 resource_pool_->resource_provider()->acquirePixelBuffer(resource->id()); 794 resource_pool_->resource_provider()->acquirePixelBuffer(resource->id());
789 795
790 mts->resource_is_being_initialized = true; 796 mts->resource_is_being_initialized = true;
791 mts->can_be_freed = false; 797 mts->cannot_be_freed_ref = mts;
792 798
793 DidTileRasterStateChange(mts, RASTER_STATE); 799 DidTileRasterStateChange(mts, RASTER_STATE);
794 return resource.Pass(); 800 return resource.Pass();
795 } 801 }
796 802
797 void TileManager::DispatchOneRasterTask(scoped_refptr<ManagedTileState> mts) { 803 void TileManager::DispatchOneRasterTask(scoped_refptr<ManagedTileState> mts) {
798 TRACE_EVENT0("cc", "TileManager::DispatchOneRasterTask"); 804 TRACE_EVENT0("cc", "TileManager::DispatchOneRasterTask");
799 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(mts); 805 scoped_ptr<ResourcePool::Resource> resource = PrepareTileForRaster(mts);
800 ResourceProvider::ResourceId resource_id = resource->id(); 806 ResourceProvider::ResourceId resource_id = resource->id();
801 807
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 839
834 void TileManager::OnRasterCompleted( 840 void TileManager::OnRasterCompleted(
835 scoped_refptr<ManagedTileState> mts, 841 scoped_refptr<ManagedTileState> mts,
836 scoped_ptr<ResourcePool::Resource> resource, 842 scoped_ptr<ResourcePool::Resource> resource,
837 int manage_tiles_call_count_when_dispatched) { 843 int manage_tiles_call_count_when_dispatched) {
838 TRACE_EVENT0("cc", "TileManager::OnRasterCompleted"); 844 TRACE_EVENT0("cc", "TileManager::OnRasterCompleted");
839 845
840 // Release raster resources. 846 // Release raster resources.
841 resource_pool_->resource_provider()->unmapPixelBuffer(resource->id()); 847 resource_pool_->resource_provider()->unmapPixelBuffer(resource->id());
842 848
843 mts->can_be_freed = true; 849 mts->cannot_be_freed_ref = NULL;
844 850
845 // Tile can be freed after the completion of the raster task. Call 851 // Tile can be freed after the completion of the raster task. Call
846 // AssignGpuMemoryToTiles() to re-assign gpu memory to highest priority 852 // AssignGpuMemoryToTiles() to re-assign gpu memory to highest priority
847 // tiles if ManageTiles() was called since task was dispatched. The result 853 // tiles if ManageTiles() was called since task was dispatched. The result
848 // of this could be that this tile is no longer allowed to use gpu 854 // of this could be that this tile is no longer allowed to use gpu
849 // memory and in that case we need to abort initialization and free all 855 // memory and in that case we need to abort initialization and free all
850 // associated resources before calling DispatchMoreTasks(). 856 // associated resources before calling DispatchMoreTasks().
851 if (manage_tiles_call_count_when_dispatched != manage_tiles_call_count_) 857 if (manage_tiles_call_count_when_dispatched != manage_tiles_call_count_)
852 AssignGpuMemoryToTiles(); 858 AssignGpuMemoryToTiles();
853 859
854 // Finish resource initialization if |can_use_gpu_memory| is true. 860 // Finish resource initialization if |can_use_gpu_memory| is true.
855 if (mts->can_use_gpu_memory) { 861 if (mts->can_use_gpu_memory) {
856 // The component order may be bgra if we're uploading bgra pixels to rgba 862 // The component order may be bgra if we're uploading bgra pixels to rgba
857 // texture. Mark contents as swizzled if image component order is 863 // texture. Mark contents as swizzled if image component order is
858 // different than texture format. 864 // different than texture format.
859 mts->contents_swizzled = 865 mts->contents_swizzled =
860 !PlatformColor::sameComponentOrder(mts->tile->format_); 866 !PlatformColor::sameComponentOrder(mts->tile->format_);
861 867
862 // Tile resources can't be freed until upload has completed. 868 // Tile resources can't be freed until upload has completed.
863 mts->can_be_freed = false; 869 mts->cannot_be_freed_ref = mts;
864 870
865 resource_pool_->resource_provider()->beginSetPixels(resource->id()); 871 resource_pool_->resource_provider()->beginSetPixels(resource->id());
866 has_performed_uploads_since_last_flush_ = true; 872 has_performed_uploads_since_last_flush_ = true;
867 873
868 mts->resource = resource.Pass(); 874 mts->resource = resource.Pass();
869 875
870 bytes_pending_set_pixels_ += mts->tile->bytes_consumed_if_allocated(); 876 bytes_pending_set_pixels_ += mts->tile->bytes_consumed_if_allocated();
871 DidTileRasterStateChange(mts, SET_PIXELS_STATE); 877 DidTileRasterStateChange(mts, SET_PIXELS_STATE);
872 tiles_with_pending_set_pixels_.push(mts); 878 tiles_with_pending_set_pixels_.push(mts);
873 } else { 879 } else {
874 resource_pool_->resource_provider()->releasePixelBuffer(resource->id()); 880 resource_pool_->resource_provider()->releasePixelBuffer(resource->id());
875 resource_pool_->ReleaseResource(resource.Pass()); 881 resource_pool_->ReleaseResource(resource.Pass());
876 mts->resource_is_being_initialized = false; 882 mts->resource_is_being_initialized = false;
877 DidTileRasterStateChange(mts, IDLE_STATE); 883 DidTileRasterStateChange(mts, IDLE_STATE);
878 } 884 }
879 } 885 }
880 886
881 void TileManager::OnRasterTaskCompleted( 887 void TileManager::OnRasterTaskCompleted(
882 scoped_refptr<ManagedTileState> mts, 888 scoped_refptr<ManagedTileState> mts,
883 scoped_ptr<ResourcePool::Resource> resource, 889 scoped_ptr<ResourcePool::Resource> resource,
884 int manage_tiles_call_count_when_dispatched) { 890 int manage_tiles_call_count_when_dispatched) {
885 OnRasterCompleted(mts, resource.Pass(), 891 OnRasterCompleted(mts, resource.Pass(),
886 manage_tiles_call_count_when_dispatched); 892 manage_tiles_call_count_when_dispatched);
887 } 893 }
888 894
889 void TileManager::DidFinishTileInitialization(ManagedTileState* mts) {
890 DCHECK(mts->resource);
891 mts->resource_is_being_initialized = false;
892 mts->can_be_freed = true;
893 }
894
895 void TileManager::DidTileRasterStateChange( 895 void TileManager::DidTileRasterStateChange(
896 ManagedTileState* mts, TileRasterState state) { 896 ManagedTileState* mts, TileRasterState state) {
897 DCHECK_LT(state, NUM_STATES); 897 DCHECK_LT(state, NUM_STATES);
898 898
899 for (int i = 0; i < NUM_TREES; ++i) { 899 for (int i = 0; i < NUM_TREES; ++i) {
900 // Decrement count for current state. 900 // Decrement count for current state.
901 --raster_state_count_[mts->raster_state][i][mts->tree_bin[i]]; 901 --raster_state_count_[mts->raster_state][i][mts->tree_bin[i]];
902 DCHECK_GE(raster_state_count_[mts->raster_state][i][mts->tree_bin[i]], 0); 902 DCHECK_GE(raster_state_count_[mts->raster_state][i][mts->tree_bin[i]], 0);
903 903
904 // Increment count for new state. 904 // Increment count for new state.
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 decode_begin_time = base::TimeTicks::HighResNow(); 996 decode_begin_time = base::TimeTicks::HighResNow();
997 pixel_ref->Decode(); 997 pixel_ref->Decode();
998 if (stats) { 998 if (stats) {
999 stats->totalDeferredImageDecodeCount++; 999 stats->totalDeferredImageDecodeCount++;
1000 stats->totalDeferredImageDecodeTime += 1000 stats->totalDeferredImageDecodeTime +=
1001 base::TimeTicks::HighResNow() - decode_begin_time; 1001 base::TimeTicks::HighResNow() - decode_begin_time;
1002 } 1002 }
1003 } 1003 }
1004 1004
1005 } // namespace cc 1005 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tile_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698