Commit 7c2cdd21 authored by nduca@chromium.org's avatar nduca@chromium.org

[cc] Only NOW-binned tiles should contribute to over-memory accounting

R=reveman,ccameron
BUG=174572


Review URL: https://chromiumcodereview.appspot.com/12208123

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181988 0039d316-1c4b-4281-b951-d872f2087c98
parent 84ad3eaa
...@@ -574,7 +574,7 @@ void TileManager::AssignGpuMemoryToTiles() { ...@@ -574,7 +574,7 @@ void TileManager::AssignGpuMemoryToTiles() {
} }
size_t bytes_allocatable = global_state_.memory_limit_in_bytes - unreleasable_bytes; size_t bytes_allocatable = global_state_.memory_limit_in_bytes - unreleasable_bytes;
size_t bytes_that_exceeded_memory_budget = 0; size_t bytes_that_exceeded_memory_budget_in_now_bin = 0;
size_t bytes_left = bytes_allocatable; size_t bytes_left = bytes_allocatable;
for (TileVector::iterator it = tiles_.begin(); it != tiles_.end(); ++it) { for (TileVector::iterator it = tiles_.begin(); it != tiles_.end(); ++it) {
Tile* tile = *it; Tile* tile = *it;
...@@ -590,7 +590,9 @@ void TileManager::AssignGpuMemoryToTiles() { ...@@ -590,7 +590,9 @@ void TileManager::AssignGpuMemoryToTiles() {
} }
if (tile_bytes > bytes_left) { if (tile_bytes > bytes_left) {
managed_tile_state.can_use_gpu_memory = false; managed_tile_state.can_use_gpu_memory = false;
bytes_that_exceeded_memory_budget += tile_bytes; if (managed_tile_state.bin[HIGH_PRIORITY_BIN] == NOW_BIN ||
managed_tile_state.bin[LOW_PRIORITY_BIN] == NOW_BIN)
bytes_that_exceeded_memory_budget_in_now_bin += tile_bytes;
FreeResourcesForTile(tile); FreeResourcesForTile(tile);
continue; continue;
} }
...@@ -603,11 +605,12 @@ void TileManager::AssignGpuMemoryToTiles() { ...@@ -603,11 +605,12 @@ void TileManager::AssignGpuMemoryToTiles() {
} }
} }
ever_exceeded_memory_budget_ |= bytes_that_exceeded_memory_budget > 0; ever_exceeded_memory_budget_ |=
bytes_that_exceeded_memory_budget_in_now_bin > 0;
if (ever_exceeded_memory_budget_) { if (ever_exceeded_memory_budget_) {
TRACE_COUNTER_ID2("cc", "over_memory_budget", this, TRACE_COUNTER_ID2("cc", "over_memory_budget", this,
"budget", global_state_.memory_limit_in_bytes, "budget", global_state_.memory_limit_in_bytes,
"over", bytes_that_exceeded_memory_budget); "over", bytes_that_exceeded_memory_budget_in_now_bin);
} }
memory_stats_from_last_assign_.total_budget_in_bytes = memory_stats_from_last_assign_.total_budget_in_bytes =
global_state_.memory_limit_in_bytes; global_state_.memory_limit_in_bytes;
...@@ -615,7 +618,7 @@ void TileManager::AssignGpuMemoryToTiles() { ...@@ -615,7 +618,7 @@ void TileManager::AssignGpuMemoryToTiles() {
bytes_allocatable - bytes_left; bytes_allocatable - bytes_left;
memory_stats_from_last_assign_.bytes_unreleasable = unreleasable_bytes; memory_stats_from_last_assign_.bytes_unreleasable = unreleasable_bytes;
memory_stats_from_last_assign_.bytes_over = memory_stats_from_last_assign_.bytes_over =
bytes_that_exceeded_memory_budget; bytes_that_exceeded_memory_budget_in_now_bin;
// Reverse two tiles_that_need_* vectors such that pop_back gets // Reverse two tiles_that_need_* vectors such that pop_back gets
// the highest priority tile. // the highest priority tile.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment