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 |