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

Unified Diff: cc/tiles/tile_manager.cc

Issue 1197423003: Remaining code for basic tile compression functionality. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Enable tile compression for one copy Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
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) {
}

Powered by Google App Engine
This is Rietveld 408576698