diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-05 06:55:03 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-05 06:55:03 +0000 |
commit | 34ba1ffb32e6b517f3051ae0cc32cdf783aab47d (patch) | |
tree | da7444e0dda04a656d4a223016168efe3f260f9c /cc/trees | |
parent | 514266b099e9e2177d230d3696c0f3835d5ffba7 (diff) | |
download | chromium_src-34ba1ffb32e6b517f3051ae0cc32cdf783aab47d.zip chromium_src-34ba1ffb32e6b517f3051ae0cc32cdf783aab47d.tar.gz chromium_src-34ba1ffb32e6b517f3051ae0cc32cdf783aab47d.tar.bz2 |
cc: Clean up OcclusionTracker template parameters.
Currently it takes LayerType and RenderSurfaceType, but the latter is
derivable from the former, so just pass the former. Since there's only
one parameter, it's clearer to use OcclusionTracker<Layer(Impl)>
directly instead of using typedefs.
Also rename the TestOcclusionTracker file from
occlusion_tracker_test_common.h to test_occlusion_tracker.h.
R=enne
BUG=344962
Review URL: https://codereview.chromium.org/183563003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@254965 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/trees')
-rw-r--r-- | cc/trees/layer_tree_host.cc | 2 | ||||
-rw-r--r-- | cc/trees/layer_tree_host.h | 2 | ||||
-rw-r--r-- | cc/trees/layer_tree_host_impl.cc | 16 | ||||
-rw-r--r-- | cc/trees/layer_tree_host_unittest.cc | 10 | ||||
-rw-r--r-- | cc/trees/layer_tree_host_unittest_occlusion.cc | 11 | ||||
-rw-r--r-- | cc/trees/layer_tree_impl.cc | 1 | ||||
-rw-r--r-- | cc/trees/occlusion_tracker.cc | 93 | ||||
-rw-r--r-- | cc/trees/occlusion_tracker.h | 18 | ||||
-rw-r--r-- | cc/trees/occlusion_tracker_perftest.cc | 6 | ||||
-rw-r--r-- | cc/trees/occlusion_tracker_unittest.cc | 163 | ||||
-rw-r--r-- | cc/trees/quad_culler.cc | 4 | ||||
-rw-r--r-- | cc/trees/quad_culler.h | 8 | ||||
-rw-r--r-- | cc/trees/quad_culler_unittest.cc | 80 |
13 files changed, 191 insertions, 223 deletions
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc index 097ad5da..2a8248e 100644 --- a/cc/trees/layer_tree_host.cc +++ b/cc/trees/layer_tree_host.cc @@ -989,7 +989,7 @@ void LayerTreeHost::PaintLayerContents( settings_.show_overdraw_in_tracing && base::debug::TraceLog::GetInstance() && base::debug::TraceLog::GetInstance()->IsEnabled(); - OcclusionTracker occlusion_tracker( + OcclusionTracker<Layer> occlusion_tracker( root_layer_->render_surface()->content_rect(), record_metrics_for_frame); occlusion_tracker.set_minimum_tracking_size( settings_.minimum_occlusion_tracking_size); diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h index 1a2a65b..7dcf3e6 100644 --- a/cc/trees/layer_tree_host.h +++ b/cc/trees/layer_tree_host.h @@ -26,6 +26,7 @@ #include "cc/base/swap_promise_monitor.h" #include "cc/debug/micro_benchmark.h" #include "cc/debug/micro_benchmark_controller.h" +#include "cc/debug/overdraw_metrics.h" #include "cc/input/input_handler.h" #include "cc/input/scrollbar.h" #include "cc/input/top_controls_state.h" @@ -36,7 +37,6 @@ #include "cc/trees/layer_tree_host_client.h" #include "cc/trees/layer_tree_host_common.h" #include "cc/trees/layer_tree_settings.h" -#include "cc/trees/occlusion_tracker.h" #include "cc/trees/proxy.h" #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/rect.h" diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index 50a6c41..a7f251b 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc @@ -54,6 +54,7 @@ #include "cc/trees/layer_tree_host.h" #include "cc/trees/layer_tree_host_common.h" #include "cc/trees/layer_tree_impl.h" +#include "cc/trees/occlusion_tracker.h" #include "cc/trees/quad_culler.h" #include "cc/trees/single_thread_proxy.h" #include "cc/trees/tree_synchronizer.h" @@ -560,10 +561,11 @@ static DrawMode GetDrawMode(OutputSurface* output_surface) { } } -static void AppendQuadsForLayer(RenderPass* target_render_pass, - LayerImpl* layer, - const OcclusionTrackerImpl& occlusion_tracker, - AppendQuadsData* append_quads_data) { +static void AppendQuadsForLayer( + RenderPass* target_render_pass, + LayerImpl* layer, + const OcclusionTracker<LayerImpl>& occlusion_tracker, + AppendQuadsData* append_quads_data) { bool for_surface = false; QuadCuller quad_culler(&target_render_pass->quad_list, &target_render_pass->shared_quad_state_list, @@ -578,7 +580,7 @@ static void AppendQuadsForRenderSurfaceLayer( RenderPass* target_render_pass, LayerImpl* layer, const RenderPass* contributing_render_pass, - const OcclusionTrackerImpl& occlusion_tracker, + const OcclusionTracker<LayerImpl>& occlusion_tracker, AppendQuadsData* append_quads_data) { bool for_surface = true; QuadCuller quad_culler(&target_render_pass->quad_list, @@ -611,7 +613,7 @@ static void AppendQuadsToFillScreen( RenderPass* target_render_pass, LayerImpl* root_layer, SkColor screen_background_color, - const OcclusionTrackerImpl& occlusion_tracker) { + const OcclusionTracker<LayerImpl>& occlusion_tracker) { if (!root_layer || !SkColorGetA(screen_background_color)) return; @@ -747,7 +749,7 @@ DrawSwapReadbackResult::DrawResult LayerTreeHostImpl::CalculateRenderPasses( settings_.show_overdraw_in_tracing && base::debug::TraceLog::GetInstance() && base::debug::TraceLog::GetInstance()->IsEnabled(); - OcclusionTrackerImpl occlusion_tracker( + OcclusionTracker<LayerImpl> occlusion_tracker( active_tree_->root_layer()->render_surface()->content_rect(), record_metrics_for_frame); occlusion_tracker.set_minimum_tracking_size( diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc index 8212993..f395398 100644 --- a/cc/trees/layer_tree_host_unittest.cc +++ b/cc/trees/layer_tree_host_unittest.cc @@ -40,7 +40,6 @@ #include "cc/test/fake_video_frame_provider.h" #include "cc/test/geometry_test_utils.h" #include "cc/test/layer_tree_test.h" -#include "cc/test/occlusion_tracker_test_common.h" #include "cc/test/test_web_graphics_context_3d.h" #include "cc/trees/layer_tree_host_impl.h" #include "cc/trees/layer_tree_impl.h" @@ -1329,7 +1328,7 @@ class ContentLayerWithUpdateTracking : public ContentLayer { void ResetPaintContentsCount() { paint_contents_count_ = 0; } virtual bool Update(ResourceUpdateQueue* queue, - const OcclusionTracker* occlusion) OVERRIDE { + const OcclusionTracker<Layer>* occlusion) OVERRIDE { bool updated = ContentLayer::Update(queue, occlusion); paint_contents_count_++; return updated; @@ -2020,7 +2019,8 @@ class EvictionTestLayer : public Layer { return make_scoped_refptr(new EvictionTestLayer()); } - virtual bool Update(ResourceUpdateQueue*, const OcclusionTracker*) OVERRIDE; + virtual bool Update(ResourceUpdateQueue*, + const OcclusionTracker<Layer>*) OVERRIDE; virtual bool DrawsContent() const OVERRIDE { return true; } virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) @@ -2081,7 +2081,7 @@ void EvictionTestLayer::SetTexturePriorities(const PriorityCalculator&) { } bool EvictionTestLayer::Update(ResourceUpdateQueue* queue, - const OcclusionTracker*) { + const OcclusionTracker<Layer>* occlusion) { CreateTextureIfNeeded(); if (!texture_) return false; @@ -4667,7 +4667,7 @@ class LayerSetsNeedsFilterContext : public Layer { } virtual bool Update(ResourceUpdateQueue* queue, - const OcclusionTracker* occlusion) OVERRIDE { + const OcclusionTracker<Layer>* occlusion) OVERRIDE { bool updated = Layer::Update(queue, occlusion); if (needs_context_) { layer_tree_host()->set_needs_filter_context(); diff --git a/cc/trees/layer_tree_host_unittest_occlusion.cc b/cc/trees/layer_tree_host_unittest_occlusion.cc index 491b42f1..352b5cf 100644 --- a/cc/trees/layer_tree_host_unittest_occlusion.cc +++ b/cc/trees/layer_tree_host_unittest_occlusion.cc @@ -8,7 +8,7 @@ #include "cc/output/copy_output_request.h" #include "cc/output/copy_output_result.h" #include "cc/test/layer_tree_test.h" -#include "cc/test/occlusion_tracker_test_common.h" +#include "cc/test/test_occlusion_tracker.h" namespace cc { namespace { @@ -19,15 +19,14 @@ class TestLayer : public Layer { return make_scoped_refptr(new TestLayer()); } - virtual bool Update( - ResourceUpdateQueue* update_queue, - const OcclusionTracker* occlusion) OVERRIDE { + virtual bool Update(ResourceUpdateQueue* update_queue, + const OcclusionTracker<Layer>* occlusion) OVERRIDE { if (!occlusion) return false; // Gain access to internals of the OcclusionTracker. - const TestOcclusionTracker* test_occlusion = - static_cast<const TestOcclusionTracker*>(occlusion); + const TestOcclusionTracker<Layer>* test_occlusion = + static_cast<const TestOcclusionTracker<Layer>*>(occlusion); occlusion_ = UnionRegions( test_occlusion->occlusion_from_inside_target(), test_occlusion->occlusion_from_outside_target()); diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc index 8fe1f88..1142a6e 100644 --- a/cc/trees/layer_tree_impl.cc +++ b/cc/trees/layer_tree_impl.cc @@ -12,6 +12,7 @@ #include "cc/debug/traced_value.h" #include "cc/layers/heads_up_display_layer_impl.h" #include "cc/layers/layer.h" +#include "cc/layers/layer_iterator.h" #include "cc/layers/render_surface_impl.h" #include "cc/layers/scrollbar_layer_impl_base.h" #include "cc/resources/ui_resource_request.h" diff --git a/cc/trees/occlusion_tracker.cc b/cc/trees/occlusion_tracker.cc index 11982a8..6d6f320 100644 --- a/cc/trees/occlusion_tracker.cc +++ b/cc/trees/occlusion_tracker.cc @@ -17,19 +17,20 @@ namespace cc { -template <typename LayerType, typename RenderSurfaceType> -OcclusionTrackerBase<LayerType, RenderSurfaceType>::OcclusionTrackerBase( - const gfx::Rect& screen_space_clip_rect, bool record_metrics_for_frame) +template <typename LayerType> +OcclusionTracker<LayerType>::OcclusionTracker( + const gfx::Rect& screen_space_clip_rect, + bool record_metrics_for_frame) : screen_space_clip_rect_(screen_space_clip_rect), overdraw_metrics_(OverdrawMetrics::Create(record_metrics_for_frame)), occluding_screen_space_rects_(NULL), non_occluding_screen_space_rects_(NULL) {} -template <typename LayerType, typename RenderSurfaceType> -OcclusionTrackerBase<LayerType, RenderSurfaceType>::~OcclusionTrackerBase() {} +template <typename LayerType> +OcclusionTracker<LayerType>::~OcclusionTracker() {} -template <typename LayerType, typename RenderSurfaceType> -void OcclusionTrackerBase<LayerType, RenderSurfaceType>::EnterLayer( +template <typename LayerType> +void OcclusionTracker<LayerType>::EnterLayer( const LayerIteratorPosition<LayerType>& layer_iterator) { LayerType* render_target = layer_iterator.target_render_surface_layer; @@ -39,8 +40,8 @@ void OcclusionTrackerBase<LayerType, RenderSurfaceType>::EnterLayer( FinishedRenderTarget(render_target); } -template <typename LayerType, typename RenderSurfaceType> -void OcclusionTrackerBase<LayerType, RenderSurfaceType>::LeaveLayer( +template <typename LayerType> +void OcclusionTracker<LayerType>::LeaveLayer( const LayerIteratorPosition<LayerType>& layer_iterator) { LayerType* render_target = layer_iterator.target_render_surface_layer; @@ -145,20 +146,21 @@ static inline bool LayerIsHidden(const LayerType* layer) { (layer->parent() && LayerIsHidden(layer->parent())); } -template <typename LayerType, typename RenderSurfaceType> -void OcclusionTrackerBase<LayerType, RenderSurfaceType>::EnterRenderTarget( +template <typename LayerType> +void OcclusionTracker<LayerType>::EnterRenderTarget( const LayerType* new_target) { if (!stack_.empty() && stack_.back().target == new_target) return; const LayerType* old_target = NULL; - const RenderSurfaceType* old_occlusion_immune_ancestor = NULL; + const typename LayerType::RenderSurfaceType* old_occlusion_immune_ancestor = + NULL; if (!stack_.empty()) { old_target = stack_.back().target; old_occlusion_immune_ancestor = old_target->render_surface()->nearest_occlusion_immune_ancestor(); } - const RenderSurfaceType* new_occlusion_immune_ancestor = + const typename LayerType::RenderSurfaceType* new_occlusion_immune_ancestor = new_target->render_surface()->nearest_occlusion_immune_ancestor(); stack_.push_back(StackObject(new_target)); @@ -198,26 +200,27 @@ void OcclusionTrackerBase<LayerType, RenderSurfaceType>::EnterRenderTarget( inverse_new_target_screen_space_transform, old_target->render_surface()->screen_space_transform()); stack_[last_index].occlusion_from_outside_target = - TransformSurfaceOpaqueRegion<RenderSurfaceType>( + TransformSurfaceOpaqueRegion<typename LayerType::RenderSurfaceType>( stack_[last_index - 1].occlusion_from_outside_target, false, gfx::Rect(), old_target_to_new_target_transform); stack_[last_index].occlusion_from_outside_target.Union( - TransformSurfaceOpaqueRegion<RenderSurfaceType>( + TransformSurfaceOpaqueRegion<typename LayerType::RenderSurfaceType>( stack_[last_index - 1].occlusion_from_inside_target, false, gfx::Rect(), old_target_to_new_target_transform)); } -template <typename LayerType, typename RenderSurfaceType> -void OcclusionTrackerBase<LayerType, RenderSurfaceType>::FinishedRenderTarget( +template <typename LayerType> +void OcclusionTracker<LayerType>::FinishedRenderTarget( const LayerType* finished_target) { // Make sure we know about the target surface. EnterRenderTarget(finished_target); - RenderSurfaceType* surface = finished_target->render_surface(); + typename LayerType::RenderSurfaceType* surface = + finished_target->render_surface(); // Readbacks always happen on render targets so we only need to check // for readbacks here. @@ -294,8 +297,8 @@ static void ReduceOcclusionBelowSurface(LayerType* contributing_layer, } } -template <typename LayerType, typename RenderSurfaceType> -void OcclusionTrackerBase<LayerType, RenderSurfaceType>::LeaveToRenderTarget( +template <typename LayerType> +void OcclusionTracker<LayerType>::LeaveToRenderTarget( const LayerType* new_target) { int last_index = stack_.size() - 1; bool surface_will_be_at_top_after_pop = @@ -306,17 +309,18 @@ void OcclusionTrackerBase<LayerType, RenderSurfaceType>::LeaveToRenderTarget( // merged out as well but needs to be transformed to the new target. const LayerType* old_target = stack_[last_index].target; - const RenderSurfaceType* old_surface = old_target->render_surface(); + const typename LayerType::RenderSurfaceType* old_surface = + old_target->render_surface(); Region old_occlusion_from_inside_target_in_new_target = - TransformSurfaceOpaqueRegion<RenderSurfaceType>( + TransformSurfaceOpaqueRegion<typename LayerType::RenderSurfaceType>( stack_[last_index].occlusion_from_inside_target, old_surface->is_clipped(), old_surface->clip_rect(), old_surface->draw_transform()); if (old_target->has_replica() && !old_target->replica_has_mask()) { old_occlusion_from_inside_target_in_new_target.Union( - TransformSurfaceOpaqueRegion<RenderSurfaceType>( + TransformSurfaceOpaqueRegion<typename LayerType::RenderSurfaceType>( stack_[last_index].occlusion_from_inside_target, old_surface->is_clipped(), old_surface->clip_rect(), @@ -324,7 +328,7 @@ void OcclusionTrackerBase<LayerType, RenderSurfaceType>::LeaveToRenderTarget( } Region old_occlusion_from_outside_target_in_new_target = - TransformSurfaceOpaqueRegion<RenderSurfaceType>( + TransformSurfaceOpaqueRegion<typename LayerType::RenderSurfaceType>( stack_[last_index].occlusion_from_outside_target, false, gfx::Rect(), @@ -393,9 +397,9 @@ void OcclusionTrackerBase<LayerType, RenderSurfaceType>::LeaveToRenderTarget( &stack_.back().occlusion_from_outside_target); } -template <typename LayerType, typename RenderSurfaceType> -void OcclusionTrackerBase<LayerType, RenderSurfaceType>:: - MarkOccludedBehindLayer(const LayerType* layer) { +template <typename LayerType> +void OcclusionTracker<LayerType>::MarkOccludedBehindLayer( + const LayerType* layer) { DCHECK(!stack_.empty()); DCHECK_EQ(layer->render_target(), stack_.back().target); if (stack_.empty()) @@ -496,8 +500,8 @@ void OcclusionTrackerBase<LayerType, RenderSurfaceType>:: } } -template <typename LayerType, typename RenderSurfaceType> -bool OcclusionTrackerBase<LayerType, RenderSurfaceType>::Occluded( +template <typename LayerType> +bool OcclusionTracker<LayerType>::Occluded( const LayerType* render_target, const gfx::Rect& content_rect, const gfx::Transform& draw_transform, @@ -544,13 +548,12 @@ bool OcclusionTrackerBase<LayerType, RenderSurfaceType>::Occluded( return unoccluded_rect_in_target_surface.IsEmpty(); } -template <typename LayerType, typename RenderSurfaceType> -gfx::Rect OcclusionTrackerBase<LayerType, RenderSurfaceType>:: - UnoccludedContentRect( - const LayerType* render_target, - const gfx::Rect& content_rect, - const gfx::Transform& draw_transform, - bool impl_draw_transform_is_unknown) const { +template <typename LayerType> +gfx::Rect OcclusionTracker<LayerType>::UnoccludedContentRect( + const LayerType* render_target, + const gfx::Rect& content_rect, + const gfx::Transform& draw_transform, + bool impl_draw_transform_is_unknown) const { DCHECK(!stack_.empty()); if (stack_.empty()) return content_rect; @@ -594,12 +597,11 @@ gfx::Rect OcclusionTrackerBase<LayerType, RenderSurfaceType>:: return unoccluded_rect; } -template <typename LayerType, typename RenderSurfaceType> -gfx::Rect OcclusionTrackerBase<LayerType, RenderSurfaceType>:: - UnoccludedContributingSurfaceContentRect( - const LayerType* layer, - bool for_replica, - const gfx::Rect& content_rect) const { +template <typename LayerType> +gfx::Rect OcclusionTracker<LayerType>::UnoccludedContributingSurfaceContentRect( + const LayerType* layer, + bool for_replica, + const gfx::Rect& content_rect) const { DCHECK(!stack_.empty()); // The layer is a contributing render_target so it should have a surface. DCHECK(layer->render_surface()); @@ -614,7 +616,8 @@ gfx::Rect OcclusionTrackerBase<LayerType, RenderSurfaceType>:: if (content_rect.IsEmpty()) return content_rect; - const RenderSurfaceType* surface = layer->render_surface(); + const typename LayerType::RenderSurfaceType* surface = + layer->render_surface(); const LayerType* contributing_surface_render_target = layer->parent()->render_target(); @@ -666,7 +669,7 @@ gfx::Rect OcclusionTrackerBase<LayerType, RenderSurfaceType>:: } // Instantiate (and export) templates here for the linker. -template class OcclusionTrackerBase<Layer, RenderSurface>; -template class OcclusionTrackerBase<LayerImpl, RenderSurfaceImpl>; +template class OcclusionTracker<Layer>; +template class OcclusionTracker<LayerImpl>; } // namespace cc diff --git a/cc/trees/occlusion_tracker.h b/cc/trees/occlusion_tracker.h index 2fe54d0..39cd026 100644 --- a/cc/trees/occlusion_tracker.h +++ b/cc/trees/occlusion_tracker.h @@ -29,12 +29,12 @@ class RenderSurface; // be queried via surfaceOccluded() and surfaceUnoccludedContentRect(). Finally, // once finished with the layer, occlusion behind the layer should be marked by // calling MarkOccludedBehindLayer(). -template <typename LayerType, typename RenderSurfaceType> -class CC_EXPORT OcclusionTrackerBase { +template <typename LayerType> +class CC_EXPORT OcclusionTracker { public: - OcclusionTrackerBase(const gfx::Rect& screen_space_clip_rect, - bool record_metrics_for_frame); - ~OcclusionTrackerBase(); + OcclusionTracker(const gfx::Rect& screen_space_clip_rect, + bool record_metrics_for_frame); + ~OcclusionTracker(); // Called at the beginning of each step in the LayerIterator's front-to-back // traversal. @@ -149,14 +149,12 @@ class CC_EXPORT OcclusionTrackerBase { std::vector<gfx::Rect>* occluding_screen_space_rects_; std::vector<gfx::Rect>* non_occluding_screen_space_rects_; - DISALLOW_COPY_AND_ASSIGN(OcclusionTrackerBase); + DISALLOW_COPY_AND_ASSIGN(OcclusionTracker); }; -typedef OcclusionTrackerBase<Layer, RenderSurface> OcclusionTracker; -typedef OcclusionTrackerBase<LayerImpl, RenderSurfaceImpl> OcclusionTrackerImpl; #if !defined(COMPILER_MSVC) -extern template class OcclusionTrackerBase<Layer, RenderSurface>; -extern template class OcclusionTrackerBase<LayerImpl, RenderSurfaceImpl>; +extern template class OcclusionTracker<Layer>; +extern template class OcclusionTracker<LayerImpl>; #endif } // namespace cc diff --git a/cc/trees/occlusion_tracker_perftest.cc b/cc/trees/occlusion_tracker_perftest.cc index f4a2faf..344e48c 100644 --- a/cc/trees/occlusion_tracker_perftest.cc +++ b/cc/trees/occlusion_tracker_perftest.cc @@ -71,8 +71,7 @@ TEST_F(OcclusionTrackerPerfTest, UnoccludedContentRect_FullyOccluded) { SetTestName("unoccluded_content_rect_fully_occluded"); gfx::Rect viewport_rect(768, 1038); - OcclusionTrackerBase<LayerImpl, LayerImpl::RenderSurfaceType> tracker( - viewport_rect, false); + OcclusionTracker<LayerImpl> tracker(viewport_rect, false); CreateHost(); host_impl_->SetViewportSize(viewport_rect.size()); @@ -140,8 +139,7 @@ TEST_F(OcclusionTrackerPerfTest, UnoccludedContentRect_10OpaqueLayers) { SetTestName("unoccluded_content_rect_10_opaque_layers"); gfx::Rect viewport_rect(768, 1038); - OcclusionTrackerBase<LayerImpl, LayerImpl::RenderSurfaceType> tracker( - viewport_rect, false); + OcclusionTracker<LayerImpl> tracker(viewport_rect, false); CreateHost(); host_impl_->SetViewportSize(viewport_rect.size()); diff --git a/cc/trees/occlusion_tracker_unittest.cc b/cc/trees/occlusion_tracker_unittest.cc index 3e4ff5b..b61ed70 100644 --- a/cc/trees/occlusion_tracker_unittest.cc +++ b/cc/trees/occlusion_tracker_unittest.cc @@ -18,7 +18,7 @@ #include "cc/test/fake_layer_tree_host.h" #include "cc/test/fake_layer_tree_host_impl.h" #include "cc/test/geometry_test_utils.h" -#include "cc/test/occlusion_tracker_test_common.h" +#include "cc/test/test_occlusion_tracker.h" #include "cc/trees/layer_tree_host_common.h" #include "cc/trees/single_thread_proxy.h" #include "testing/gmock/include/gmock/gmock.h" @@ -80,18 +80,15 @@ static inline bool LayerImplDrawTransformIsUnknown(const LayerImpl* layer) { return false; } -template <typename LayerType, typename RenderSurfaceType> -class TestOcclusionTrackerWithClip - : public TestOcclusionTrackerBase<LayerType, RenderSurfaceType> { +template <typename LayerType> +class TestOcclusionTrackerWithClip : public TestOcclusionTracker<LayerType> { public: TestOcclusionTrackerWithClip(const gfx::Rect& viewport_rect, bool record_metrics_for_frame) - : TestOcclusionTrackerBase<LayerType, RenderSurfaceType>( - viewport_rect, - record_metrics_for_frame) {} + : TestOcclusionTracker<LayerType>(viewport_rect, + record_metrics_for_frame) {} explicit TestOcclusionTrackerWithClip(const gfx::Rect& viewport_rect) - : TestOcclusionTrackerBase<LayerType, RenderSurfaceType>(viewport_rect, - false) {} + : TestOcclusionTracker<LayerType>(viewport_rect, false) {} bool OccludedLayer(const LayerType* layer, const gfx::Rect& content_rect) const { @@ -123,7 +120,7 @@ struct OcclusionTrackerTestMainThreadTypes { typedef scoped_refptr<Layer> LayerPtrType; typedef scoped_refptr<ContentLayerType> ContentLayerPtrType; typedef LayerIterator<Layer> TestLayerIterator; - typedef OcclusionTracker OcclusionTrackerType; + typedef OcclusionTracker<Layer> OcclusionTrackerType; static LayerPtrType CreateLayer(HostType* host) { return Layer::Create(); } static ContentLayerPtrType CreateContentLayer(HostType* host) { @@ -153,7 +150,7 @@ struct OcclusionTrackerTestImplThreadTypes { typedef scoped_ptr<LayerImpl> LayerPtrType; typedef scoped_ptr<ContentLayerType> ContentLayerPtrType; typedef LayerIterator<LayerImpl> TestLayerIterator; - typedef OcclusionTrackerImpl OcclusionTrackerType; + typedef OcclusionTracker<LayerImpl> OcclusionTrackerType; static LayerPtrType CreateLayer(HostType* host) { return LayerImpl::Create(host, next_layer_impl_id++); @@ -545,8 +542,7 @@ class OcclusionTrackerTestIdentityTransforms parent->SetMasksToBounds(true); this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000), false); this->VisitLayer(layer, &occlusion); @@ -612,8 +608,7 @@ class OcclusionTrackerTestQuadsMismatchLayer layer1, layer_transform, gfx::PointF(), gfx::Size(50, 50), true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(layer2, &occlusion); @@ -679,8 +674,7 @@ class OcclusionTrackerTestRotatedChild : public OcclusionTrackerTest<Types> { parent->SetMasksToBounds(true); this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(layer, &occlusion); @@ -750,8 +744,7 @@ class OcclusionTrackerTestTranslatedChild : public OcclusionTrackerTest<Types> { parent->SetMasksToBounds(true); this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(layer, &occlusion); @@ -822,8 +815,7 @@ class OcclusionTrackerTestChildInRotatedChild true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(layer, &occlusion); @@ -929,8 +921,7 @@ class OcclusionTrackerTestScaledRenderSurface true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(occluder, &occlusion); @@ -994,8 +985,7 @@ class OcclusionTrackerTestVisitTargetTwoTimes true); this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(child2, &occlusion); @@ -1161,8 +1151,7 @@ class OcclusionTrackerTestSurfaceRotatedOffAxis child, layer_transform, gfx::PointF(), gfx::Size(500, 500), true); this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); gfx::Rect clipped_layer_in_child = MathUtil::MapEnclosingClippedRect( @@ -1231,8 +1220,7 @@ class OcclusionTrackerTestSurfaceWithTwoOpaqueChildren true); this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(layer2, &occlusion); @@ -1351,8 +1339,7 @@ class OcclusionTrackerTestOverlappingSurfaceSiblings true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(layer2, &occlusion); @@ -1472,8 +1459,7 @@ class OcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoTransforms true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(layer2, &occlusion); @@ -1596,8 +1582,7 @@ class OcclusionTrackerTestFilters : public OcclusionTrackerTest<Types> { this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // Opacity layer won't contribute to occlusion. @@ -1668,8 +1653,7 @@ class OcclusionTrackerTestReplicaDoesOcclude surface, this->identity_matrix, gfx::PointF(50.f, 50.f), gfx::Size()); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(surface, &occlusion); @@ -1710,8 +1694,7 @@ class OcclusionTrackerTestReplicaWithClipping surface, this->identity_matrix, gfx::PointF(50.f, 50.f), gfx::Size()); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(surface, &occlusion); @@ -1751,8 +1734,7 @@ class OcclusionTrackerTestReplicaWithMask : public OcclusionTrackerTest<Types> { this->CreateMaskLayer(replica, gfx::Size(10, 10)); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(surface, &occlusion); @@ -1789,8 +1771,7 @@ class OcclusionTrackerTestOpaqueContentsRegionEmpty false); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->EnterLayer(layer, &occlusion); @@ -1826,8 +1807,7 @@ class OcclusionTrackerTestOpaqueContentsRegionNonEmpty false); this->CalcDrawEtc(parent); { - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); layer->SetOpaqueContentsRect(gfx::Rect(0, 0, 100, 100)); @@ -1846,8 +1826,7 @@ class OcclusionTrackerTestOpaqueContentsRegionNonEmpty occlusion.OccludedLayer(parent, gfx::Rect(200, 200, 100, 100))); } { - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); layer->SetOpaqueContentsRect(gfx::Rect(20, 20, 180, 180)); @@ -1866,8 +1845,7 @@ class OcclusionTrackerTestOpaqueContentsRegionNonEmpty occlusion.OccludedLayer(parent, gfx::Rect(200, 200, 100, 100))); } { - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); layer->SetOpaqueContentsRect(gfx::Rect(150, 150, 100, 100)); @@ -1911,8 +1889,7 @@ class OcclusionTrackerTest3dTransform : public OcclusionTrackerTest<Types> { true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->EnterLayer(layer, &occlusion); @@ -1962,8 +1939,7 @@ class OcclusionTrackerTestUnsorted3dLayers this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(child2, &occlusion); EXPECT_TRUE(occlusion.occlusion_from_outside_target().IsEmpty()); @@ -2009,8 +1985,7 @@ class OcclusionTrackerTestPerspectiveTransform this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->EnterLayer(layer, &occlusion); @@ -2054,8 +2029,7 @@ class OcclusionTrackerTestPerspectiveTransformBehindCamera layer->SetIs3dSorted(true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->EnterLayer(layer, &occlusion); @@ -2098,8 +2072,7 @@ class OcclusionTrackerTestLayerBehindCameraDoesNotOcclude layer->SetIs3dSorted(true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // The |layer| is entirely behind the camera and should not occlude. @@ -2140,8 +2113,7 @@ class OcclusionTrackerTestLargePixelsOccludeInsideClipRect layer->SetIs3dSorted(true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // This is very close to the camera, so pixels in its visible_content_rect() @@ -2225,8 +2197,7 @@ class OcclusionTrackerTestAnimationOpacity1OnMainThread EXPECT_FALSE(surface->draw_opacity_is_animating()); EXPECT_TRUE(surface->render_surface()->draw_opacity_is_animating()); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(topmost, &occlusion); @@ -2346,8 +2317,7 @@ class OcclusionTrackerTestAnimationOpacity0OnMainThread EXPECT_FALSE(surface->draw_opacity_is_animating()); EXPECT_TRUE(surface->render_surface()->draw_opacity_is_animating()); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(topmost, &occlusion); @@ -2468,8 +2438,7 @@ class OcclusionTrackerTestAnimationTranslateOnMainThread EXPECT_TRUE(surface_child->draw_transform_is_animating()); EXPECT_TRUE(surface_child->screen_space_transform_is_animating()); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(surface2, &occlusion); @@ -2590,8 +2559,7 @@ class OcclusionTrackerTestSurfaceOcclusionTranslatesToParent surface2->SetOpaqueContentsRect(gfx::Rect(0, 0, 200, 200)); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(surface2, &occlusion); @@ -2639,8 +2607,7 @@ class OcclusionTrackerTestSurfaceOcclusionTranslatesWithClipping surface->SetOpaqueContentsRect(gfx::Rect(0, 0, 400, 200)); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(surface, &occlusion); @@ -2682,8 +2649,7 @@ class OcclusionTrackerTestReplicaOccluded : public OcclusionTrackerTest<Types> { true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // |topmost| occludes the replica, but not the surface itself. @@ -2740,8 +2706,7 @@ class OcclusionTrackerTestSurfaceWithReplicaUnoccluded true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // |topmost| occludes the surface, but not the entire surface's replica. @@ -2804,8 +2769,7 @@ class OcclusionTrackerTestSurfaceAndReplicaOccludedDifferently true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // These occlude the surface and replica differently, so we can test each @@ -2870,8 +2834,7 @@ class OcclusionTrackerTestSurfaceChildOfSurface parent, this->identity_matrix, gfx::PointF(), gfx::Size(100, 50), true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(-100, -100, 1000, 1000)); // |topmost| occludes everything partially so we know occlusion is happening @@ -2948,8 +2911,7 @@ class OcclusionTrackerTestTopmostSurfaceIsClippedToViewport this->CalcDrawEtc(parent); { // Make a viewport rect that is larger than the root layer. - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(surface, &occlusion); @@ -2966,8 +2928,7 @@ class OcclusionTrackerTestTopmostSurfaceIsClippedToViewport this->ResetLayerIterator(); { // Make a viewport rect that is smaller than the root layer. - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 100, 100)); this->VisitLayer(surface, &occlusion); @@ -3016,8 +2977,7 @@ class OcclusionTrackerTestSurfaceChildOfClippingSurface parent, this->identity_matrix, gfx::PointF(), gfx::Size(100, 50), true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // |topmost| occludes everything partially so we know occlusion is happening @@ -3120,8 +3080,7 @@ class OcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // These layers occlude pixels directly beside the filtered_surface. Because @@ -3264,8 +3223,7 @@ class OcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(occluding_layer_above, &occlusion); @@ -3345,8 +3303,7 @@ class OcclusionTrackerTestDontReduceOcclusionBelowBackgroundFilter this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); // The surface has a background blur, so it blurs non-opaque pixels below @@ -3413,8 +3370,7 @@ class OcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(occluding_layer, &occlusion); @@ -3515,8 +3471,7 @@ class OcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(beside_replica_layer, &occlusion); @@ -3589,8 +3544,7 @@ class OcclusionTrackerTestMinimumTrackingSize true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); occlusion.set_minimum_tracking_size(tracking_size); @@ -3637,8 +3591,7 @@ class OcclusionTrackerTestScaledLayerIsClipped scale, this->identity_matrix, gfx::PointF(), gfx::Size(500, 500), true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(scaled, &occlusion); @@ -3677,8 +3630,7 @@ class OcclusionTrackerTestScaledLayerInSurfaceIsClipped scale, this->identity_matrix, gfx::PointF(), gfx::Size(500, 500), true); this->CalcDrawEtc(parent); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(scaled, &occlusion); @@ -3718,8 +3670,7 @@ class OcclusionTrackerTestCopyRequestDoesOcclude true); this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(copy_child, &occlusion); @@ -3767,8 +3718,7 @@ class OcclusionTrackerTestHiddenCopyRequestDoesNotOcclude this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000)); this->VisitLayer(copy_child, &occlusion); @@ -3807,8 +3757,7 @@ class OcclusionTrackerTestEmptyEventLayerDoesNotOcclude this->CalcDrawEtc(root); - TestOcclusionTrackerWithClip<typename Types::LayerType, - typename Types::RenderSurfaceType> occlusion( + TestOcclusionTrackerWithClip<typename Types::LayerType> occlusion( gfx::Rect(0, 0, 1000, 1000), false); this->VisitLayer(empty_layer, &occlusion); diff --git a/cc/trees/quad_culler.cc b/cc/trees/quad_culler.cc index 1b6404c..9ff2dcc 100644 --- a/cc/trees/quad_culler.cc +++ b/cc/trees/quad_culler.cc @@ -19,7 +19,7 @@ namespace cc { QuadCuller::QuadCuller(QuadList* quad_list, SharedQuadStateList* shared_quad_state_list, const LayerImpl* layer, - const OcclusionTrackerImpl& occlusion_tracker, + const OcclusionTracker<LayerImpl>& occlusion_tracker, bool show_culling_with_debug_border_quads, bool for_surface) : quad_list_(quad_list), @@ -44,7 +44,7 @@ static inline bool AppendQuadInternal( scoped_ptr<DrawQuad> draw_quad, const gfx::Rect& culled_rect, QuadList* quad_list, - const OcclusionTrackerImpl& occlusion_tracker, + const OcclusionTracker<LayerImpl>& occlusion_tracker, const LayerImpl* layer, bool create_debug_border_quads) { bool keep_quad = !culled_rect.IsEmpty(); diff --git a/cc/trees/quad_culler.h b/cc/trees/quad_culler.h index be0095f..3d71543 100644 --- a/cc/trees/quad_culler.h +++ b/cc/trees/quad_culler.h @@ -12,15 +12,15 @@ namespace cc { class LayerImpl; class RenderSurfaceImpl; -template <typename LayerType, typename SurfaceType> class OcclusionTrackerBase; +template <typename LayerType> +class OcclusionTracker; class CC_EXPORT QuadCuller : public QuadSink { public: QuadCuller(QuadList* quad_list, SharedQuadStateList* shared_quad_state_list, const LayerImpl* layer, - const OcclusionTrackerBase<LayerImpl, RenderSurfaceImpl>& - occlusion_tracker, + const OcclusionTracker<LayerImpl>& occlusion_tracker, bool show_culling_with_debug_border_quads, bool for_surface); virtual ~QuadCuller() {} @@ -35,7 +35,7 @@ class CC_EXPORT QuadCuller : public QuadSink { QuadList* quad_list_; SharedQuadStateList* shared_quad_state_list_; const LayerImpl* layer_; - const OcclusionTrackerBase<LayerImpl, RenderSurfaceImpl>& occlusion_tracker_; + const OcclusionTracker<LayerImpl>& occlusion_tracker_; SharedQuadState* current_shared_quad_state_; bool show_culling_with_debug_border_quads_; diff --git a/cc/trees/quad_culler_unittest.cc b/cc/trees/quad_culler_unittest.cc index ee97319..27e3de5 100644 --- a/cc/trees/quad_culler_unittest.cc +++ b/cc/trees/quad_culler_unittest.cc @@ -17,7 +17,7 @@ #include "cc/resources/layer_tiling_data.h" #include "cc/test/fake_impl_proxy.h" #include "cc/test/fake_layer_tree_host_impl.h" -#include "cc/test/occlusion_tracker_test_common.h" +#include "cc/test/test_occlusion_tracker.h" #include "cc/trees/occlusion_tracker.h" #include "cc/trees/single_thread_proxy.h" #include "testing/gmock/include/gmock/gmock.h" @@ -27,18 +27,6 @@ namespace cc { namespace { -class TestOcclusionTrackerImpl - : public TestOcclusionTrackerBase<LayerImpl, RenderSurfaceImpl> { - public: - TestOcclusionTrackerImpl(const gfx::Rect& scissor_rect_in_screen, - bool record_metrics_for_frame = true) - : TestOcclusionTrackerBase(scissor_rect_in_screen, - record_metrics_for_frame) {} - - private: - DISALLOW_COPY_AND_ASSIGN(TestOcclusionTrackerImpl); -}; - typedef LayerIterator<LayerImpl> LayerIteratorType; class QuadCullerTest : public testing::Test { @@ -104,7 +92,7 @@ class QuadCullerTest : public testing::Test { SharedQuadStateList* shared_state_list, TiledLayerImpl* layer, LayerIteratorType* it, - OcclusionTrackerImpl* occlusion_tracker) { + OcclusionTracker<LayerImpl>* occlusion_tracker) { occlusion_tracker->EnterLayer(*it); QuadCuller quad_culler( quad_list, shared_state_list, layer, *occlusion_tracker, false, false); @@ -150,7 +138,9 @@ TEST_F(QuadCullerTest, NoCulling) { false, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -190,7 +180,9 @@ TEST_F(QuadCullerTest, CullChildLinesUpTopLeft) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -230,7 +222,9 @@ TEST_F(QuadCullerTest, CullWhenChildOpacityNotOne) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -270,7 +264,9 @@ TEST_F(QuadCullerTest, CullWhenChildOpaqueFlagFalse) { false, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -311,7 +307,9 @@ TEST_F(QuadCullerTest, CullCenterTileOnly) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -377,7 +375,9 @@ TEST_F(QuadCullerTest, CullCenterTileNonIntegralSize1) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -428,7 +428,9 @@ TEST_F(QuadCullerTest, CullCenterTileNonIntegralSize2) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -469,7 +471,9 @@ TEST_F(QuadCullerTest, CullChildLinesUpBottomRight) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -514,7 +518,9 @@ TEST_F(QuadCullerTest, CullSubRegion) { false, child_opaque_rect, render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -560,7 +566,9 @@ TEST_F(QuadCullerTest, CullSubRegion2) { false, child_opaque_rect, render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -606,7 +614,9 @@ TEST_F(QuadCullerTest, CullSubRegionCheckOvercull) { false, child_opaque_rect, render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -650,7 +660,9 @@ TEST_F(QuadCullerTest, NonAxisAlignedQuadsDontOcclude) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -699,7 +711,9 @@ TEST_F(QuadCullerTest, NonAxisAlignedQuadsSafelyCulled) { true, gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -739,8 +753,8 @@ TEST_F(QuadCullerTest, WithoutMetrics) { gfx::Rect(), render_surface_layer_list); bool record_metrics = false; - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000), - record_metrics); + TestOcclusionTracker<LayerImpl> occlusion_tracker( + gfx::Rect(-100, -100, 1000, 1000), record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); AppendQuads(&quad_list, @@ -773,7 +787,9 @@ TEST_F(QuadCullerTest, PartialCullingNotDestroyed) { gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker(gfx::Rect(1000, 1000), + record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); QuadCuller culler(&quad_list, @@ -847,7 +863,9 @@ TEST_F(QuadCullerTest, PartialCullingWithOcclusionNotDestroyed) { gfx::Rect(), render_surface_layer_list); - TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(1000, 1000)); + bool record_metrics = true; + TestOcclusionTracker<LayerImpl> occlusion_tracker(gfx::Rect(1000, 1000), + record_metrics); LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); QuadCuller culler(&quad_list, |