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

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

Issue 183663003: cc: Add tiling raster tile iterators. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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
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/resources/tile_manager.h" 5 #include "cc/resources/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 10
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 &memory_allocated_bytes, 563 &memory_allocated_bytes,
564 &memory_used_bytes); 564 &memory_used_bytes);
565 requirements->SetInteger("memory_required_bytes", memory_required_bytes); 565 requirements->SetInteger("memory_required_bytes", memory_required_bytes);
566 requirements->SetInteger("memory_nice_to_have_bytes", 566 requirements->SetInteger("memory_nice_to_have_bytes",
567 memory_nice_to_have_bytes); 567 memory_nice_to_have_bytes);
568 requirements->SetInteger("memory_allocated_bytes", memory_allocated_bytes); 568 requirements->SetInteger("memory_allocated_bytes", memory_allocated_bytes);
569 requirements->SetInteger("memory_used_bytes", memory_used_bytes); 569 requirements->SetInteger("memory_used_bytes", memory_used_bytes);
570 return requirements.PassAs<base::Value>(); 570 return requirements.PassAs<base::Value>();
571 } 571 }
572 572
573 RasterMode TileManager::DetermineRasterMode(const Tile* tile) const {
574 DCHECK(tile);
575 DCHECK(tile->picture_pile());
576
577 const ManagedTileState& mts = tile->managed_state();
578 RasterMode current_mode = mts.raster_mode;
579
580 RasterMode raster_mode = HIGH_QUALITY_RASTER_MODE;
581 if (tile->managed_state().resolution == LOW_RESOLUTION)
582 raster_mode = LOW_QUALITY_RASTER_MODE;
583 else if (tile->can_use_lcd_text())
584 raster_mode = HIGH_QUALITY_RASTER_MODE;
585 else if (mts.tile_versions[current_mode].has_text_ ||
586 !mts.tile_versions[current_mode].IsReadyToDraw())
587 raster_mode = HIGH_QUALITY_NO_LCD_RASTER_MODE;
588
589 return std::min(raster_mode, current_mode);
590 }
591
592 void TileManager::AssignGpuMemoryToTiles( 573 void TileManager::AssignGpuMemoryToTiles(
593 PrioritizedTileSet* tiles, 574 PrioritizedTileSet* tiles,
594 TileVector* tiles_that_need_to_be_rasterized) { 575 TileVector* tiles_that_need_to_be_rasterized) {
595 TRACE_EVENT0("cc", "TileManager::AssignGpuMemoryToTiles"); 576 TRACE_EVENT0("cc", "TileManager::AssignGpuMemoryToTiles");
596 577
597 // Maintain the list of released resources that can potentially be re-used 578 // Maintain the list of released resources that can potentially be re-used
598 // or deleted. 579 // or deleted.
599 // If this operation becomes expensive too, only do this after some 580 // If this operation becomes expensive too, only do this after some
600 // resource(s) was returned. Note that in that case, one also need to 581 // resource(s) was returned. Note that in that case, one also need to
601 // invalidate when releasing some resource from the pool. 582 // invalidate when releasing some resource from the pool.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 size_t max_raster_bytes = max_raster_usage_bytes_ / 2; 622 size_t max_raster_bytes = max_raster_usage_bytes_ / 2;
642 size_t raster_bytes = 0; 623 size_t raster_bytes = 0;
643 624
644 unsigned schedule_priority = 1u; 625 unsigned schedule_priority = 1u;
645 for (PrioritizedTileSet::Iterator it(tiles, true); it; ++it) { 626 for (PrioritizedTileSet::Iterator it(tiles, true); it; ++it) {
646 Tile* tile = *it; 627 Tile* tile = *it;
647 ManagedTileState& mts = tile->managed_state(); 628 ManagedTileState& mts = tile->managed_state();
648 629
649 mts.scheduled_priority = schedule_priority++; 630 mts.scheduled_priority = schedule_priority++;
650 631
651 mts.raster_mode = DetermineRasterMode(tile); 632 mts.raster_mode = tile->DetermineOverallRasterMode();
652 633
653 ManagedTileState::TileVersion& tile_version = 634 ManagedTileState::TileVersion& tile_version =
654 mts.tile_versions[mts.raster_mode]; 635 mts.tile_versions[mts.raster_mode];
655 636
656 // If this tile doesn't need a resource, then nothing to do. 637 // If this tile doesn't need a resource, then nothing to do.
657 if (!tile_version.requires_resource()) 638 if (!tile_version.requires_resource())
658 continue; 639 continue;
659 640
660 // If the tile is not needed, free it up. 641 // If the tile is not needed, free it up.
661 if (mts.bin == NEVER_BIN) { 642 if (mts.bin == NEVER_BIN) {
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 flags)); 979 flags));
999 DCHECK(tiles_.find(tile->id()) == tiles_.end()); 980 DCHECK(tiles_.find(tile->id()) == tiles_.end());
1000 981
1001 tiles_[tile->id()] = tile; 982 tiles_[tile->id()] = tile;
1002 used_layer_counts_[tile->layer_id()]++; 983 used_layer_counts_[tile->layer_id()]++;
1003 prioritized_tiles_dirty_ = true; 984 prioritized_tiles_dirty_ = true;
1004 return tile; 985 return tile;
1005 } 986 }
1006 987
1007 } // namespace cc 988 } // namespace cc
OLDNEW
« cc/resources/picture_layer_tiling.cc ('K') | « cc/resources/tile_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698