| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); | 62 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); |
| 63 scoped_ptr<LayerImpl> layer_before = SolidColorLayerImpl::Create( | 63 scoped_ptr<LayerImpl> layer_before = SolidColorLayerImpl::Create( |
| 64 host_impl_->active_tree(), 2).PassAs<LayerImpl>(); | 64 host_impl_->active_tree(), 2).PassAs<LayerImpl>(); |
| 65 scoped_ptr<LayerImpl> layer_after = SolidColorLayerImpl::Create( | 65 scoped_ptr<LayerImpl> layer_after = SolidColorLayerImpl::Create( |
| 66 host_impl_->active_tree(), 3).PassAs<LayerImpl>(); | 66 host_impl_->active_tree(), 3).PassAs<LayerImpl>(); |
| 67 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 67 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 68 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); | 68 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); |
| 69 | 69 |
| 70 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 70 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 71 root_layer->SetBounds(gfx::Size(100, 100)); | 71 root_layer->SetBounds(gfx::Size(100, 100)); |
| 72 root_layer->SetHasRenderSurface(true); |
| 72 | 73 |
| 73 layer_before->SetPosition(gfx::Point(20, 20)); | 74 layer_before->SetPosition(gfx::Point(20, 20)); |
| 74 layer_before->SetBounds(gfx::Size(14, 14)); | 75 layer_before->SetBounds(gfx::Size(14, 14)); |
| 75 layer_before->SetContentBounds(gfx::Size(14, 14)); | 76 layer_before->SetContentBounds(gfx::Size(14, 14)); |
| 76 layer_before->SetDrawsContent(true); | 77 layer_before->SetDrawsContent(true); |
| 77 layer_before->SetForceRenderSurface(true); | 78 layer_before->SetHasRenderSurface(true); |
| 78 | 79 |
| 79 layer_after->SetPosition(gfx::Point(5, 5)); | 80 layer_after->SetPosition(gfx::Point(5, 5)); |
| 80 layer_after->SetBounds(gfx::Size(15, 15)); | 81 layer_after->SetBounds(gfx::Size(15, 15)); |
| 81 layer_after->SetContentBounds(gfx::Size(15, 15)); | 82 layer_after->SetContentBounds(gfx::Size(15, 15)); |
| 82 layer_after->SetDrawsContent(true); | 83 layer_after->SetDrawsContent(true); |
| 83 layer_after->SetForceRenderSurface(true); | 84 layer_after->SetHasRenderSurface(true); |
| 84 | 85 |
| 85 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); | 86 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); |
| 86 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); | 87 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); |
| 87 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); | 88 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); |
| 88 delegated_renderer_layer->SetDrawsContent(true); | 89 delegated_renderer_layer->SetDrawsContent(true); |
| 89 gfx::Transform transform; | 90 gfx::Transform transform; |
| 90 transform.Translate(1.0, 1.0); | 91 transform.Translate(1.0, 1.0); |
| 91 delegated_renderer_layer->SetTransform(transform); | 92 delegated_renderer_layer->SetTransform(transform); |
| 92 | 93 |
| 93 RenderPassList delegated_render_passes; | 94 RenderPassList delegated_render_passes; |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 EXPECT_TRANSFORMATION_MATRIX_EQ( | 289 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 289 transform * five_six, frame.render_passes[1]->transform_to_root_target); | 290 transform * five_six, frame.render_passes[1]->transform_to_root_target); |
| 290 EXPECT_TRANSFORMATION_MATRIX_EQ( | 291 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 291 transform * seven_eight, | 292 transform * seven_eight, |
| 292 frame.render_passes[2]->transform_to_root_target); | 293 frame.render_passes[2]->transform_to_root_target); |
| 293 | 294 |
| 294 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 295 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 295 host_impl_->DidDrawAllLayers(frame); | 296 host_impl_->DidDrawAllLayers(frame); |
| 296 } | 297 } |
| 297 | 298 |
| 298 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | |
| 299 LayerTreeHostImpl::FrameData frame; | |
| 300 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | |
| 301 | |
| 302 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | |
| 303 // has no need to be a RenderSurface for the quads it carries. | |
| 304 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | |
| 305 | |
| 306 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | |
| 307 host_impl_->DidDrawAllLayers(frame); | |
| 308 } | |
| 309 | |
| 310 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | |
| 311 delegated_renderer_layer_->SetOpacity(0.5f); | |
| 312 | |
| 313 LayerTreeHostImpl::FrameData frame; | |
| 314 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | |
| 315 host_impl_->active_tree()->root_layer()); | |
| 316 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | |
| 317 | |
| 318 // This test case has quads from multiple layers in the delegated renderer, so | |
| 319 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | |
| 320 // render surface. | |
| 321 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | |
| 322 | |
| 323 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | |
| 324 host_impl_->DidDrawAllLayers(frame); | |
| 325 } | |
| 326 | |
| 327 TEST_F(DelegatedRendererLayerImplTestSimple, | |
| 328 DoesOwnARenderSurfaceForTransform) { | |
| 329 gfx::Transform rotation; | |
| 330 rotation.RotateAboutZAxis(30.0); | |
| 331 delegated_renderer_layer_->SetTransform(rotation); | |
| 332 | |
| 333 LayerTreeHostImpl::FrameData frame; | |
| 334 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren( | |
| 335 host_impl_->active_tree()->root_layer()); | |
| 336 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | |
| 337 | |
| 338 // This test case has quads from multiple layers in the delegated renderer, so | |
| 339 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | |
| 340 // render surface. | |
| 341 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | |
| 342 | |
| 343 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | |
| 344 host_impl_->DidDrawAllLayers(frame); | |
| 345 } | |
| 346 | |
| 347 class DelegatedRendererLayerImplTestOwnSurface | 299 class DelegatedRendererLayerImplTestOwnSurface |
| 348 : public DelegatedRendererLayerImplTestSimple { | 300 : public DelegatedRendererLayerImplTestSimple { |
| 349 public: | 301 public: |
| 350 DelegatedRendererLayerImplTestOwnSurface() | 302 DelegatedRendererLayerImplTestOwnSurface() |
| 351 : DelegatedRendererLayerImplTestSimple() { | 303 : DelegatedRendererLayerImplTestSimple() { |
| 352 delegated_renderer_layer_->SetForceRenderSurface(true); | 304 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 353 } | 305 } |
| 354 }; | 306 }; |
| 355 | 307 |
| 356 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 308 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
| 357 LayerTreeHostImpl::FrameData frame; | 309 LayerTreeHostImpl::FrameData frame; |
| 358 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 310 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 359 | 311 |
| 360 // Each non-DelegatedRendererLayer added one RenderPass. The | 312 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 361 // DelegatedRendererLayer added two contributing passes and its owned surface | 313 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 362 // added one pass. | 314 // added one pass. |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 void SetUpTest() { | 444 void SetUpTest() { |
| 493 host_impl_->SetDeviceScaleFactor(2.f); | 445 host_impl_->SetDeviceScaleFactor(2.f); |
| 494 | 446 |
| 495 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( | 447 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| 496 host_impl_->active_tree(), 1); | 448 host_impl_->active_tree(), 1); |
| 497 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 449 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 498 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); | 450 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); |
| 499 | 451 |
| 500 host_impl_->SetViewportSize(gfx::Size(200, 200)); | 452 host_impl_->SetViewportSize(gfx::Size(200, 200)); |
| 501 root_layer->SetBounds(gfx::Size(100, 100)); | 453 root_layer->SetBounds(gfx::Size(100, 100)); |
| 454 root_layer->SetHasRenderSurface(true); |
| 502 | 455 |
| 503 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); | 456 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); |
| 504 delegated_renderer_layer->SetBounds(gfx::Size(75, 75)); | 457 delegated_renderer_layer->SetBounds(gfx::Size(75, 75)); |
| 505 delegated_renderer_layer->SetContentBounds(gfx::Size(75, 75)); | 458 delegated_renderer_layer->SetContentBounds(gfx::Size(75, 75)); |
| 506 delegated_renderer_layer->SetDrawsContent(true); | 459 delegated_renderer_layer->SetDrawsContent(true); |
| 507 gfx::Transform transform; | 460 gfx::Transform transform; |
| 508 transform.Scale(2.0, 2.0); | 461 transform.Scale(2.0, 2.0); |
| 509 transform.Translate(8.0, 8.0); | 462 transform.Translate(8.0, 8.0); |
| 510 delegated_renderer_layer->SetTransform(transform); | 463 delegated_renderer_layer->SetTransform(transform); |
| 511 | 464 |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 contrib_delegated_shared_quad_state->content_to_target_transform); | 740 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 788 | 741 |
| 789 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 742 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 790 host_impl_->DidDrawAllLayers(frame); | 743 host_impl_->DidDrawAllLayers(frame); |
| 791 } | 744 } |
| 792 | 745 |
| 793 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 746 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 794 root_delegated_render_pass_is_clipped_ = false; | 747 root_delegated_render_pass_is_clipped_ = false; |
| 795 SetUpTest(); | 748 SetUpTest(); |
| 796 | 749 |
| 797 delegated_renderer_layer_->SetForceRenderSurface(true); | 750 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 798 | 751 |
| 799 LayerTreeHostImpl::FrameData frame; | 752 LayerTreeHostImpl::FrameData frame; |
| 800 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 753 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 801 | 754 |
| 802 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 755 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 803 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 756 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 804 VerifyRenderPasses( | 757 VerifyRenderPasses( |
| 805 frame, | 758 frame, |
| 806 3, | 759 3, |
| 807 &root_delegated_shared_quad_state, | 760 &root_delegated_shared_quad_state, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 835 contrib_delegated_shared_quad_state->content_to_target_transform); | 788 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 836 | 789 |
| 837 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 790 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 838 host_impl_->DidDrawAllLayers(frame); | 791 host_impl_->DidDrawAllLayers(frame); |
| 839 } | 792 } |
| 840 | 793 |
| 841 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 794 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 842 root_delegated_render_pass_is_clipped_ = true; | 795 root_delegated_render_pass_is_clipped_ = true; |
| 843 SetUpTest(); | 796 SetUpTest(); |
| 844 | 797 |
| 845 delegated_renderer_layer_->SetForceRenderSurface(true); | 798 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 846 | 799 |
| 847 LayerTreeHostImpl::FrameData frame; | 800 LayerTreeHostImpl::FrameData frame; |
| 848 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 801 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 849 | 802 |
| 850 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 803 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 851 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 804 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 852 VerifyRenderPasses( | 805 VerifyRenderPasses( |
| 853 frame, | 806 frame, |
| 854 3, | 807 3, |
| 855 &root_delegated_shared_quad_state, | 808 &root_delegated_shared_quad_state, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 932 LayerImpl::Create(host_impl_->active_tree(), 1); | 885 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 933 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 886 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 934 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); | 887 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 2); |
| 935 scoped_ptr<LayerImpl> clip_layer = | 888 scoped_ptr<LayerImpl> clip_layer = |
| 936 LayerImpl::Create(host_impl_->active_tree(), 3); | 889 LayerImpl::Create(host_impl_->active_tree(), 3); |
| 937 scoped_ptr<LayerImpl> origin_layer = | 890 scoped_ptr<LayerImpl> origin_layer = |
| 938 LayerImpl::Create(host_impl_->active_tree(), 4); | 891 LayerImpl::Create(host_impl_->active_tree(), 4); |
| 939 | 892 |
| 940 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 893 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 941 root_layer->SetBounds(gfx::Size(100, 100)); | 894 root_layer->SetBounds(gfx::Size(100, 100)); |
| 895 root_layer->SetHasRenderSurface(true); |
| 942 | 896 |
| 943 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); | 897 delegated_renderer_layer->SetPosition(gfx::Point(20, 20)); |
| 944 delegated_renderer_layer->SetBounds(gfx::Size(50, 50)); | 898 delegated_renderer_layer->SetBounds(gfx::Size(50, 50)); |
| 945 delegated_renderer_layer->SetContentBounds(gfx::Size(50, 50)); | 899 delegated_renderer_layer->SetContentBounds(gfx::Size(50, 50)); |
| 946 delegated_renderer_layer->SetDrawsContent(true); | 900 delegated_renderer_layer->SetDrawsContent(true); |
| 947 | 901 |
| 948 RenderPassList delegated_render_passes; | 902 RenderPassList delegated_render_passes; |
| 949 | 903 |
| 950 gfx::Size child_pass_content_bounds(7, 7); | 904 gfx::Size child_pass_content_bounds(7, 7); |
| 951 gfx::Rect child_pass_rect(20, 20, 7, 7); | 905 gfx::Rect child_pass_rect(20, 20, 7, 7); |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1199 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1153 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1200 host_impl_->DidDrawAllLayers(frame); | 1154 host_impl_->DidDrawAllLayers(frame); |
| 1201 } | 1155 } |
| 1202 | 1156 |
| 1203 TEST_F(DelegatedRendererLayerImplTestClip, | 1157 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1204 QuadsUnclipped_LayerUnclipped_Surface) { | 1158 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1205 root_delegated_render_pass_is_clipped_ = false; | 1159 root_delegated_render_pass_is_clipped_ = false; |
| 1206 clip_delegated_renderer_layer_ = false; | 1160 clip_delegated_renderer_layer_ = false; |
| 1207 SetUpTest(); | 1161 SetUpTest(); |
| 1208 | 1162 |
| 1209 delegated_renderer_layer_->SetForceRenderSurface(true); | 1163 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1210 | 1164 |
| 1211 LayerTreeHostImpl::FrameData frame; | 1165 LayerTreeHostImpl::FrameData frame; |
| 1212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1166 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1213 | 1167 |
| 1214 ASSERT_EQ(3u, frame.render_passes.size()); | 1168 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1215 const QuadList& contrib_delegated_quad_list = | 1169 const QuadList& contrib_delegated_quad_list = |
| 1216 frame.render_passes[0]->quad_list; | 1170 frame.render_passes[0]->quad_list; |
| 1217 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1171 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1218 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1172 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1219 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1173 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1220 const SharedQuadState* root_delegated_shared_quad_state = | 1174 const SharedQuadState* root_delegated_shared_quad_state = |
| 1221 root_delegated_quad_list[0]->shared_quad_state; | 1175 root_delegated_quad_list[0]->shared_quad_state; |
| 1222 | 1176 |
| 1223 // When the layer owns a surface, the quads don't need to be clipped | 1177 // When the layer owns a surface, the quads don't need to be clipped |
| 1224 // further than they already specify. If they aren't clipped, then their | 1178 // further than they already specify. If they aren't clipped, then their |
| 1225 // clip rect is ignored, and they are not set as clipped. | 1179 // clip rect is ignored, and they are not set as clipped. |
| 1226 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1180 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1227 | 1181 |
| 1228 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1182 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1229 host_impl_->DidDrawAllLayers(frame); | 1183 host_impl_->DidDrawAllLayers(frame); |
| 1230 } | 1184 } |
| 1231 | 1185 |
| 1232 TEST_F(DelegatedRendererLayerImplTestClip, | 1186 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1233 QuadsClipped_LayerUnclipped_Surface) { | 1187 QuadsClipped_LayerUnclipped_Surface) { |
| 1234 root_delegated_render_pass_is_clipped_ = true; | 1188 root_delegated_render_pass_is_clipped_ = true; |
| 1235 clip_delegated_renderer_layer_ = false; | 1189 clip_delegated_renderer_layer_ = false; |
| 1236 SetUpTest(); | 1190 SetUpTest(); |
| 1237 | 1191 |
| 1238 delegated_renderer_layer_->SetForceRenderSurface(true); | 1192 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1239 | 1193 |
| 1240 LayerTreeHostImpl::FrameData frame; | 1194 LayerTreeHostImpl::FrameData frame; |
| 1241 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1195 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1242 | 1196 |
| 1243 ASSERT_EQ(3u, frame.render_passes.size()); | 1197 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1244 const QuadList& contrib_delegated_quad_list = | 1198 const QuadList& contrib_delegated_quad_list = |
| 1245 frame.render_passes[0]->quad_list; | 1199 frame.render_passes[0]->quad_list; |
| 1246 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1200 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1247 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1201 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1248 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1202 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1249 const SharedQuadState* root_delegated_shared_quad_state = | 1203 const SharedQuadState* root_delegated_shared_quad_state = |
| 1250 root_delegated_quad_list[0]->shared_quad_state; | 1204 root_delegated_quad_list[0]->shared_quad_state; |
| 1251 | 1205 |
| 1252 // When the quads have a clip of their own, it is used. | 1206 // When the quads have a clip of their own, it is used. |
| 1253 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1207 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1254 root_delegated_shared_quad_state->clip_rect.ToString()); | 1208 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1255 // Quads came with a clip rect. | 1209 // Quads came with a clip rect. |
| 1256 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1210 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1257 | 1211 |
| 1258 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1212 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1259 host_impl_->DidDrawAllLayers(frame); | 1213 host_impl_->DidDrawAllLayers(frame); |
| 1260 } | 1214 } |
| 1261 | 1215 |
| 1262 TEST_F(DelegatedRendererLayerImplTestClip, | 1216 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1263 QuadsUnclipped_LayerClipped_Surface) { | 1217 QuadsUnclipped_LayerClipped_Surface) { |
| 1264 root_delegated_render_pass_is_clipped_ = false; | 1218 root_delegated_render_pass_is_clipped_ = false; |
| 1265 clip_delegated_renderer_layer_ = true; | 1219 clip_delegated_renderer_layer_ = true; |
| 1266 SetUpTest(); | 1220 SetUpTest(); |
| 1267 | 1221 |
| 1268 delegated_renderer_layer_->SetForceRenderSurface(true); | 1222 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1269 | 1223 |
| 1270 LayerTreeHostImpl::FrameData frame; | 1224 LayerTreeHostImpl::FrameData frame; |
| 1271 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1225 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1272 | 1226 |
| 1273 ASSERT_EQ(3u, frame.render_passes.size()); | 1227 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1274 const QuadList& contrib_delegated_quad_list = | 1228 const QuadList& contrib_delegated_quad_list = |
| 1275 frame.render_passes[0]->quad_list; | 1229 frame.render_passes[0]->quad_list; |
| 1276 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1230 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1277 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1231 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1278 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1232 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1279 const SharedQuadState* root_delegated_shared_quad_state = | 1233 const SharedQuadState* root_delegated_shared_quad_state = |
| 1280 root_delegated_quad_list[0]->shared_quad_state; | 1234 root_delegated_quad_list[0]->shared_quad_state; |
| 1281 | 1235 |
| 1282 // When the layer owns a surface, the quads don't need to be clipped | 1236 // When the layer owns a surface, the quads don't need to be clipped |
| 1283 // further than they already specify. If they aren't clipped, then their | 1237 // further than they already specify. If they aren't clipped, then their |
| 1284 // clip rect is ignored, and they are not set as clipped. | 1238 // clip rect is ignored, and they are not set as clipped. |
| 1285 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1239 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1286 | 1240 |
| 1287 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1241 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1288 host_impl_->DidDrawAllLayers(frame); | 1242 host_impl_->DidDrawAllLayers(frame); |
| 1289 } | 1243 } |
| 1290 | 1244 |
| 1291 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1245 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1292 root_delegated_render_pass_is_clipped_ = true; | 1246 root_delegated_render_pass_is_clipped_ = true; |
| 1293 clip_delegated_renderer_layer_ = true; | 1247 clip_delegated_renderer_layer_ = true; |
| 1294 SetUpTest(); | 1248 SetUpTest(); |
| 1295 | 1249 |
| 1296 delegated_renderer_layer_->SetForceRenderSurface(true); | 1250 delegated_renderer_layer_->SetHasRenderSurface(true); |
| 1297 | 1251 |
| 1298 LayerTreeHostImpl::FrameData frame; | 1252 LayerTreeHostImpl::FrameData frame; |
| 1299 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1253 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1300 | 1254 |
| 1301 ASSERT_EQ(3u, frame.render_passes.size()); | 1255 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1302 const QuadList& contrib_delegated_quad_list = | 1256 const QuadList& contrib_delegated_quad_list = |
| 1303 frame.render_passes[0]->quad_list; | 1257 frame.render_passes[0]->quad_list; |
| 1304 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1258 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1305 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1259 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1306 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1260 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1319 host_impl_->DidDrawAllLayers(frame); | 1273 host_impl_->DidDrawAllLayers(frame); |
| 1320 } | 1274 } |
| 1321 | 1275 |
| 1322 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { | 1276 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { |
| 1323 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( | 1277 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| 1324 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); | 1278 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); |
| 1325 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 1279 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 1326 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); | 1280 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); |
| 1327 | 1281 |
| 1328 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 1282 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 1283 root_layer->SetHasRenderSurface(true); |
| 1329 | 1284 |
| 1330 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); | 1285 delegated_renderer_layer->SetPosition(gfx::Point(3, 3)); |
| 1331 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); | 1286 delegated_renderer_layer->SetBounds(gfx::Size(10, 10)); |
| 1332 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); | 1287 delegated_renderer_layer->SetContentBounds(gfx::Size(10, 10)); |
| 1333 delegated_renderer_layer->SetDrawsContent(true); | 1288 delegated_renderer_layer->SetDrawsContent(true); |
| 1334 | 1289 |
| 1335 RenderPassList delegated_render_passes; | 1290 RenderPassList delegated_render_passes; |
| 1336 TestRenderPass* pass1 = AddRenderPass(&delegated_render_passes, | 1291 TestRenderPass* pass1 = AddRenderPass(&delegated_render_passes, |
| 1337 RenderPassId(9, 6), | 1292 RenderPassId(9, 6), |
| 1338 gfx::Rect(0, 0, 10, 10), | 1293 gfx::Rect(0, 0, 10, 10), |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1554 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1509 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
| 1555 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1510 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
| 1556 | 1511 |
| 1557 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1512 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
| 1558 | 1513 |
| 1559 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1514 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
| 1560 } | 1515 } |
| 1561 | 1516 |
| 1562 } // namespace | 1517 } // namespace |
| 1563 } // namespace cc | 1518 } // namespace cc |
| OLD | NEW |