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

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: 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 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 static void AppendQuadsToFillScreen( 533 static void AppendQuadsToFillScreen(
534 ResourceProvider::ResourceId resource_id, 534 ResourceProvider::ResourceId resource_id,
535 gfx::SizeF resource_scaled_size, 535 gfx::SizeF resource_scaled_size,
536 RenderPass* target_render_pass, 536 RenderPass* target_render_pass,
537 LayerImpl* root_layer, 537 LayerImpl* root_layer,
538 SkColor screen_background_color, 538 SkColor screen_background_color,
539 const OcclusionTrackerImpl& occlusion_tracker) { 539 const OcclusionTrackerImpl& occlusion_tracker) {
540 if (!root_layer || !SkColorGetA(screen_background_color)) 540 if (!root_layer || !SkColorGetA(screen_background_color))
541 return; 541 return;
542 542
543 Region fill_region = occlusion_tracker.ComputeVisibleRegionInScreen(); 543 Region fill_region = occlusion_tracker.ComputeVisibleRegionInScreen(
544 root_layer->render_surface()->content_rect());
544 if (fill_region.IsEmpty()) 545 if (fill_region.IsEmpty())
545 return; 546 return;
546 547
547 bool for_surface = false; 548 bool for_surface = false;
548 QuadCuller quad_culler(&target_render_pass->quad_list, 549 QuadCuller quad_culler(&target_render_pass->quad_list,
549 &target_render_pass->shared_quad_state_list, 550 &target_render_pass->shared_quad_state_list,
550 root_layer, 551 root_layer,
551 occlusion_tracker, 552 occlusion_tracker,
552 root_layer->ShowDebugBorders(), 553 root_layer->ShowDebugBorders(),
553 for_surface); 554 for_surface);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 render_surface->contributes_to_drawn_surface() || 659 render_surface->contributes_to_drawn_surface() ||
659 render_surface_layer->HasCopyRequest(); 660 render_surface_layer->HasCopyRequest();
660 if (should_draw_into_render_pass) 661 if (should_draw_into_render_pass)
661 render_surface_layer->render_surface()->AppendRenderPasses(frame); 662 render_surface_layer->render_surface()->AppendRenderPasses(frame);
662 } 663 }
663 664
664 bool record_metrics_for_frame = 665 bool record_metrics_for_frame =
665 settings_.show_overdraw_in_tracing && 666 settings_.show_overdraw_in_tracing &&
666 base::debug::TraceLog::GetInstance() && 667 base::debug::TraceLog::GetInstance() &&
667 base::debug::TraceLog::GetInstance()->IsEnabled(); 668 base::debug::TraceLog::GetInstance()->IsEnabled();
668 OcclusionTrackerImpl occlusion_tracker( 669 OcclusionTrackerImpl occlusion_tracker(record_metrics_for_frame);
669 active_tree_->root_layer()->render_surface()->content_rect(),
670 record_metrics_for_frame);
671 occlusion_tracker.set_minimum_tracking_size( 670 occlusion_tracker.set_minimum_tracking_size(
672 settings_.minimum_occlusion_tracking_size); 671 settings_.minimum_occlusion_tracking_size);
673 672
674 if (debug_state_.show_occluding_rects) { 673 if (debug_state_.show_occluding_rects) {
675 occlusion_tracker.set_occluding_screen_space_rects_container( 674 occlusion_tracker.set_occluding_screen_space_rects_container(
676 &frame->occluding_screen_space_rects); 675 &frame->occluding_screen_space_rects);
677 } 676 }
678 if (debug_state_.show_non_occluding_rects) { 677 if (debug_state_.show_non_occluding_rects) {
679 occlusion_tracker.set_non_occluding_screen_space_rects_container( 678 occlusion_tracker.set_non_occluding_screen_space_rects_container(
680 &frame->non_occluding_screen_space_rects); 679 &frame->non_occluding_screen_space_rects);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 &append_quads_data); 734 &append_quads_data);
736 } else if (it.represents_itself() && 735 } else if (it.represents_itself() &&
737 !it->visible_content_rect().IsEmpty()) { 736 !it->visible_content_rect().IsEmpty()) {
738 bool has_occlusion_from_outside_target_surface; 737 bool has_occlusion_from_outside_target_surface;
739 bool impl_draw_transform_is_unknown = false; 738 bool impl_draw_transform_is_unknown = false;
740 if (occlusion_tracker.Occluded( 739 if (occlusion_tracker.Occluded(
741 it->render_target(), 740 it->render_target(),
742 it->visible_content_rect(), 741 it->visible_content_rect(),
743 it->draw_transform(), 742 it->draw_transform(),
744 impl_draw_transform_is_unknown, 743 impl_draw_transform_is_unknown,
745 it->is_clipped(),
746 it->clip_rect(),
747 &has_occlusion_from_outside_target_surface)) { 744 &has_occlusion_from_outside_target_surface)) {
748 append_quads_data.had_occlusion_from_outside_target_surface |= 745 append_quads_data.had_occlusion_from_outside_target_surface |=
749 has_occlusion_from_outside_target_surface; 746 has_occlusion_from_outside_target_surface;
750 } else if (it->WillDraw(draw_mode, resource_provider_.get())) { 747 } else if (it->WillDraw(draw_mode, resource_provider_.get())) {
751 DCHECK_EQ(active_tree_, it->layer_tree_impl()); 748 DCHECK_EQ(active_tree_, it->layer_tree_impl());
752 749
753 frame->will_draw_layers.push_back(*it); 750 frame->will_draw_layers.push_back(*it);
754 751
755 if (it->HasContributingDelegatedRenderPasses()) { 752 if (it->HasContributingDelegatedRenderPasses()) {
756 RenderPass::Id contributing_render_pass_id = 753 RenderPass::Id contributing_render_pass_id =
(...skipping 1892 matching lines...) Expand 10 before | Expand all | Expand 10 after
2649 2646
2650 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource( 2647 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource(
2651 UIResourceId uid) const { 2648 UIResourceId uid) const {
2652 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid); 2649 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid);
2653 if (iter != ui_resource_map_.end()) 2650 if (iter != ui_resource_map_.end())
2654 return iter->second; 2651 return iter->second;
2655 return 0; 2652 return 0;
2656 } 2653 }
2657 2654
2658 } // namespace cc 2655 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698