| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/render_surface_impl.h" | 5 #include "cc/render_surface_impl.h" |
| 6 | 6 |
| 7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
| 8 #include "cc/layer_impl.h" | 8 #include "cc/layer_impl.h" |
| 9 #include "cc/render_pass_sink.h" | 9 #include "cc/render_pass_sink.h" |
| 10 #include "cc/scoped_ptr_vector.h" | 10 #include "cc/scoped_ptr_vector.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 EXPECT_FALSE(renderSurface->SurfacePropertyChanged()) | 32 EXPECT_FALSE(renderSurface->SurfacePropertyChanged()) |
| 33 | 33 |
| 34 TEST(RenderSurfaceTest, verifySurfaceChangesAreTrackedProperly) | 34 TEST(RenderSurfaceTest, verifySurfaceChangesAreTrackedProperly) |
| 35 { | 35 { |
| 36 // | 36 // |
| 37 // This test checks that SurfacePropertyChanged() has the correct behavior. | 37 // This test checks that SurfacePropertyChanged() has the correct behavior. |
| 38 // | 38 // |
| 39 | 39 |
| 40 FakeImplProxy proxy; | 40 FakeImplProxy proxy; |
| 41 FakeLayerTreeHostImpl hostImpl(&proxy); | 41 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 42 scoped_ptr<LayerImpl> owningLayer = LayerImpl::Create(hostImpl.activeTree(),
1); | 42 scoped_ptr<LayerImpl> owningLayer = LayerImpl::Create(hostImpl.active_tree()
, 1); |
| 43 owningLayer->CreateRenderSurface(); | 43 owningLayer->CreateRenderSurface(); |
| 44 ASSERT_TRUE(owningLayer->render_surface()); | 44 ASSERT_TRUE(owningLayer->render_surface()); |
| 45 RenderSurfaceImpl* renderSurface = owningLayer->render_surface(); | 45 RenderSurfaceImpl* renderSurface = owningLayer->render_surface(); |
| 46 gfx::Rect testRect = gfx::Rect(gfx::Point(3, 4), gfx::Size(5, 6)); | 46 gfx::Rect testRect = gfx::Rect(gfx::Point(3, 4), gfx::Size(5, 6)); |
| 47 owningLayer->ResetAllChangeTrackingForSubtree(); | 47 owningLayer->ResetAllChangeTrackingForSubtree(); |
| 48 | 48 |
| 49 // Currently, the contentRect, clipRect, and owningLayer->layerPropertyChang
ed() are | 49 // Currently, the contentRect, clipRect, and owningLayer->layerPropertyChang
ed() are |
| 50 // the only sources of change. | 50 // the only sources of change. |
| 51 EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->SetClipRect(testRect)); | 51 EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->SetClipRect(testRect)); |
| 52 EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->SetContentRect(testRect)); | 52 EXECUTE_AND_VERIFY_SURFACE_CHANGED(renderSurface->SetContentRect(testRect)); |
| 53 | 53 |
| 54 owningLayer->SetOpacity(0.5f); | 54 owningLayer->SetOpacity(0.5f); |
| 55 EXPECT_TRUE(renderSurface->SurfacePropertyChanged()); | 55 EXPECT_TRUE(renderSurface->SurfacePropertyChanged()); |
| 56 owningLayer->ResetAllChangeTrackingForSubtree(); | 56 owningLayer->ResetAllChangeTrackingForSubtree(); |
| 57 | 57 |
| 58 // Setting the surface properties to the same values again should not be con
sidered "change". | 58 // Setting the surface properties to the same values again should not be con
sidered "change". |
| 59 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetClipRect(testRec
t)); | 59 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetClipRect(testRec
t)); |
| 60 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetContentRect(test
Rect)); | 60 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetContentRect(test
Rect)); |
| 61 | 61 |
| 62 scoped_ptr<LayerImpl> dummyMask = LayerImpl::Create(hostImpl.activeTree(), 2
); | 62 scoped_ptr<LayerImpl> dummyMask = LayerImpl::Create(hostImpl.active_tree(),
2); |
| 63 gfx::Transform dummyMatrix; | 63 gfx::Transform dummyMatrix; |
| 64 dummyMatrix.Translate(1.0, 2.0); | 64 dummyMatrix.Translate(1.0, 2.0); |
| 65 | 65 |
| 66 // The rest of the surface properties are either internal and should not cau
se change, | 66 // The rest of the surface properties are either internal and should not cau
se change, |
| 67 // or they are already accounted for by the owninglayer->layerPropertyChange
d(). | 67 // or they are already accounted for by the owninglayer->layerPropertyChange
d(). |
| 68 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetDrawOpacity(0.5f
)); | 68 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetDrawOpacity(0.5f
)); |
| 69 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetDrawTransform(du
mmyMatrix)); | 69 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetDrawTransform(du
mmyMatrix)); |
| 70 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetReplicaDrawTrans
form(dummyMatrix)); | 70 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->SetReplicaDrawTrans
form(dummyMatrix)); |
| 71 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->ClearLayerLists()); | 71 EXECUTE_AND_VERIFY_SURFACE_DID_NOT_CHANGE(renderSurface->ClearLayerLists()); |
| 72 } | 72 } |
| 73 | 73 |
| 74 TEST(RenderSurfaceTest, sanityCheckSurfaceCreatesCorrectSharedQuadState) | 74 TEST(RenderSurfaceTest, sanityCheckSurfaceCreatesCorrectSharedQuadState) |
| 75 { | 75 { |
| 76 FakeImplProxy proxy; | 76 FakeImplProxy proxy; |
| 77 FakeLayerTreeHostImpl hostImpl(&proxy); | 77 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 78 scoped_ptr<LayerImpl> rootLayer = LayerImpl::Create(hostImpl.activeTree(), 1
); | 78 scoped_ptr<LayerImpl> rootLayer = LayerImpl::Create(hostImpl.active_tree(),
1); |
| 79 | 79 |
| 80 scoped_ptr<LayerImpl> owningLayer = LayerImpl::Create(hostImpl.activeTree(),
2); | 80 scoped_ptr<LayerImpl> owningLayer = LayerImpl::Create(hostImpl.active_tree()
, 2); |
| 81 owningLayer->CreateRenderSurface(); | 81 owningLayer->CreateRenderSurface(); |
| 82 ASSERT_TRUE(owningLayer->render_surface()); | 82 ASSERT_TRUE(owningLayer->render_surface()); |
| 83 owningLayer->draw_properties().render_target = owningLayer.get(); | 83 owningLayer->draw_properties().render_target = owningLayer.get(); |
| 84 RenderSurfaceImpl* renderSurface = owningLayer->render_surface(); | 84 RenderSurfaceImpl* renderSurface = owningLayer->render_surface(); |
| 85 | 85 |
| 86 rootLayer->AddChild(owningLayer.Pass()); | 86 rootLayer->AddChild(owningLayer.Pass()); |
| 87 | 87 |
| 88 gfx::Rect contentRect = gfx::Rect(gfx::Point(), gfx::Size(50, 50)); | 88 gfx::Rect contentRect = gfx::Rect(gfx::Point(), gfx::Size(50, 50)); |
| 89 gfx::Rect clipRect = gfx::Rect(gfx::Point(5, 5), gfx::Size(40, 40)); | 89 gfx::Rect clipRect = gfx::Rect(gfx::Point(5, 5), gfx::Size(40, 40)); |
| 90 gfx::Transform origin; | 90 gfx::Transform origin; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 108 SharedQuadState* sharedQuadState = sharedStateList[0]; | 108 SharedQuadState* sharedQuadState = sharedStateList[0]; |
| 109 | 109 |
| 110 EXPECT_EQ(30, sharedQuadState->content_to_target_transform.matrix().getDoubl
e(0, 3)); | 110 EXPECT_EQ(30, sharedQuadState->content_to_target_transform.matrix().getDoubl
e(0, 3)); |
| 111 EXPECT_EQ(40, sharedQuadState->content_to_target_transform.matrix().getDoubl
e(1, 3)); | 111 EXPECT_EQ(40, sharedQuadState->content_to_target_transform.matrix().getDoubl
e(1, 3)); |
| 112 EXPECT_RECT_EQ(contentRect, gfx::Rect(sharedQuadState->visible_content_rect)
); | 112 EXPECT_RECT_EQ(contentRect, gfx::Rect(sharedQuadState->visible_content_rect)
); |
| 113 EXPECT_EQ(1, sharedQuadState->opacity); | 113 EXPECT_EQ(1, sharedQuadState->opacity); |
| 114 } | 114 } |
| 115 | 115 |
| 116 class TestRenderPassSink : public RenderPassSink { | 116 class TestRenderPassSink : public RenderPassSink { |
| 117 public: | 117 public: |
| 118 virtual void appendRenderPass(scoped_ptr<RenderPass> renderPass) OVERRIDE {
m_renderPasses.push_back(renderPass.Pass()); } | 118 virtual void AppendRenderPass(scoped_ptr<RenderPass> renderPass) OVERRIDE {
m_renderPasses.push_back(renderPass.Pass()); } |
| 119 | 119 |
| 120 const ScopedPtrVector<RenderPass>& renderPasses() const { return m_renderPas
ses; } | 120 const ScopedPtrVector<RenderPass>& renderPasses() const { return m_renderPas
ses; } |
| 121 | 121 |
| 122 private: | 122 private: |
| 123 ScopedPtrVector<RenderPass> m_renderPasses; | 123 ScopedPtrVector<RenderPass> m_renderPasses; |
| 124 }; | 124 }; |
| 125 | 125 |
| 126 TEST(RenderSurfaceTest, sanityCheckSurfaceCreatesCorrectRenderPass) | 126 TEST(RenderSurfaceTest, sanityCheckSurfaceCreatesCorrectRenderPass) |
| 127 { | 127 { |
| 128 FakeImplProxy proxy; | 128 FakeImplProxy proxy; |
| 129 FakeLayerTreeHostImpl hostImpl(&proxy); | 129 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 130 scoped_ptr<LayerImpl> rootLayer = LayerImpl::Create(hostImpl.activeTree(), 1
); | 130 scoped_ptr<LayerImpl> rootLayer = LayerImpl::Create(hostImpl.active_tree(),
1); |
| 131 | 131 |
| 132 scoped_ptr<LayerImpl> owningLayer = LayerImpl::Create(hostImpl.activeTree(),
2); | 132 scoped_ptr<LayerImpl> owningLayer = LayerImpl::Create(hostImpl.active_tree()
, 2); |
| 133 owningLayer->CreateRenderSurface(); | 133 owningLayer->CreateRenderSurface(); |
| 134 ASSERT_TRUE(owningLayer->render_surface()); | 134 ASSERT_TRUE(owningLayer->render_surface()); |
| 135 owningLayer->draw_properties().render_target = owningLayer.get(); | 135 owningLayer->draw_properties().render_target = owningLayer.get(); |
| 136 RenderSurfaceImpl* renderSurface = owningLayer->render_surface(); | 136 RenderSurfaceImpl* renderSurface = owningLayer->render_surface(); |
| 137 | 137 |
| 138 rootLayer->AddChild(owningLayer.Pass()); | 138 rootLayer->AddChild(owningLayer.Pass()); |
| 139 | 139 |
| 140 gfx::Rect contentRect = gfx::Rect(gfx::Point(), gfx::Size(50, 50)); | 140 gfx::Rect contentRect = gfx::Rect(gfx::Point(), gfx::Size(50, 50)); |
| 141 gfx::Transform origin; | 141 gfx::Transform origin; |
| 142 origin.Translate(30, 40); | 142 origin.Translate(30, 40); |
| 143 | 143 |
| 144 renderSurface->SetScreenSpaceTransform(origin); | 144 renderSurface->SetScreenSpaceTransform(origin); |
| 145 renderSurface->SetContentRect(contentRect); | 145 renderSurface->SetContentRect(contentRect); |
| 146 | 146 |
| 147 TestRenderPassSink passSink; | 147 TestRenderPassSink passSink; |
| 148 | 148 |
| 149 renderSurface->AppendRenderPasses(&passSink); | 149 renderSurface->AppendRenderPasses(&passSink); |
| 150 | 150 |
| 151 ASSERT_EQ(1u, passSink.renderPasses().size()); | 151 ASSERT_EQ(1u, passSink.renderPasses().size()); |
| 152 RenderPass* pass = passSink.renderPasses()[0]; | 152 RenderPass* pass = passSink.renderPasses()[0]; |
| 153 | 153 |
| 154 EXPECT_EQ(RenderPass::Id(2, 0), pass->id); | 154 EXPECT_EQ(RenderPass::Id(2, 0), pass->id); |
| 155 EXPECT_RECT_EQ(contentRect, pass->output_rect); | 155 EXPECT_RECT_EQ(contentRect, pass->output_rect); |
| 156 EXPECT_EQ(origin, pass->transform_to_root_target); | 156 EXPECT_EQ(origin, pass->transform_to_root_target); |
| 157 } | 157 } |
| 158 | 158 |
| 159 } // namespace | 159 } // namespace |
| 160 } // namespace cc | 160 } // namespace cc |
| OLD | NEW |