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

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

Issue 667053003: cc: Consider visible rect for update tile priority early out. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update Created 6 years, 2 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
« no previous file with comments | « cc/resources/picture_layer_tiling.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/picture_layer_tiling.h" 5 #include "cc/resources/picture_layer_tiling.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <set> 10 #include <set>
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 skewport.Union(visible_rect_in_content_space); 532 skewport.Union(visible_rect_in_content_space);
533 return skewport; 533 return skewport;
534 } 534 }
535 535
536 void PictureLayerTiling::ComputeTilePriorityRects( 536 void PictureLayerTiling::ComputeTilePriorityRects(
537 WhichTree tree, 537 WhichTree tree,
538 const gfx::Rect& viewport_in_layer_space, 538 const gfx::Rect& viewport_in_layer_space,
539 float ideal_contents_scale, 539 float ideal_contents_scale,
540 double current_frame_time_in_seconds, 540 double current_frame_time_in_seconds,
541 const Occlusion& occlusion_in_layer_space) { 541 const Occlusion& occlusion_in_layer_space) {
542 if (!NeedsUpdateForFrameAtTime(current_frame_time_in_seconds)) { 542 if (!NeedsUpdateForFrameAtTimeAndViewport(current_frame_time_in_seconds,
543 viewport_in_layer_space)) {
543 // This should never be zero for the purposes of has_ever_been_updated(). 544 // This should never be zero for the purposes of has_ever_been_updated().
544 DCHECK_NE(current_frame_time_in_seconds, 0.0); 545 DCHECK_NE(current_frame_time_in_seconds, 0.0);
545 return; 546 return;
546 } 547 }
547 548
548 gfx::Rect visible_rect_in_content_space = 549 gfx::Rect visible_rect_in_content_space =
549 gfx::ScaleToEnclosingRect(viewport_in_layer_space, contents_scale_); 550 gfx::ScaleToEnclosingRect(viewport_in_layer_space, contents_scale_);
550 551
551 if (tiling_size().IsEmpty()) { 552 if (tiling_size().IsEmpty()) {
552 last_impl_frame_time_in_seconds_ = current_frame_time_in_seconds; 553 last_impl_frame_time_in_seconds_ = current_frame_time_in_seconds;
554 last_viewport_in_layer_space_ = viewport_in_layer_space;
553 last_visible_rect_in_content_space_ = visible_rect_in_content_space; 555 last_visible_rect_in_content_space_ = visible_rect_in_content_space;
554 return; 556 return;
555 } 557 }
556 558
557 // Calculate the skewport. 559 // Calculate the skewport.
558 gfx::Rect skewport = ComputeSkewport(current_frame_time_in_seconds, 560 gfx::Rect skewport = ComputeSkewport(current_frame_time_in_seconds,
559 visible_rect_in_content_space); 561 visible_rect_in_content_space);
560 DCHECK(skewport.Contains(visible_rect_in_content_space)); 562 DCHECK(skewport.Contains(visible_rect_in_content_space));
561 563
562 // Calculate the eventually/live tiles rect. 564 // Calculate the eventually/live tiles rect.
(...skipping 17 matching lines...) Expand all
580 // Calculate the soon border rect. 582 // Calculate the soon border rect.
581 content_to_screen_scale_ = ideal_contents_scale / contents_scale_; 583 content_to_screen_scale_ = ideal_contents_scale / contents_scale_;
582 gfx::Rect soon_border_rect = visible_rect_in_content_space; 584 gfx::Rect soon_border_rect = visible_rect_in_content_space;
583 float border = kSoonBorderDistanceInScreenPixels / content_to_screen_scale_; 585 float border = kSoonBorderDistanceInScreenPixels / content_to_screen_scale_;
584 soon_border_rect.Inset(-border, -border, -border, -border); 586 soon_border_rect.Inset(-border, -border, -border, -border);
585 587
586 // Update the tiling state. 588 // Update the tiling state.
587 SetLiveTilesRect(eventually_rect); 589 SetLiveTilesRect(eventually_rect);
588 590
589 last_impl_frame_time_in_seconds_ = current_frame_time_in_seconds; 591 last_impl_frame_time_in_seconds_ = current_frame_time_in_seconds;
592 last_viewport_in_layer_space_ = viewport_in_layer_space;
590 last_visible_rect_in_content_space_ = visible_rect_in_content_space; 593 last_visible_rect_in_content_space_ = visible_rect_in_content_space;
591 594
592 eviction_tiles_cache_valid_ = false; 595 eviction_tiles_cache_valid_ = false;
593 596
594 current_visible_rect_ = visible_rect_in_content_space; 597 current_visible_rect_ = visible_rect_in_content_space;
595 current_skewport_rect_ = skewport; 598 current_skewport_rect_ = skewport;
596 current_soon_border_rect_ = soon_border_rect; 599 current_soon_border_rect_ = soon_border_rect;
597 current_eventually_rect_ = eventually_rect; 600 current_eventually_rect_ = eventually_rect;
598 current_occlusion_in_layer_space_ = occlusion_in_layer_space; 601 current_occlusion_in_layer_space_ = occlusion_in_layer_space;
599 602
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 DCHECK(*this); 1226 DCHECK(*this);
1224 do { 1227 do {
1225 ++current_eviction_tiles_index_; 1228 ++current_eviction_tiles_index_;
1226 } while (current_eviction_tiles_index_ != eviction_tiles_->size() && 1229 } while (current_eviction_tiles_index_ != eviction_tiles_->size() &&
1227 !(*eviction_tiles_)[current_eviction_tiles_index_]->HasResources()); 1230 !(*eviction_tiles_)[current_eviction_tiles_index_]->HasResources());
1228 1231
1229 return *this; 1232 return *this;
1230 } 1233 }
1231 1234
1232 } // namespace cc 1235 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_layer_tiling.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698