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

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 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 &memory_allocated_bytes, 570 &memory_allocated_bytes,
571 &memory_used_bytes); 571 &memory_used_bytes);
572 requirements->SetInteger("memory_required_bytes", memory_required_bytes); 572 requirements->SetInteger("memory_required_bytes", memory_required_bytes);
573 requirements->SetInteger("memory_nice_to_have_bytes", 573 requirements->SetInteger("memory_nice_to_have_bytes",
574 memory_nice_to_have_bytes); 574 memory_nice_to_have_bytes);
575 requirements->SetInteger("memory_allocated_bytes", memory_allocated_bytes); 575 requirements->SetInteger("memory_allocated_bytes", memory_allocated_bytes);
576 requirements->SetInteger("memory_used_bytes", memory_used_bytes); 576 requirements->SetInteger("memory_used_bytes", memory_used_bytes);
577 return requirements.PassAs<base::Value>(); 577 return requirements.PassAs<base::Value>();
578 } 578 }
579 579
580 RasterMode TileManager::DetermineRasterMode(const Tile* tile) const {
581 DCHECK(tile);
582 DCHECK(tile->picture_pile());
583
584 const ManagedTileState& mts = tile->managed_state();
585 RasterMode current_mode = mts.raster_mode;
586
587 RasterMode raster_mode = HIGH_QUALITY_RASTER_MODE;
588 if (tile->managed_state().resolution == LOW_RESOLUTION)
589 raster_mode = LOW_QUALITY_RASTER_MODE;
590 else if (tile->can_use_lcd_text())
591 raster_mode = HIGH_QUALITY_RASTER_MODE;
592 else if (mts.tile_versions[current_mode].has_text_ ||
593 !mts.tile_versions[current_mode].IsReadyToDraw())
594 raster_mode = HIGH_QUALITY_NO_LCD_RASTER_MODE;
595
596 return std::min(raster_mode, current_mode);
597 }
598
599 void TileManager::AssignGpuMemoryToTiles( 580 void TileManager::AssignGpuMemoryToTiles(
600 PrioritizedTileSet* tiles, 581 PrioritizedTileSet* tiles,
601 TileVector* tiles_that_need_to_be_rasterized) { 582 TileVector* tiles_that_need_to_be_rasterized) {
602 TRACE_EVENT0("cc", "TileManager::AssignGpuMemoryToTiles"); 583 TRACE_EVENT0("cc", "TileManager::AssignGpuMemoryToTiles");
603 584
604 // Maintain the list of released resources that can potentially be re-used 585 // Maintain the list of released resources that can potentially be re-used
605 // or deleted. 586 // or deleted.
606 // If this operation becomes expensive too, only do this after some 587 // If this operation becomes expensive too, only do this after some
607 // resource(s) was returned. Note that in that case, one also need to 588 // resource(s) was returned. Note that in that case, one also need to
608 // invalidate when releasing some resource from the pool. 589 // invalidate when releasing some resource from the pool.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 size_t max_raster_bytes = max_raster_usage_bytes_ / 2; 629 size_t max_raster_bytes = max_raster_usage_bytes_ / 2;
649 size_t raster_bytes = 0; 630 size_t raster_bytes = 0;
650 631
651 unsigned schedule_priority = 1u; 632 unsigned schedule_priority = 1u;
652 for (PrioritizedTileSet::Iterator it(tiles, true); it; ++it) { 633 for (PrioritizedTileSet::Iterator it(tiles, true); it; ++it) {
653 Tile* tile = *it; 634 Tile* tile = *it;
654 ManagedTileState& mts = tile->managed_state(); 635 ManagedTileState& mts = tile->managed_state();
655 636
656 mts.scheduled_priority = schedule_priority++; 637 mts.scheduled_priority = schedule_priority++;
657 638
658 mts.raster_mode = DetermineRasterMode(tile); 639 mts.raster_mode = tile->DetermineOverallRasterMode();
659 640
660 ManagedTileState::TileVersion& tile_version = 641 ManagedTileState::TileVersion& tile_version =
661 mts.tile_versions[mts.raster_mode]; 642 mts.tile_versions[mts.raster_mode];
662 643
663 // If this tile doesn't need a resource, then nothing to do. 644 // If this tile doesn't need a resource, then nothing to do.
664 if (!tile_version.requires_resource()) 645 if (!tile_version.requires_resource())
665 continue; 646 continue;
666 647
667 // If the tile is not needed, free it up. 648 // If the tile is not needed, free it up.
668 if (mts.bin == NEVER_BIN) { 649 if (mts.bin == NEVER_BIN) {
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 flags)); 1004 flags));
1024 DCHECK(tiles_.find(tile->id()) == tiles_.end()); 1005 DCHECK(tiles_.find(tile->id()) == tiles_.end());
1025 1006
1026 tiles_[tile->id()] = tile; 1007 tiles_[tile->id()] = tile;
1027 used_layer_counts_[tile->layer_id()]++; 1008 used_layer_counts_[tile->layer_id()]++;
1028 prioritized_tiles_dirty_ = true; 1009 prioritized_tiles_dirty_ = true;
1029 return tile; 1010 return tile;
1030 } 1011 }
1031 1012
1032 } // namespace cc 1013 } // namespace cc
OLDNEW
« cc/resources/picture_layer_tiling_unittest.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