| 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/layers/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
| 6 | 6 |
| 7 #include "cc/base/scoped_ptr_vector.h" | 7 #include "cc/base/scoped_ptr_vector.h" |
| 8 #include "cc/layers/solid_color_layer_impl.h" | 8 #include "cc/layers/solid_color_layer_impl.h" |
| 9 #include "cc/quads/render_pass_draw_quad.h" | 9 #include "cc/quads/render_pass_draw_quad.h" |
| 10 #include "cc/quads/solid_color_draw_quad.h" | 10 #include "cc/quads/solid_color_draw_quad.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); | 60 SolidColorLayerImpl::Create(host_impl_->active_tree(), 1); |
| 61 scoped_ptr<LayerImpl> layer_before = | 61 scoped_ptr<LayerImpl> layer_before = |
| 62 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); | 62 SolidColorLayerImpl::Create(host_impl_->active_tree(), 2); |
| 63 scoped_ptr<LayerImpl> layer_after = | 63 scoped_ptr<LayerImpl> layer_after = |
| 64 SolidColorLayerImpl::Create(host_impl_->active_tree(), 3); | 64 SolidColorLayerImpl::Create(host_impl_->active_tree(), 3); |
| 65 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 65 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 66 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); | 66 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); |
| 67 | 67 |
| 68 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 68 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 69 root_layer->SetBounds(gfx::Size(100, 100)); | 69 root_layer->SetBounds(gfx::Size(100, 100)); |
| 70 root_layer->SetHasRenderSurface(true); |
| 70 | 71 |
| 71 layer_before->SetPosition(gfx::Point(20, 20)); | 72 layer_before->SetPosition(gfx::Point(20, 20)); |
| 72 layer_before->SetBounds(gfx::Size(14, 14)); | 73 layer_before->SetBounds(gfx::Size(14, 14)); |
| 73 layer_before->SetContentBounds(gfx::Size(14, 14)); | 74 layer_before->SetContentBounds(gfx::Size(14, 14)); |
| 74 layer_before->SetDrawsContent(true); | 75 layer_before->SetDrawsContent(true); |
| 75 layer_before->SetForceRenderSurface(true); | 76 layer_before->SetHasRenderSurface(true); |
| 76 | 77 |
| 77 layer_after->SetPosition(gfx::Point(5, 5)); | 78 layer_after->SetPosition(gfx::Point(5, 5)); |
| 78 layer_after->SetBounds(gfx::Size(15, 15)); | 79 layer_after->SetBounds(gfx::Size(15, 15)); |
| 79 layer_after->SetContentBounds(gfx::Size(15, 15)); | 80 layer_after->SetContentBounds(gfx::Size(15, 15)); |
| 80 layer_after->SetDrawsContent(true); | 81 layer_after->SetDrawsContent(true); |
| 81 layer_after->SetForceRenderSurface(true); | 82 layer_after->SetHasRenderSurface(true); |
| 82 | 83 |
| 83 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); | 84 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); |
| 84 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); | 85 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); |
| 85 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); | 86 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); |
| 86 delegated_renderer_layer->SetDrawsContent(true); | 87 delegated_renderer_layer->SetDrawsContent(true); |
| 87 gfx::Transform transform; | 88 gfx::Transform transform; |
| 88 transform.Translate(1.0, 1.0); | 89 transform.Translate(1.0, 1.0); |
| 89 delegated_renderer_layer->SetTransform(transform); | 90 delegated_renderer_layer->SetTransform(transform); |
| 90 | 91 |
| 91 RenderPassList delegated_render_passes; | 92 RenderPassList delegated_render_passes; |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 EXPECT_TRANSFORMATION_MATRIX_EQ( | 291 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 291 transform * five_six, frame.render_passes[1]->transform_to_root_target); | 292 transform * five_six, frame.render_passes[1]->transform_to_root_target); |
| 292 EXPECT_TRANSFORMATION_MATRIX_EQ( | 293 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 293 transform * seven_eight, | 294 transform * seven_eight, |
| 294 frame.render_passes[2]->transform_to_root_target); | 295 frame.render_passes[2]->transform_to_root_target); |
| 295 | 296 |
| 296 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 297 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 297 host_impl_->DidDrawAllLayers(frame); | 298 host_impl_->DidDrawAllLayers(frame); |
| 298 } | 299 } |
| 299 | 300 |
| 300 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | |
| 301 LayerTreeHostImpl::FrameData frame; | |
| 302 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | |
| 303 | |
| 304 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | |
| 305 // has no need to be a RenderSurface for the quads it carries. | |
| 306 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | |
| 307 | |
| 308 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | |
| 309 host_impl_->DidDrawAllLayers(frame); | |
| 310 } | |
| 311 | |
| 312 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | |
| 313 delegated_renderer_layer_->SetOpacity(0.5f); | |
| 314 | |
| 315 LayerTreeHostImpl::FrameData frame; | |
| 316 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | |
| 317 host_impl_->active_tree()->root_layer()); | |
| 318 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | |
| 319 | |
| 320 // This test case has quads from multiple layers in the delegated renderer, so | |
| 321 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | |
| 322 // render surface. | |
| 323 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | |
| 324 | |
| 325 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | |
| 326 host_impl_->DidDrawAllLayers(frame); | |
| 327 } | |
| 328 | |
| 329 TEST_F(DelegatedRendererLayerImplTestSimple, | |
| 330 DoesOwnARenderSurfaceForTransform) { | |
| 331 gfx::Transform rotation; | |
| 332 rotation.RotateAboutZAxis(30.0); | |
| 333 delegated_renderer_layer_->SetTransform(rotation); | |
| 334 | |
| 335 LayerTreeHostImpl::FrameData frame; | |
| 336 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | |
| 337 host_impl_->active_tree()->root_layer()); | |
| 338 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | |
| 339 | |
| 340 // This test case has quads from multiple layers in the delegated renderer, so | |
| 341 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | |
| 342 // render surface. | |
| 343 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | |
| 344 | |
| 345 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | |
| 346 host_impl_->DidDrawAllLayers(frame); | |
| 347 } | |
| 348 | |
| 349 class DelegatedRendererLayerImplTestOwnSurface | 301 class DelegatedRendererLayerImplTestOwnSurface |
| 350 : public DelegatedRendererLayerImplTestSimple { | 302 : public DelegatedRendererLayerImplTestSimple { |
| 351 public: | 303 public: |
| 352 DelegatedRendererLayerImplTestOwnSurface() | 304 DelegatedRendererLayerImplTestOwnSurface() |
| 353 : DelegatedRendererLayerImplTestSimple() { | 305 : DelegatedRendererLayerImplTestSimple() { |
| 354 delegated_renderer_layer_->SetForceRenderSurface(true); | 306 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 355 } | 307 } |
| 356 }; | 308 }; |
| 357 | 309 |
| 358 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 310 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
| 359 LayerTreeHostImpl::FrameData frame; | 311 LayerTreeHostImpl::FrameData frame; |
| 360 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 312 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 361 | 313 |
| 362 // Each non-DelegatedRendererLayer added one RenderPass. The | 314 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 363 // DelegatedRendererLayer added two contributing passes and its owned surface | 315 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 364 // added one pass. | 316 // added one pass. |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 void SetUpTest() { | 452 void SetUpTest() { |
| 501 host_impl_->SetDeviceScaleFactor(2.f); | 453 host_impl_->SetDeviceScaleFactor(2.f); |
| 502 | 454 |
| 503 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( | 455 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| 504 host_impl_->active_tree(), 1); | 456 host_impl_->active_tree(), 1); |
| 505 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 457 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 506 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); | 458 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); |
| 507 | 459 |
| 508 host_impl_->SetViewportSize(gfx::Size(200, 200)); | 460 host_impl_->SetViewportSize(gfx::Size(200, 200)); |
| 509 root_layer->SetBounds(gfx::Size(100, 100)); | 461 root_layer->SetBounds(gfx::Size(100, 100)); |
| 462 root_layer->SetHasRenderSurface(true); |
| 510 | 463 |
| 511 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); | 464 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); |
| 512 delegated_renderer_layer->SetBounds(gfx::Size(75, 75)); | 465 delegated_renderer_layer->SetBounds(gfx::Size(75, 75)); |
| 513 delegated_renderer_layer->SetContentBounds(gfx::Size(75, 75)); | 466 delegated_renderer_layer->SetContentBounds(gfx::Size(75, 75)); |
| 514 delegated_renderer_layer->SetDrawsContent(true); | 467 delegated_renderer_layer->SetDrawsContent(true); |
| 515 gfx::Transform transform; | 468 gfx::Transform transform; |
| 516 transform.Scale(2.0, 2.0); | 469 transform.Scale(2.0, 2.0); |
| 517 transform.Translate(8.0, 8.0); | 470 transform.Translate(8.0, 8.0); |
| 518 delegated_renderer_layer->SetTransform(transform); | 471 delegated_renderer_layer->SetTransform(transform); |
| 519 | 472 |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 796 contrib_delegated_shared_quad_state->content_to_target_transform); | 749 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 797 | 750 |
| 798 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 751 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 799 host_impl_->DidDrawAllLayers(frame); | 752 host_impl_->DidDrawAllLayers(frame); |
| 800 } | 753 } |
| 801 | 754 |
| 802 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 755 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 803 root_delegated_render_pass_is_clipped_ = false; | 756 root_delegated_render_pass_is_clipped_ = false; |
| 804 SetUpTest(); | 757 SetUpTest(); |
| 805 | 758 |
| 806 delegated_renderer_layer_->SetForceRenderSurface(true); | 759 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 807 | 760 |
| 808 LayerTreeHostImpl::FrameData frame; | 761 LayerTreeHostImpl::FrameData frame; |
| 809 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 762 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 810 | 763 |
| 811 const SharedQuadState* root_delegated_shared_quad_state = nullptr; | 764 const SharedQuadState* root_delegated_shared_quad_state = nullptr; |
| 812 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; | 765 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; |
| 813 VerifyRenderPasses( | 766 VerifyRenderPasses( |
| 814 frame, | 767 frame, |
| 815 3, | 768 3, |
| 816 &root_delegated_shared_quad_state, | 769 &root_delegated_shared_quad_state, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 844 contrib_delegated_shared_quad_state->content_to_target_transform); | 797 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 845 | 798 |
| 846 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 799 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 847 host_impl_->DidDrawAllLayers(frame); | 800 host_impl_->DidDrawAllLayers(frame); |
| 848 } | 801 } |
| 849 | 802 |
| 850 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 803 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 851 root_delegated_render_pass_is_clipped_ = true; | 804 root_delegated_render_pass_is_clipped_ = true; |
| 852 SetUpTest(); | 805 SetUpTest(); |
| 853 | 806 |
| 854 delegated_renderer_layer_->SetForceRenderSurface(true); | 807 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 855 | 808 |
| 856 LayerTreeHostImpl::FrameData frame; | 809 LayerTreeHostImpl::FrameData frame; |
| 857 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 810 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 858 | 811 |
| 859 const SharedQuadState* root_delegated_shared_quad_state = nullptr; | 812 const SharedQuadState* root_delegated_shared_quad_state = nullptr; |
| 860 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; | 813 const SharedQuadState* contrib_delegated_shared_quad_state = nullptr; |
| 861 VerifyRenderPasses( | 814 VerifyRenderPasses( |
| 862 frame, | 815 frame, |
| 863 3, | 816 3, |
| 864 &root_delegated_shared_quad_state, | 817 &root_delegated_shared_quad_state, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 LayerImpl::Create(host_impl_->active_tree(), 1); | 894 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 942 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 895 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 943 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); | 896 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); |
| 944 scoped_ptr<LayerImpl> clip_layer = | 897 scoped_ptr<LayerImpl> clip_layer = |
| 945 LayerImpl::Create(host_impl_->active_tree(), 3); | 898 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 946 scoped_ptr<LayerImpl> origin_layer = | 899 scoped_ptr<LayerImpl> origin_layer = |
| 947 LayerImpl::Create(host_impl_->active_tree(), 4); | 900 LayerImpl::Create(host_impl_->active_tree(), 4); |
| 948 | 901 |
| 949 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 902 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 950 root_layer->SetBounds(gfx::Size(100, 100)); | 903 root_layer->SetBounds(gfx::Size(100, 100)); |
| 904 root_layer->SetHasRenderSurface(true); |
| 951 | 905 |
| 952 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); | 906 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); |
| 953 delegated_renderer_layer->SetBounds(gfx::Size(50, 50)); | 907 delegated_renderer_layer->SetBounds(gfx::Size(50, 50)); |
| 954 delegated_renderer_layer->SetContentBounds(gfx::Size(50, 50)); | 908 delegated_renderer_layer->SetContentBounds(gfx::Size(50, 50)); |
| 955 delegated_renderer_layer->SetDrawsContent(true); | 909 delegated_renderer_layer->SetDrawsContent(true); |
| 956 | 910 |
| 957 RenderPassList delegated_render_passes; | 911 RenderPassList delegated_render_passes; |
| 958 | 912 |
| 959 gfx::Size child_pass_content_bounds(7, 7); | 913 gfx::Size child_pass_content_bounds(7, 7); |
| 960 gfx::Rect child_pass_rect(20, 20, 7, 7); | 914 gfx::Rect child_pass_rect(20, 20, 7, 7); |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1209 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1163 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1210 host_impl_->DidDrawAllLayers(frame); | 1164 host_impl_->DidDrawAllLayers(frame); |
| 1211 } | 1165 } |
| 1212 | 1166 |
| 1213 TEST_F(DelegatedRendererLayerImplTestClip, | 1167 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1214 QuadsUnclipped_LayerUnclipped_Surface) { | 1168 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1215 root_delegated_render_pass_is_clipped_ = false; | 1169 root_delegated_render_pass_is_clipped_ = false; |
| 1216 clip_delegated_renderer_layer_ = false; | 1170 clip_delegated_renderer_layer_ = false; |
| 1217 SetUpTest(); | 1171 SetUpTest(); |
| 1218 | 1172 |
| 1219 delegated_renderer_layer_->SetForceRenderSurface(true); | 1173 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1220 | 1174 |
| 1221 LayerTreeHostImpl::FrameData frame; | 1175 LayerTreeHostImpl::FrameData frame; |
| 1222 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1176 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1223 | 1177 |
| 1224 ASSERT_EQ(3u, frame.render_passes.size()); | 1178 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1225 const QuadList& contrib_delegated_quad_list = | 1179 const QuadList& contrib_delegated_quad_list = |
| 1226 frame.render_passes[0]->quad_list; | 1180 frame.render_passes[0]->quad_list; |
| 1227 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1181 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1228 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1182 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1229 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1183 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1230 const SharedQuadState* root_delegated_shared_quad_state = | 1184 const SharedQuadState* root_delegated_shared_quad_state = |
| 1231 root_delegated_quad_list.front()->shared_quad_state; | 1185 root_delegated_quad_list.front()->shared_quad_state; |
| 1232 | 1186 |
| 1233 // When the layer owns a surface, the quads don't need to be clipped | 1187 // When the layer owns a surface, the quads don't need to be clipped |
| 1234 // further than they already specify. If they aren't clipped, then their | 1188 // further than they already specify. If they aren't clipped, then their |
| 1235 // clip rect is ignored, and they are not set as clipped. | 1189 // clip rect is ignored, and they are not set as clipped. |
| 1236 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1190 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1237 | 1191 |
| 1238 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1192 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1239 host_impl_->DidDrawAllLayers(frame); | 1193 host_impl_->DidDrawAllLayers(frame); |
| 1240 } | 1194 } |
| 1241 | 1195 |
| 1242 TEST_F(DelegatedRendererLayerImplTestClip, | 1196 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1243 QuadsClipped_LayerUnclipped_Surface) { | 1197 QuadsClipped_LayerUnclipped_Surface) { |
| 1244 root_delegated_render_pass_is_clipped_ = true; | 1198 root_delegated_render_pass_is_clipped_ = true; |
| 1245 clip_delegated_renderer_layer_ = false; | 1199 clip_delegated_renderer_layer_ = false; |
| 1246 SetUpTest(); | 1200 SetUpTest(); |
| 1247 | 1201 |
| 1248 delegated_renderer_layer_->SetForceRenderSurface(true); | 1202 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1249 | 1203 |
| 1250 LayerTreeHostImpl::FrameData frame; | 1204 LayerTreeHostImpl::FrameData frame; |
| 1251 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1205 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1252 | 1206 |
| 1253 ASSERT_EQ(3u, frame.render_passes.size()); | 1207 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1254 const QuadList& contrib_delegated_quad_list = | 1208 const QuadList& contrib_delegated_quad_list = |
| 1255 frame.render_passes[0]->quad_list; | 1209 frame.render_passes[0]->quad_list; |
| 1256 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1210 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1257 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1211 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1258 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1212 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1259 const SharedQuadState* root_delegated_shared_quad_state = | 1213 const SharedQuadState* root_delegated_shared_quad_state = |
| 1260 root_delegated_quad_list.front()->shared_quad_state; | 1214 root_delegated_quad_list.front()->shared_quad_state; |
| 1261 | 1215 |
| 1262 // When the quads have a clip of their own, it is used. | 1216 // When the quads have a clip of their own, it is used. |
| 1263 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1217 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1264 root_delegated_shared_quad_state->clip_rect.ToString()); | 1218 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1265 // Quads came with a clip rect. | 1219 // Quads came with a clip rect. |
| 1266 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1220 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1267 | 1221 |
| 1268 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1222 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1269 host_impl_->DidDrawAllLayers(frame); | 1223 host_impl_->DidDrawAllLayers(frame); |
| 1270 } | 1224 } |
| 1271 | 1225 |
| 1272 TEST_F(DelegatedRendererLayerImplTestClip, | 1226 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1273 QuadsUnclipped_LayerClipped_Surface) { | 1227 QuadsUnclipped_LayerClipped_Surface) { |
| 1274 root_delegated_render_pass_is_clipped_ = false; | 1228 root_delegated_render_pass_is_clipped_ = false; |
| 1275 clip_delegated_renderer_layer_ = true; | 1229 clip_delegated_renderer_layer_ = true; |
| 1276 SetUpTest(); | 1230 SetUpTest(); |
| 1277 | 1231 |
| 1278 delegated_renderer_layer_->SetForceRenderSurface(true); | 1232 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1279 | 1233 |
| 1280 LayerTreeHostImpl::FrameData frame; | 1234 LayerTreeHostImpl::FrameData frame; |
| 1281 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1235 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1282 | 1236 |
| 1283 ASSERT_EQ(3u, frame.render_passes.size()); | 1237 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1284 const QuadList& contrib_delegated_quad_list = | 1238 const QuadList& contrib_delegated_quad_list = |
| 1285 frame.render_passes[0]->quad_list; | 1239 frame.render_passes[0]->quad_list; |
| 1286 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1240 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1287 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1241 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1288 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1242 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1289 const SharedQuadState* root_delegated_shared_quad_state = | 1243 const SharedQuadState* root_delegated_shared_quad_state = |
| 1290 root_delegated_quad_list.front()->shared_quad_state; | 1244 root_delegated_quad_list.front()->shared_quad_state; |
| 1291 | 1245 |
| 1292 // When the layer owns a surface, the quads don't need to be clipped | 1246 // When the layer owns a surface, the quads don't need to be clipped |
| 1293 // further than they already specify. If they aren't clipped, then their | 1247 // further than they already specify. If they aren't clipped, then their |
| 1294 // clip rect is ignored, and they are not set as clipped. | 1248 // clip rect is ignored, and they are not set as clipped. |
| 1295 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1249 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1296 | 1250 |
| 1297 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1251 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1298 host_impl_->DidDrawAllLayers(frame); | 1252 host_impl_->DidDrawAllLayers(frame); |
| 1299 } | 1253 } |
| 1300 | 1254 |
| 1301 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1255 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1302 root_delegated_render_pass_is_clipped_ = true; | 1256 root_delegated_render_pass_is_clipped_ = true; |
| 1303 clip_delegated_renderer_layer_ = true; | 1257 clip_delegated_renderer_layer_ = true; |
| 1304 SetUpTest(); | 1258 SetUpTest(); |
| 1305 | 1259 |
| 1306 delegated_renderer_layer_->SetForceRenderSurface(true); | 1260 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1307 | 1261 |
| 1308 LayerTreeHostImpl::FrameData frame; | 1262 LayerTreeHostImpl::FrameData frame; |
| 1309 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1263 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1310 | 1264 |
| 1311 ASSERT_EQ(3u, frame.render_passes.size()); | 1265 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1312 const QuadList& contrib_delegated_quad_list = | 1266 const QuadList& contrib_delegated_quad_list = |
| 1313 frame.render_passes[0]->quad_list; | 1267 frame.render_passes[0]->quad_list; |
| 1314 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1268 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1315 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1269 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1316 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1270 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1329 host_impl_->DidDrawAllLayers(frame); | 1283 host_impl_->DidDrawAllLayers(frame); |
| 1330 } | 1284 } |
| 1331 | 1285 |
| 1332 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { | 1286 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { |
| 1333 scoped_ptr<LayerImpl> root_layer = | 1287 scoped_ptr<LayerImpl> root_layer = |
| 1334 LayerImpl::Create(host_impl_->active_tree(), 1); | 1288 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 1335 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 1289 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 1336 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); | 1290 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); |
| 1337 | 1291 |
| 1338 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 1292 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 1293 root_layer->SetHasRenderSurface(true); |
| 1339 | 1294 |
| 1340 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); | 1295 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); |
| 1341 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); | 1296 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); |
| 1342 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); | 1297 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); |
| 1343 delegated_renderer_layer->SetDrawsContent(true); | 1298 delegated_renderer_layer->SetDrawsContent(true); |
| 1344 | 1299 |
| 1345 RenderPassList delegated_render_passes; | 1300 RenderPassList delegated_render_passes; |
| 1346 TestRenderPass* pass1 = AddRenderPass(&delegated_render_passes, | 1301 TestRenderPass* pass1 = AddRenderPass(&delegated_render_passes, |
| 1347 RenderPassId(9, 6), | 1302 RenderPassId(9, 6), |
| 1348 gfx::Rect(0, 0, 10, 10), | 1303 gfx::Rect(0, 0, 10, 10), |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1571 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1526 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
| 1572 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1527 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
| 1573 | 1528 |
| 1574 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1529 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
| 1575 | 1530 |
| 1576 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1531 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
| 1577 } | 1532 } |
| 1578 | 1533 |
| 1579 } // namespace | 1534 } // namespace |
| 1580 } // namespace cc | 1535 } // namespace cc |
| OLD | NEW |