Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/quad_culler.h" | 5 #include "cc/quad_culler.h" |
| 6 | 6 |
| 7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
| 8 #include "cc/layer_tiling_data.h" | 8 #include "cc/layer_tiling_data.h" |
| 9 #include "cc/math_util.h" | 9 #include "cc/math_util.h" |
| 10 #include "cc/occlusion_tracker.h" | 10 #include "cc/occlusion_tracker.h" |
| 11 #include "cc/overdraw_metrics.h" | 11 #include "cc/overdraw_metrics.h" |
| 12 #include "cc/single_thread_proxy.h" | 12 #include "cc/single_thread_proxy.h" |
| 13 #include "cc/tile_draw_quad.h" | 13 #include "cc/tile_draw_quad.h" |
| 14 #include "cc/tiled_layer_impl.h" | 14 #include "cc/tiled_layer_impl.h" |
| 15 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 17 #include <public/WebTransformationMatrix.h> | 17 #include "ui/gfx/transform.h" |
| 18 | 18 |
| 19 using WebKit::WebTransformationMatrix; | 19 using gfx::Transform; |
| 20 | 20 |
| 21 namespace cc { | 21 namespace cc { |
| 22 namespace { | 22 namespace { |
| 23 | 23 |
| 24 class TestOcclusionTrackerImpl : public OcclusionTrackerImpl { | 24 class TestOcclusionTrackerImpl : public OcclusionTrackerImpl { |
| 25 public: | 25 public: |
| 26 TestOcclusionTrackerImpl(const gfx::Rect& scissorRectInScreen, bool recordMe tricsForFrame = true) | 26 TestOcclusionTrackerImpl(const gfx::Rect& scissorRectInScreen, bool recordMe tricsForFrame = true) |
| 27 : OcclusionTrackerImpl(scissorRectInScreen, recordMetricsForFrame) | 27 : OcclusionTrackerImpl(scissorRectInScreen, recordMetricsForFrame) |
| 28 , m_scissorRectInScreen(scissorRectInScreen) | 28 , m_scissorRectInScreen(scissorRectInScreen) |
| 29 { | 29 { |
| 30 } | 30 } |
| 31 | 31 |
| 32 protected: | 32 protected: |
| 33 virtual gfx::Rect layerScissorRectInTargetSurface(const LayerImpl* layer) co nst { return m_scissorRectInScreen; } | 33 virtual gfx::Rect layerScissorRectInTargetSurface(const LayerImpl* layer) co nst { return m_scissorRectInScreen; } |
| 34 | 34 |
| 35 private: | 35 private: |
| 36 gfx::Rect m_scissorRectInScreen; | 36 gfx::Rect m_scissorRectInScreen; |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay erIteratorActions::FrontToBack> LayerIteratorType; | 39 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay erIteratorActions::FrontToBack> LayerIteratorType; |
| 40 | 40 |
| 41 static scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const WebTra nsformationMatrix& drawTransform, const gfx::Rect& layerRect, float opacity, boo l opaque, const gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLaye rList) | 41 static scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const Transf orm& drawTransform, const gfx::Rect& layerRect, float opacity, bool opaque, cons t gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLayerList) |
| 42 { | 42 { |
| 43 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::create(1); | 43 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::create(1); |
| 44 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(100, 1 00), LayerTilingData::NoBorderTexels); | 44 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(100, 1 00), LayerTilingData::NoBorderTexels); |
| 45 tiler->setBounds(layerRect.size()); | 45 tiler->setBounds(layerRect.size()); |
| 46 layer->setTilingData(*tiler); | 46 layer->setTilingData(*tiler); |
| 47 layer->setSkipsDraw(false); | 47 layer->setSkipsDraw(false); |
| 48 layer->setDrawTransform(drawTransform); | 48 layer->setDrawTransform(drawTransform); |
| 49 layer->setScreenSpaceTransform(drawTransform); | 49 layer->setScreenSpaceTransform(drawTransform); |
| 50 layer->setVisibleContentRect(layerRect); | 50 layer->setVisibleContentRect(layerRect); |
| 51 layer->setDrawOpacity(opacity); | 51 layer->setDrawOpacity(opacity); |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 82 AppendQuadsData data; | 82 AppendQuadsData data; |
| 83 layer->appendQuads(quadCuller, data); | 83 layer->appendQuads(quadCuller, data); |
| 84 occlusionTracker.leaveLayer(it); | 84 occlusionTracker.leaveLayer(it); |
| 85 ++it; | 85 ++it; |
| 86 } | 86 } |
| 87 | 87 |
| 88 #define DECLARE_AND_INITIALIZE_TEST_QUADS \ | 88 #define DECLARE_AND_INITIALIZE_TEST_QUADS \ |
| 89 QuadList quadList; \ | 89 QuadList quadList; \ |
| 90 SharedQuadStateList sharedStateList; \ | 90 SharedQuadStateList sharedStateList; \ |
| 91 std::vector<LayerImpl*> renderSurfaceLayerList; \ | 91 std::vector<LayerImpl*> renderSurfaceLayerList; \ |
| 92 WebTransformationMatrix childTransform; \ | 92 Transform childTransform; \ |
|
danakj
2012/11/24 02:34:54
move the \
| |
| 93 gfx::Size rootSize = gfx::Size(300, 300); \ | 93 gfx::Size rootSize = gfx::Size(300, 300); \ |
| 94 gfx::Rect rootRect = gfx::Rect(rootSize); \ | 94 gfx::Rect rootRect = gfx::Rect(rootSize); \ |
| 95 gfx::Size childSize = gfx::Size(200, 200); \ | 95 gfx::Size childSize = gfx::Size(200, 200); \ |
| 96 gfx::Rect childRect = gfx::Rect(childSize); | 96 gfx::Rect childRect = gfx::Rect(childSize); |
| 97 | 97 |
| 98 TEST(QuadCullerTest, verifyNoCulling) | 98 TEST(QuadCullerTest, verifyNoCulling) |
| 99 { | 99 { |
| 100 DECLARE_AND_INITIALIZE_TEST_QUADS | 100 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 101 | 101 |
| 102 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 102 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 103 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); | 103 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); |
| 104 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 104 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 105 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 105 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 106 | 106 |
| 107 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 107 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 108 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 108 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 109 EXPECT_EQ(quadList.size(), 13u); | 109 EXPECT_EQ(quadList.size(), 13u); |
| 110 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 110 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 111 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); | 111 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); |
| 112 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 112 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
| 113 } | 113 } |
| 114 | 114 |
| 115 TEST(QuadCullerTest, verifyCullChildLinesUpTopLeft) | 115 TEST(QuadCullerTest, verifyCullChildLinesUpTopLeft) |
| 116 { | 116 { |
| 117 DECLARE_AND_INITIALIZE_TEST_QUADS | 117 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 118 | 118 |
| 119 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 119 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 120 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 120 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 121 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 121 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 122 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 122 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 123 | 123 |
| 124 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 124 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 125 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 125 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 126 EXPECT_EQ(quadList.size(), 9u); | 126 EXPECT_EQ(quadList.size(), 9u); |
| 127 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 127 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 128 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 128 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 129 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); | 129 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); |
| 130 } | 130 } |
| 131 | 131 |
| 132 TEST(QuadCullerTest, verifyCullWhenChildOpacityNotOne) | 132 TEST(QuadCullerTest, verifyCullWhenChildOpacityNotOne) |
| 133 { | 133 { |
| 134 DECLARE_AND_INITIALIZE_TEST_QUADS | 134 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 135 | 135 |
| 136 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 136 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 137 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 0.9f, true, gfx::Rect(), renderSurfaceLayerList); | 137 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 0.9f, true, gfx::Rect(), renderSurfaceLayerList); |
| 138 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 138 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 139 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 139 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 140 | 140 |
| 141 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 141 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 142 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 142 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 143 EXPECT_EQ(quadList.size(), 13u); | 143 EXPECT_EQ(quadList.size(), 13u); |
| 144 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 144 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 145 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); | 145 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); |
| 146 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 146 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
| 147 } | 147 } |
| 148 | 148 |
| 149 TEST(QuadCullerTest, verifyCullWhenChildOpaqueFlagFalse) | 149 TEST(QuadCullerTest, verifyCullWhenChildOpaqueFlagFalse) |
| 150 { | 150 { |
| 151 DECLARE_AND_INITIALIZE_TEST_QUADS | 151 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 152 | 152 |
| 153 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 153 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 154 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); | 154 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); |
| 155 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 155 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 156 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 156 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 157 | 157 |
| 158 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 158 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 159 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 159 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 160 EXPECT_EQ(quadList.size(), 13u); | 160 EXPECT_EQ(quadList.size(), 13u); |
| 161 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 161 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 162 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); | 162 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); |
| 163 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 163 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
| 164 } | 164 } |
| 165 | 165 |
| 166 TEST(QuadCullerTest, verifyCullCenterTileOnly) | 166 TEST(QuadCullerTest, verifyCullCenterTileOnly) |
| 167 { | 167 { |
| 168 DECLARE_AND_INITIALIZE_TEST_QUADS | 168 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 169 | 169 |
| 170 childTransform.translate(50, 50); | 170 childTransform.PreconcatTranslate(50, 50); |
| 171 | 171 |
| 172 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 172 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 173 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 173 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 174 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 174 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 175 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 175 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 176 | 176 |
| 177 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 177 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 178 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 178 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 179 ASSERT_EQ(quadList.size(), 12u); | 179 ASSERT_EQ(quadList.size(), 12u); |
| 180 | 180 |
| 181 gfx::Rect quadVisibleRect1 = quadList[5]->visible_rect; | 181 gfx::Rect quadVisibleRect1 = quadList[5]->visible_rect; |
| 182 EXPECT_EQ(quadVisibleRect1.height(), 50); | 182 EXPECT_EQ(quadVisibleRect1.height(), 50); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 195 | 195 |
| 196 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100000, 1); | 196 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100000, 1); |
| 197 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 197 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 198 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 300 00, 1); | 198 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 300 00, 1); |
| 199 } | 199 } |
| 200 | 200 |
| 201 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize1) | 201 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize1) |
| 202 { | 202 { |
| 203 DECLARE_AND_INITIALIZE_TEST_QUADS | 203 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 204 | 204 |
| 205 childTransform.translate(100, 100); | 205 childTransform.PreconcatTranslate(100, 100); |
| 206 | 206 |
| 207 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to make | 207 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to make |
| 208 // sure it doesn't get culled due to transform rounding. | 208 // sure it doesn't get culled due to transform rounding. |
| 209 WebTransformationMatrix rootTransform; | 209 Transform rootTransform; |
| 210 rootTransform.translate(99.1, 99.1); | 210 rootTransform.PreconcatTranslate(99.1, 99.1); |
| 211 rootTransform.scale(1.018); | 211 rootTransform.PreconcatScale(1.018, 1.018); |
| 212 | 212 |
| 213 rootRect = childRect = gfx::Rect(0, 0, 100, 100); | 213 rootRect = childRect = gfx::Rect(0, 0, 100, 100); |
| 214 | 214 |
| 215 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 215 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 216 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 216 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 217 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 217 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 218 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 218 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 219 | 219 |
| 220 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 220 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 221 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 221 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 222 EXPECT_EQ(quadList.size(), 2u); | 222 EXPECT_EQ(quadList.size(), 2u); |
| 223 | 223 |
| 224 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1 ); | 224 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1 ); |
| 225 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 225 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 226 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 226 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
| 227 } | 227 } |
| 228 | 228 |
| 229 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize2) | 229 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize2) |
| 230 { | 230 { |
| 231 DECLARE_AND_INITIALIZE_TEST_QUADS | 231 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 232 | 232 |
| 233 // Make the child's quad slightly smaller than, and centred over, the root l ayer tile. | 233 // Make the child's quad slightly smaller than, and centred over, the root l ayer tile. |
| 234 // Verify the child does not cause the quad below to be culled due to roundi ng. | 234 // Verify the child does not cause the quad below to be culled due to roundi ng. |
| 235 childTransform.translate(100.1, 100.1); | 235 childTransform.PreconcatTranslate(100.1, 100.1); |
| 236 childTransform.scale(0.982); | 236 childTransform.PreconcatScale(0.982, 0.982); |
| 237 | 237 |
| 238 WebTransformationMatrix rootTransform; | 238 Transform rootTransform; |
| 239 rootTransform.translate(100, 100); | 239 rootTransform.PreconcatTranslate(100, 100); |
| 240 | 240 |
| 241 rootRect = childRect = gfx::Rect(0, 0, 100, 100); | 241 rootRect = childRect = gfx::Rect(0, 0, 100, 100); |
| 242 | 242 |
| 243 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 243 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 244 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 244 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 245 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 245 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 246 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 246 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 247 | 247 |
| 248 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 248 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 249 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 249 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 250 EXPECT_EQ(quadList.size(), 2u); | 250 EXPECT_EQ(quadList.size(), 2u); |
| 251 | 251 |
| 252 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1 ); | 252 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1 ); |
| 253 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 253 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 254 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 254 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
| 255 } | 255 } |
| 256 | 256 |
| 257 TEST(QuadCullerTest, verifyCullChildLinesUpBottomRight) | 257 TEST(QuadCullerTest, verifyCullChildLinesUpBottomRight) |
| 258 { | 258 { |
| 259 DECLARE_AND_INITIALIZE_TEST_QUADS | 259 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 260 | 260 |
| 261 childTransform.translate(100, 100); | 261 childTransform.PreconcatTranslate(100, 100); |
| 262 | 262 |
| 263 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 263 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 264 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 264 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 265 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 265 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 266 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 266 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 267 | 267 |
| 268 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 268 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 269 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 269 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 270 EXPECT_EQ(quadList.size(), 9u); | 270 EXPECT_EQ(quadList.size(), 9u); |
| 271 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 271 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 272 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 272 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 273 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); | 273 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); |
| 274 } | 274 } |
| 275 | 275 |
| 276 TEST(QuadCullerTest, verifyCullSubRegion) | 276 TEST(QuadCullerTest, verifyCullSubRegion) |
| 277 { | 277 { |
| 278 DECLARE_AND_INITIALIZE_TEST_QUADS | 278 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 279 | 279 |
| 280 childTransform.translate(50, 50); | 280 childTransform.PreconcatTranslate(50, 50); |
| 281 | 281 |
| 282 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 282 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 283 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); | 283 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); |
| 284 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 284 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
| 285 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 285 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 286 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 286 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 287 | 287 |
| 288 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 288 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 289 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 289 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 290 EXPECT_EQ(quadList.size(), 12u); | 290 EXPECT_EQ(quadList.size(), 12u); |
| 291 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 291 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 292 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); | 292 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); |
| 293 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); | 293 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); |
| 294 } | 294 } |
| 295 | 295 |
| 296 TEST(QuadCullerTest, verifyCullSubRegion2) | 296 TEST(QuadCullerTest, verifyCullSubRegion2) |
| 297 { | 297 { |
| 298 DECLARE_AND_INITIALIZE_TEST_QUADS | 298 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 299 | 299 |
| 300 childTransform.translate(50, 10); | 300 childTransform.PreconcatTranslate(50, 10); |
| 301 | 301 |
| 302 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 302 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 303 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() * 3 / 4); | 303 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() * 3 / 4); |
| 304 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 304 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
| 305 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 305 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 306 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 306 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 307 | 307 |
| 308 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 308 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 309 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 309 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 310 EXPECT_EQ(quadList.size(), 12u); | 310 EXPECT_EQ(quadList.size(), 12u); |
| 311 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 311 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 312 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 250 00, 1); | 312 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 250 00, 1); |
| 313 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 150 00, 1); | 313 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 150 00, 1); |
| 314 } | 314 } |
| 315 | 315 |
| 316 TEST(QuadCullerTest, verifyCullSubRegionCheckOvercull) | 316 TEST(QuadCullerTest, verifyCullSubRegionCheckOvercull) |
| 317 { | 317 { |
| 318 DECLARE_AND_INITIALIZE_TEST_QUADS | 318 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 319 | 319 |
| 320 childTransform.translate(50, 49); | 320 childTransform.PreconcatTranslate(50, 49); |
| 321 | 321 |
| 322 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 322 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 323 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); | 323 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); |
| 324 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 324 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
| 325 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 325 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 326 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 326 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 327 | 327 |
| 328 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 328 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 329 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 329 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 330 EXPECT_EQ(quadList.size(), 13u); | 330 EXPECT_EQ(quadList.size(), 13u); |
| 331 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 331 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
| 332 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); | 332 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); |
| 333 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); | 333 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); |
| 334 } | 334 } |
| 335 | 335 |
| 336 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsDontOcclude) | 336 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsDontOcclude) |
| 337 { | 337 { |
| 338 DECLARE_AND_INITIALIZE_TEST_QUADS | 338 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 339 | 339 |
| 340 // Use a small rotation so as to not disturb the geometry significantly. | 340 // Use a small rotation so as to not disturb the geometry significantly. |
| 341 childTransform.rotate(1); | 341 childTransform.PreconcatRotate(1); |
| 342 | 342 |
| 343 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 343 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 344 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 344 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 345 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 345 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 346 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 346 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 347 | 347 |
| 348 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 348 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 349 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 349 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 350 EXPECT_EQ(quadList.size(), 13u); | 350 EXPECT_EQ(quadList.size(), 13u); |
| 351 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1); | 351 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1); |
| 352 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 352 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 353 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 353 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
| 354 } | 354 } |
| 355 | 355 |
| 356 // This test requires some explanation: here we are rotating the quads to be cul led. | 356 // This test requires some explanation: here we are rotating the quads to be cul led. |
| 357 // The 2x2 tile child layer remains in the top-left corner, unrotated, but the 3 x3 | 357 // The 2x2 tile child layer remains in the top-left corner, unrotated, but the 3 x3 |
| 358 // tile parent layer is rotated by 1 degree. Of the four tiles the child would | 358 // tile parent layer is rotated by 1 degree. Of the four tiles the child would |
| 359 // normally occlude, three will move (slightly) out from under the child layer, and | 359 // normally occlude, three will move (slightly) out from under the child layer, and |
| 360 // one moves further under the child. Only this last tile should be culled. | 360 // one moves further under the child. Only this last tile should be culled. |
| 361 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsSafelyCulled) | 361 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsSafelyCulled) |
| 362 { | 362 { |
| 363 DECLARE_AND_INITIALIZE_TEST_QUADS | 363 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 364 | 364 |
| 365 // Use a small rotation so as to not disturb the geometry significantly. | 365 // Use a small rotation so as to not disturb the geometry significantly. |
| 366 WebTransformationMatrix parentTransform; | 366 Transform parentTransform; |
| 367 parentTransform.rotate(1); | 367 parentTransform.PreconcatRotate(1); |
| 368 | 368 |
| 369 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootRec t, 1, true, gfx::Rect(), renderSurfaceLayerList); | 369 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootRec t, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 370 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 370 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 371 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 371 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
| 372 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 372 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 373 | 373 |
| 374 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 374 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 375 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 375 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 376 EXPECT_EQ(quadList.size(), 12u); | 376 EXPECT_EQ(quadList.size(), 12u); |
| 377 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1); | 377 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1); |
| 378 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 378 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 379 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 294 00, 1); | 379 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 294 00, 1); |
| 380 } | 380 } |
| 381 | 381 |
| 382 TEST(QuadCullerTest, verifyCullOutsideScissorOverTile) | 382 TEST(QuadCullerTest, verifyCullOutsideScissorOverTile) |
| 383 { | 383 { |
| 384 DECLARE_AND_INITIALIZE_TEST_QUADS | 384 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 385 | 385 |
| 386 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 386 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 387 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 387 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 388 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(200, 100, 100, 100)); | 388 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(200, 100, 100, 100)); |
| 389 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 389 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 390 | 390 |
| 391 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 391 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 392 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 392 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 393 EXPECT_EQ(quadList.size(), 1u); | 393 EXPECT_EQ(quadList.size(), 1u); |
| 394 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); | 394 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); |
| 395 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 395 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 396 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); | 396 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); |
| 397 } | 397 } |
| 398 | 398 |
| 399 TEST(QuadCullerTest, verifyCullOutsideScissorOverCulledTile) | 399 TEST(QuadCullerTest, verifyCullOutsideScissorOverCulledTile) |
| 400 { | 400 { |
| 401 DECLARE_AND_INITIALIZE_TEST_QUADS | 401 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 402 | 402 |
| 403 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 403 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 404 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 404 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 405 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(100, 100, 100, 100)); | 405 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(100, 100, 100, 100)); |
| 406 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 406 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 407 | 407 |
| 408 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 408 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 409 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 409 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 410 EXPECT_EQ(quadList.size(), 1u); | 410 EXPECT_EQ(quadList.size(), 1u); |
| 411 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); | 411 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); |
| 412 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 412 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 413 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); | 413 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); |
| 414 } | 414 } |
| 415 | 415 |
| 416 TEST(QuadCullerTest, verifyCullOutsideScissorOverPartialTiles) | 416 TEST(QuadCullerTest, verifyCullOutsideScissorOverPartialTiles) |
| 417 { | 417 { |
| 418 DECLARE_AND_INITIALIZE_TEST_QUADS | 418 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 419 | 419 |
| 420 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 420 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 421 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 421 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 422 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200)); | 422 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200)); |
| 423 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 423 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 424 | 424 |
| 425 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 425 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 426 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 426 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 427 EXPECT_EQ(quadList.size(), 9u); | 427 EXPECT_EQ(quadList.size(), 9u); |
| 428 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1 ); | 428 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1 ); |
| 429 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 429 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 430 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 900 00, 1); | 430 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 900 00, 1); |
| 431 } | 431 } |
| 432 | 432 |
| 433 TEST(QuadCullerTest, verifyCullOutsideScissorOverNoTiles) | 433 TEST(QuadCullerTest, verifyCullOutsideScissorOverNoTiles) |
| 434 { | 434 { |
| 435 DECLARE_AND_INITIALIZE_TEST_QUADS | 435 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 436 | 436 |
| 437 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 437 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 438 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 438 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 439 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(500, 500, 100, 100)); | 439 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(500, 500, 100, 100)); |
| 440 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 440 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 441 | 441 |
| 442 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 442 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 443 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 443 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 444 EXPECT_EQ(quadList.size(), 0u); | 444 EXPECT_EQ(quadList.size(), 0u); |
| 445 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); | 445 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); |
| 446 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 446 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 447 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 130 000, 1); | 447 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 130 000, 1); |
| 448 } | 448 } |
| 449 | 449 |
| 450 TEST(QuadCullerTest, verifyWithoutMetrics) | 450 TEST(QuadCullerTest, verifyWithoutMetrics) |
| 451 { | 451 { |
| 452 DECLARE_AND_INITIALIZE_TEST_QUADS | 452 DECLARE_AND_INITIALIZE_TEST_QUADS |
| 453 | 453 |
| 454 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 454 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
| 455 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 455 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
| 456 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200), false ); | 456 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200), false ); |
| 457 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 457 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
| 458 | 458 |
| 459 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 459 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
| 460 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 460 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
| 461 EXPECT_EQ(quadList.size(), 9u); | 461 EXPECT_EQ(quadList.size(), 9u); |
| 462 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); | 462 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); |
| 463 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 463 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
| 464 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 464 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
| 465 } | 465 } |
| 466 | 466 |
| 467 } // namespace | 467 } // namespace |
| 468 } // namespace cc | 468 } // namespace cc |
| OLD | NEW |