Chromium Code Reviews| Index: cc/tiles/tile_manager.cc |
| diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc |
| index ba60908743fc18500741ad10d7bae99d633cfbae..b098cf4bad8d70ec6538984091f5931bdd2aec54 100644 |
| --- a/cc/tiles/tile_manager.cc |
| +++ b/cc/tiles/tile_manager.cc |
| @@ -543,7 +543,7 @@ void TileManager::AssignGpuMemoryToTiles( |
| MemoryUsage memory_required_by_tile_to_be_scheduled; |
| if (!tile->raster_task_.get()) { |
| memory_required_by_tile_to_be_scheduled = MemoryUsage::FromConfig( |
| - tile->desired_texture_size(), tile_task_runner_->GetResourceFormat()); |
| + tile->desired_texture_size(), DetermineResourceFormat(tile)); |
| } |
| bool tile_is_needed_now = priority.priority_bin == TilePriority::NOW; |
| @@ -687,12 +687,12 @@ scoped_refptr<RasterTask> TileManager::CreateRasterTask( |
| } |
| if (resource) { |
| resource_content_id = tile->invalidated_id(); |
| - DCHECK_EQ(tile_task_runner_->GetResourceFormat(), resource->format()); |
| + DCHECK_EQ(DetermineResourceFormat(tile), resource->format()); |
| DCHECK_EQ(tile->desired_texture_size().ToString(), |
| resource->size().ToString()); |
| } else { |
| - resource = resource_pool_->AcquireResource( |
| - tile->desired_texture_size(), tile_task_runner_->GetResourceFormat()); |
| + resource = resource_pool_->AcquireResource(tile->desired_texture_size(), |
| + DetermineResourceFormat(tile)); |
| } |
| const ScopedResource* const_resource = resource.get(); |
| @@ -791,8 +791,7 @@ void TileManager::UpdateTileDrawInfo( |
| DCHECK(resource); |
| draw_info.set_use_resource(); |
| draw_info.resource_ = resource.Pass(); |
| - draw_info.contents_swizzled_ = |
| - tile_task_runner_->GetResourceRequiresSwizzle(); |
| + draw_info.contents_swizzled_ = DetermineResourceRequiresSwizzle(tile); |
| } |
| client_->NotifyTileStateChanged(tile); |
| } |
| @@ -968,6 +967,20 @@ void TileManager::CheckIfMoreTilesNeedToBePrepared() { |
| ready_to_activate_check_notifier_.Schedule(); |
| } |
| +ResourceFormat TileManager::DetermineResourceFormat(const Tile* tile) const { |
| + bool dont_compress = tile->desired_texture_size().width() % 4 != 0 || |
| + tile->desired_texture_size().height() % 4 != 0; |
|
reveman
2015/07/21 04:26:33
Can we instead clamp tile size to multiple of 4 if
|
| + return tile_task_runner_->GetResourceFormat(dont_compress, |
| + !tile->is_opaque()); |
| +} |
| + |
| +bool TileManager::DetermineResourceRequiresSwizzle(const Tile* tile) const { |
| + bool dont_compress = tile->desired_texture_size().width() % 4 != 0 || |
| + tile->desired_texture_size().height() % 4 != 0; |
| + return tile_task_runner_->GetResourceRequiresSwizzle(dont_compress, |
| + !tile->is_opaque()); |
| +} |
| + |
| TileManager::MemoryUsage::MemoryUsage() : memory_bytes_(0), resource_count_(0) { |
| } |