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

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

Issue 671653005: SetNeedsRedraw directly when updating a visible tile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pinchblurmerge-test: tweak Created 6 years, 1 month 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
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 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 Rasterizer* rasterizer, 212 Rasterizer* rasterizer,
213 RenderingStatsInstrumentation* rendering_stats_instrumentation, 213 RenderingStatsInstrumentation* rendering_stats_instrumentation,
214 size_t scheduled_raster_task_limit) 214 size_t scheduled_raster_task_limit)
215 : client_(client), 215 : client_(client),
216 task_runner_(task_runner), 216 task_runner_(task_runner),
217 resource_pool_(resource_pool), 217 resource_pool_(resource_pool),
218 rasterizer_(rasterizer), 218 rasterizer_(rasterizer),
219 scheduled_raster_task_limit_(scheduled_raster_task_limit), 219 scheduled_raster_task_limit_(scheduled_raster_task_limit),
220 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), 220 all_tiles_that_need_to_be_rasterized_are_scheduled_(true),
221 rendering_stats_instrumentation_(rendering_stats_instrumentation), 221 rendering_stats_instrumentation_(rendering_stats_instrumentation),
222 did_initialize_visible_tile_(false),
223 did_check_for_completed_tasks_since_last_schedule_tasks_(true), 222 did_check_for_completed_tasks_since_last_schedule_tasks_(true),
224 did_oom_on_last_assign_(false), 223 did_oom_on_last_assign_(false),
225 ready_to_activate_check_notifier_( 224 ready_to_activate_check_notifier_(
226 task_runner_.get(), 225 task_runner_.get(),
227 base::Bind(&TileManager::CheckIfReadyToActivate, 226 base::Bind(&TileManager::CheckIfReadyToActivate,
228 base::Unretained(this))), 227 base::Unretained(this))),
229 ready_to_draw_check_notifier_(task_runner_.get(), 228 ready_to_draw_check_notifier_(task_runner_.get(),
230 base::Bind(&TileManager::CheckIfReadyToDraw, 229 base::Bind(&TileManager::CheckIfReadyToDraw,
231 base::Unretained(this))) { 230 base::Unretained(this))) {
232 rasterizer_->SetClient(this); 231 rasterizer_->SetClient(this);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 363
365 if (ready_to_activate) { 364 if (ready_to_activate) {
366 DCHECK(IsReadyToActivate()); 365 DCHECK(IsReadyToActivate());
367 ready_to_activate_check_notifier_.Schedule(); 366 ready_to_activate_check_notifier_.Schedule();
368 } 367 }
369 raster_priority_queue_.Reset(); 368 raster_priority_queue_.Reset();
370 return; 369 return;
371 } 370 }
372 371
373 if (task_set == REQUIRED_FOR_DRAW) { 372 if (task_set == REQUIRED_FOR_DRAW) {
374 TRACE_EVENT1("cc", 373 TRACE_EVENT1("cc", "TileManager::DidFinishRunningTasks", "task_set",
375 "TileManager::DidFinishRunningTasks",
376 "task_set",
377 "REQUIRED_FOR_DRAW"); 374 "REQUIRED_FOR_DRAW");
378 ready_to_draw_check_notifier_.Schedule(); 375 ready_to_draw_check_notifier_.Schedule();
379 return; 376 return;
380 } 377 }
381 378
382 if (task_set == REQUIRED_FOR_ACTIVATION) { 379 if (task_set == REQUIRED_FOR_ACTIVATION) {
383 TRACE_EVENT1("cc", 380 TRACE_EVENT1("cc",
384 "TileManager::DidFinishRunningTasks", 381 "TileManager::DidFinishRunningTasks",
385 "task_set", 382 "task_set",
386 "REQUIRED_FOR_ACTIVATION"); 383 "REQUIRED_FOR_ACTIVATION");
(...skipping 28 matching lines...) Expand all
415 "state", 412 "state",
416 BasicStateAsValue()); 413 BasicStateAsValue());
417 414
418 TRACE_COUNTER_ID1("cc", 415 TRACE_COUNTER_ID1("cc",
419 "unused_memory_bytes", 416 "unused_memory_bytes",
420 this, 417 this,
421 resource_pool_->total_memory_usage_bytes() - 418 resource_pool_->total_memory_usage_bytes() -
422 resource_pool_->acquired_memory_usage_bytes()); 419 resource_pool_->acquired_memory_usage_bytes());
423 } 420 }
424 421
425 bool TileManager::UpdateVisibleTiles() { 422 void TileManager::UpdateVisibleTiles() {
426 TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles"); 423 TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles");
427 424
428 rasterizer_->CheckForCompletedTasks(); 425 rasterizer_->CheckForCompletedTasks();
429 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 426 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
430 427
431 TRACE_EVENT_INSTANT1( 428 TRACE_EVENT_INSTANT1(
432 "cc", 429 "cc",
433 "DidUpdateVisibleTiles", 430 "DidUpdateVisibleTiles",
434 TRACE_EVENT_SCOPE_THREAD, 431 TRACE_EVENT_SCOPE_THREAD,
435 "stats", 432 "stats",
436 RasterTaskCompletionStatsAsValue(update_visible_tiles_stats_)); 433 RasterTaskCompletionStatsAsValue(update_visible_tiles_stats_));
437 update_visible_tiles_stats_ = RasterTaskCompletionStats(); 434 update_visible_tiles_stats_ = RasterTaskCompletionStats();
438
439 bool did_initialize_visible_tile = did_initialize_visible_tile_;
440 did_initialize_visible_tile_ = false;
441 return did_initialize_visible_tile;
442 } 435 }
443 436
444 scoped_refptr<base::debug::ConvertableToTraceFormat> 437 scoped_refptr<base::debug::ConvertableToTraceFormat>
445 TileManager::BasicStateAsValue() const { 438 TileManager::BasicStateAsValue() const {
446 scoped_refptr<base::debug::TracedValue> value = 439 scoped_refptr<base::debug::TracedValue> value =
447 new base::debug::TracedValue(); 440 new base::debug::TracedValue();
448 BasicStateAsValueInto(value.get()); 441 BasicStateAsValueInto(value.get());
449 return value; 442 return value;
450 } 443 }
451 444
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 ++update_visible_tiles_stats_.completed_count; 803 ++update_visible_tiles_stats_.completed_count;
811 804
812 if (analysis.is_solid_color) { 805 if (analysis.is_solid_color) {
813 mts.draw_info.set_solid_color(analysis.solid_color); 806 mts.draw_info.set_solid_color(analysis.solid_color);
814 resource_pool_->ReleaseResource(resource.Pass()); 807 resource_pool_->ReleaseResource(resource.Pass());
815 } else { 808 } else {
816 mts.draw_info.set_use_resource(); 809 mts.draw_info.set_use_resource();
817 mts.draw_info.resource_ = resource.Pass(); 810 mts.draw_info.resource_ = resource.Pass();
818 } 811 }
819 812
820 if (tile->priority(ACTIVE_TREE).distance_to_visible == 0.f)
821 did_initialize_visible_tile_ = true;
822
823 client_->NotifyTileStateChanged(tile); 813 client_->NotifyTileStateChanged(tile);
824 } 814 }
825 815
826 scoped_refptr<Tile> TileManager::CreateTile(RasterSource* raster_source, 816 scoped_refptr<Tile> TileManager::CreateTile(RasterSource* raster_source,
827 const gfx::Size& tile_size, 817 const gfx::Size& tile_size,
828 const gfx::Rect& content_rect, 818 const gfx::Rect& content_rect,
829 float contents_scale, 819 float contents_scale,
830 int layer_id, 820 int layer_id,
831 int source_frame_number, 821 int source_frame_number,
832 int flags) { 822 int flags) {
(...skipping 28 matching lines...) Expand all
861 return false; 851 return false;
862 } 852 }
863 853
864 return true; 854 return true;
865 } 855 }
866 856
867 bool TileManager::IsReadyToDraw() const { 857 bool TileManager::IsReadyToDraw() const {
868 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers(); 858 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers();
869 859
870 for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin(); 860 for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin();
871 it != layers.end(); 861 it != layers.end(); ++it) {
872 ++it) {
873 if (!(*it)->AllTilesRequiredForDrawAreReadyToDraw()) 862 if (!(*it)->AllTilesRequiredForDrawAreReadyToDraw())
874 return false; 863 return false;
875 } 864 }
876 865
877 return true; 866 return true;
878 } 867 }
879 868
880 void TileManager::CheckIfReadyToActivate() { 869 void TileManager::CheckIfReadyToActivate() {
881 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToActivate"); 870 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToActivate");
882 871
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 result -= other; 930 result -= other;
942 return result; 931 return result;
943 } 932 }
944 933
945 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { 934 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const {
946 return memory_bytes_ > limit.memory_bytes_ || 935 return memory_bytes_ > limit.memory_bytes_ ||
947 resource_count_ > limit.resource_count_; 936 resource_count_ > limit.resource_count_;
948 } 937 }
949 938
950 } // namespace cc 939 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698