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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 23708021: Do not clip inside OcclusionTracker. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: added DCHECK Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 static void AppendQuadsToFillScreen( 563 static void AppendQuadsToFillScreen(
564 ResourceProvider::ResourceId resource_id, 564 ResourceProvider::ResourceId resource_id,
565 gfx::SizeF resource_scaled_size, 565 gfx::SizeF resource_scaled_size,
566 RenderPass* target_render_pass, 566 RenderPass* target_render_pass,
567 LayerImpl* root_layer, 567 LayerImpl* root_layer,
568 SkColor screen_background_color, 568 SkColor screen_background_color,
569 const OcclusionTrackerImpl& occlusion_tracker) { 569 const OcclusionTrackerImpl& occlusion_tracker) {
570 if (!root_layer || !SkColorGetA(screen_background_color)) 570 if (!root_layer || !SkColorGetA(screen_background_color))
571 return; 571 return;
572 572
573 Region fill_region = occlusion_tracker.ComputeVisibleRegionInScreen(); 573 Region fill_region = occlusion_tracker.ComputeVisibleRegionInScreen(
574 root_layer->render_surface()->content_rect());
574 if (fill_region.IsEmpty()) 575 if (fill_region.IsEmpty())
575 return; 576 return;
576 577
577 bool for_surface = false; 578 bool for_surface = false;
578 QuadCuller quad_culler(&target_render_pass->quad_list, 579 QuadCuller quad_culler(&target_render_pass->quad_list,
579 &target_render_pass->shared_quad_state_list, 580 &target_render_pass->shared_quad_state_list,
580 root_layer, 581 root_layer,
581 occlusion_tracker, 582 occlusion_tracker,
582 root_layer->ShowDebugBorders(), 583 root_layer->ShowDebugBorders(),
583 for_surface); 584 for_surface);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 render_surface->contributes_to_drawn_surface() || 689 render_surface->contributes_to_drawn_surface() ||
689 render_surface_layer->HasCopyRequest(); 690 render_surface_layer->HasCopyRequest();
690 if (should_draw_into_render_pass) 691 if (should_draw_into_render_pass)
691 render_surface_layer->render_surface()->AppendRenderPasses(frame); 692 render_surface_layer->render_surface()->AppendRenderPasses(frame);
692 } 693 }
693 694
694 bool record_metrics_for_frame = 695 bool record_metrics_for_frame =
695 settings_.show_overdraw_in_tracing && 696 settings_.show_overdraw_in_tracing &&
696 base::debug::TraceLog::GetInstance() && 697 base::debug::TraceLog::GetInstance() &&
697 base::debug::TraceLog::GetInstance()->IsEnabled(); 698 base::debug::TraceLog::GetInstance()->IsEnabled();
698 OcclusionTrackerImpl occlusion_tracker( 699 OcclusionTrackerImpl occlusion_tracker(record_metrics_for_frame);
699 active_tree_->root_layer()->render_surface()->content_rect(),
700 record_metrics_for_frame);
701 occlusion_tracker.set_minimum_tracking_size( 700 occlusion_tracker.set_minimum_tracking_size(
702 settings_.minimum_occlusion_tracking_size); 701 settings_.minimum_occlusion_tracking_size);
703 702
704 if (debug_state_.show_occluding_rects) { 703 if (debug_state_.show_occluding_rects) {
705 occlusion_tracker.set_occluding_screen_space_rects_container( 704 occlusion_tracker.set_occluding_screen_space_rects_container(
706 &frame->occluding_screen_space_rects); 705 &frame->occluding_screen_space_rects);
707 } 706 }
708 if (debug_state_.show_non_occluding_rects) { 707 if (debug_state_.show_non_occluding_rects) {
709 occlusion_tracker.set_non_occluding_screen_space_rects_container( 708 occlusion_tracker.set_non_occluding_screen_space_rects_container(
710 &frame->non_occluding_screen_space_rects); 709 &frame->non_occluding_screen_space_rects);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 &append_quads_data); 764 &append_quads_data);
766 } else if (it.represents_itself() && 765 } else if (it.represents_itself() &&
767 !it->visible_content_rect().IsEmpty()) { 766 !it->visible_content_rect().IsEmpty()) {
768 bool has_occlusion_from_outside_target_surface; 767 bool has_occlusion_from_outside_target_surface;
769 bool impl_draw_transform_is_unknown = false; 768 bool impl_draw_transform_is_unknown = false;
770 if (occlusion_tracker.Occluded( 769 if (occlusion_tracker.Occluded(
771 it->render_target(), 770 it->render_target(),
772 it->visible_content_rect(), 771 it->visible_content_rect(),
773 it->draw_transform(), 772 it->draw_transform(),
774 impl_draw_transform_is_unknown, 773 impl_draw_transform_is_unknown,
775 it->is_clipped(),
776 it->clip_rect(),
777 &has_occlusion_from_outside_target_surface)) { 774 &has_occlusion_from_outside_target_surface)) {
778 append_quads_data.had_occlusion_from_outside_target_surface |= 775 append_quads_data.had_occlusion_from_outside_target_surface |=
779 has_occlusion_from_outside_target_surface; 776 has_occlusion_from_outside_target_surface;
780 } else if (it->WillDraw(draw_mode, resource_provider_.get())) { 777 } else if (it->WillDraw(draw_mode, resource_provider_.get())) {
781 DCHECK_EQ(active_tree_, it->layer_tree_impl()); 778 DCHECK_EQ(active_tree_, it->layer_tree_impl());
782 779
783 frame->will_draw_layers.push_back(*it); 780 frame->will_draw_layers.push_back(*it);
784 781
785 if (it->HasContributingDelegatedRenderPasses()) { 782 if (it->HasContributingDelegatedRenderPasses()) {
786 RenderPass::Id contributing_render_pass_id = 783 RenderPass::Id contributing_render_pass_id =
(...skipping 1909 matching lines...) Expand 10 before | Expand all | Expand 10 after
2696 std::set<UIResourceId>::iterator found_in_evicted = 2693 std::set<UIResourceId>::iterator found_in_evicted =
2697 evicted_ui_resources_.find(uid); 2694 evicted_ui_resources_.find(uid);
2698 if (found_in_evicted == evicted_ui_resources_.end()) 2695 if (found_in_evicted == evicted_ui_resources_.end())
2699 return; 2696 return;
2700 evicted_ui_resources_.erase(found_in_evicted); 2697 evicted_ui_resources_.erase(found_in_evicted);
2701 if (evicted_ui_resources_.empty()) 2698 if (evicted_ui_resources_.empty())
2702 client_->OnCanDrawStateChanged(CanDraw()); 2699 client_->OnCanDrawStateChanged(CanDraw());
2703 } 2700 }
2704 2701
2705 } // namespace cc 2702 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698