| 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/debug/test_web_graphics_context_3d.h" | 8 #include "cc/debug/test_web_graphics_context_3d.h" |
| 9 #include "cc/layers/append_quads_data.h" | 9 #include "cc/layers/append_quads_data.h" |
| 10 #include "cc/layers/quad_sink.h" | 10 #include "cc/layers/quad_sink.h" |
| 11 #include "cc/layers/solid_color_layer_impl.h" | 11 #include "cc/layers/solid_color_layer_impl.h" |
| 12 #include "cc/quads/render_pass_draw_quad.h" | 12 #include "cc/quads/render_pass_draw_quad.h" |
| 13 #include "cc/quads/solid_color_draw_quad.h" | 13 #include "cc/quads/solid_color_draw_quad.h" |
| 14 #include "cc/test/fake_delegated_renderer_layer_impl.h" | 14 #include "cc/test/fake_delegated_renderer_layer_impl.h" |
| 15 #include "cc/test/fake_layer_tree_host_impl.h" | 15 #include "cc/test/fake_layer_tree_host_impl.h" |
| 16 #include "cc/test/fake_layer_tree_host_impl_client.h" | 16 #include "cc/test/fake_layer_tree_host_impl_client.h" |
| 17 #include "cc/test/fake_output_surface.h" | 17 #include "cc/test/fake_output_surface.h" |
| 18 #include "cc/test/fake_proxy.h" | 18 #include "cc/test/fake_proxy.h" |
| 19 #include "cc/test/fake_rendering_stats_instrumentation.h" | 19 #include "cc/test/fake_rendering_stats_instrumentation.h" |
| 20 #include "cc/test/geometry_test_utils.h" | 20 #include "cc/test/geometry_test_utils.h" |
| 21 #include "cc/test/mock_quad_culler.h" | 21 #include "cc/test/mock_quad_culler.h" |
| 22 #include "cc/test/render_pass_test_common.h" | 22 #include "cc/test/render_pass_test_common.h" |
| 23 #include "cc/test/render_pass_test_utils.h" | 23 #include "cc/test/render_pass_test_utils.h" |
| 24 #include "cc/trees/layer_tree_host_impl.h" | 24 #include "cc/trees/layer_tree_host_impl.h" |
| 25 #include "cc/trees/layer_tree_impl.h" | 25 #include "cc/trees/layer_tree_impl.h" |
| 26 #include "cc/trees/single_thread_proxy.h" | 26 #include "cc/trees/single_thread_proxy.h" |
| 27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 28 #include "ui/gfx/frame_time.h" |
| 28 #include "ui/gfx/transform.h" | 29 #include "ui/gfx/transform.h" |
| 29 | 30 |
| 30 namespace cc { | 31 namespace cc { |
| 31 namespace { | 32 namespace { |
| 32 | 33 |
| 33 class DelegatedRendererLayerImplTest : public testing::Test { | 34 class DelegatedRendererLayerImplTest : public testing::Test { |
| 34 public: | 35 public: |
| 35 DelegatedRendererLayerImplTest() | 36 DelegatedRendererLayerImplTest() |
| 36 : proxy_(), | 37 : proxy_(), |
| 37 always_impl_thread_and_main_thread_blocked_(&proxy_) { | 38 always_impl_thread_and_main_thread_blocked_(&proxy_) { |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); | 159 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); |
| 159 EXPECT_EQ(0, frame.render_passes[4]->id.index); | 160 EXPECT_EQ(0, frame.render_passes[4]->id.index); |
| 160 | 161 |
| 161 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 162 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
| 162 // in order. | 163 // in order. |
| 163 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 164 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 164 frame.render_passes[1]->output_rect.ToString()); | 165 frame.render_passes[1]->output_rect.ToString()); |
| 165 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 166 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 166 frame.render_passes[2]->output_rect.ToString()); | 167 frame.render_passes[2]->output_rect.ToString()); |
| 167 | 168 |
| 168 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 169 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 169 host_impl_->DidDrawAllLayers(frame); | 170 host_impl_->DidDrawAllLayers(frame); |
| 170 } | 171 } |
| 171 | 172 |
| 172 TEST_F(DelegatedRendererLayerImplTestSimple, | 173 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 173 AddsQuadsToContributingRenderPasses) { | 174 AddsQuadsToContributingRenderPasses) { |
| 174 LayerTreeHostImpl::FrameData frame; | 175 LayerTreeHostImpl::FrameData frame; |
| 175 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 176 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 176 | 177 |
| 177 // Each non-DelegatedRendererLayer added one RenderPass. The | 178 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 178 // DelegatedRendererLayer added two contributing passes. | 179 // DelegatedRendererLayer added two contributing passes. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 194 // Verify it added the right quads. | 195 // Verify it added the right quads. |
| 195 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 196 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 196 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 197 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
| 197 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 198 frame.render_passes[2]->quad_list[0]->rect.ToString()); |
| 198 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 199 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 199 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 200 frame.render_passes[2]->quad_list[1]->rect.ToString()); |
| 200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 201 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 202 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 202 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 203 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 203 | 204 |
| 204 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 205 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 205 host_impl_->DidDrawAllLayers(frame); | 206 host_impl_->DidDrawAllLayers(frame); |
| 206 } | 207 } |
| 207 | 208 |
| 208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 209 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
| 209 LayerTreeHostImpl::FrameData frame; | 210 LayerTreeHostImpl::FrameData frame; |
| 210 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 211 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 211 | 212 |
| 212 // Each non-DelegatedRendererLayer added one RenderPass. The | 213 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 213 // DelegatedRendererLayer added two contributing passes. | 214 // DelegatedRendererLayer added two contributing passes. |
| 214 ASSERT_EQ(5u, frame.render_passes.size()); | 215 ASSERT_EQ(5u, frame.render_passes.size()); |
| 215 | 216 |
| 216 // The layer's target is the RenderPass from layer_after_. | 217 // The layer's target is the RenderPass from layer_after_. |
| 217 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); | 218 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); |
| 218 | 219 |
| 219 // The DelegatedRendererLayer should have added copies of quads in its root | 220 // The DelegatedRendererLayer should have added copies of quads in its root |
| 220 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 221 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
| 221 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 222 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
| 222 | 223 |
| 223 // Verify it added the right quads. | 224 // Verify it added the right quads. |
| 224 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 225 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 225 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 226 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 226 | 227 |
| 227 // Its target layer should have a quad as well. | 228 // Its target layer should have a quad as well. |
| 228 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 229 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
| 229 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 230 frame.render_passes[3]->quad_list[1]->rect.ToString()); |
| 230 | 231 |
| 231 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 232 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 232 host_impl_->DidDrawAllLayers(frame); | 233 host_impl_->DidDrawAllLayers(frame); |
| 233 } | 234 } |
| 234 | 235 |
| 235 TEST_F(DelegatedRendererLayerImplTestSimple, | 236 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 236 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 237 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
| 237 LayerTreeHostImpl::FrameData frame; | 238 LayerTreeHostImpl::FrameData frame; |
| 238 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 239 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 239 | 240 |
| 240 // Each non-DelegatedRendererLayer added one RenderPass. The | 241 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 241 // DelegatedRendererLayer added two contributing passes. | 242 // DelegatedRendererLayer added two contributing passes. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 255 // Quads from non-root RenderPasses should not be shifted though. | 256 // Quads from non-root RenderPasses should not be shifted though. |
| 256 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 257 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 257 EXPECT_TRANSFORMATION_MATRIX_EQ( | 258 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 258 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 259 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); |
| 259 EXPECT_TRANSFORMATION_MATRIX_EQ( | 260 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 260 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 261 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); |
| 261 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 262 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 262 EXPECT_TRANSFORMATION_MATRIX_EQ( | 263 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 263 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 264 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
| 264 | 265 |
| 265 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 266 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 266 host_impl_->DidDrawAllLayers(frame); | 267 host_impl_->DidDrawAllLayers(frame); |
| 267 } | 268 } |
| 268 | 269 |
| 269 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 270 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
| 270 LayerTreeHostImpl::FrameData frame; | 271 LayerTreeHostImpl::FrameData frame; |
| 271 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 272 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 272 | 273 |
| 273 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 274 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
| 274 // has no need to be a RenderSurface for the quads it carries. | 275 // has no need to be a RenderSurface for the quads it carries. |
| 275 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | 276 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
| 276 | 277 |
| 277 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 278 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 278 host_impl_->DidDrawAllLayers(frame); | 279 host_impl_->DidDrawAllLayers(frame); |
| 279 } | 280 } |
| 280 | 281 |
| 281 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 282 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
| 282 delegated_renderer_layer_->SetOpacity(0.5f); | 283 delegated_renderer_layer_->SetOpacity(0.5f); |
| 283 | 284 |
| 284 LayerTreeHostImpl::FrameData frame; | 285 LayerTreeHostImpl::FrameData frame; |
| 285 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 286 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 286 | 287 |
| 287 // This test case has quads from multiple layers in the delegated renderer, so | 288 // This test case has quads from multiple layers in the delegated renderer, so |
| 288 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 289 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 289 // render surface. | 290 // render surface. |
| 290 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 291 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 291 | 292 |
| 292 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 293 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 293 host_impl_->DidDrawAllLayers(frame); | 294 host_impl_->DidDrawAllLayers(frame); |
| 294 } | 295 } |
| 295 | 296 |
| 296 TEST_F(DelegatedRendererLayerImplTestSimple, | 297 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 297 DoesOwnARenderSurfaceForTransform) { | 298 DoesOwnARenderSurfaceForTransform) { |
| 298 gfx::Transform rotation; | 299 gfx::Transform rotation; |
| 299 rotation.RotateAboutZAxis(30.0); | 300 rotation.RotateAboutZAxis(30.0); |
| 300 delegated_renderer_layer_->SetTransform(rotation); | 301 delegated_renderer_layer_->SetTransform(rotation); |
| 301 | 302 |
| 302 LayerTreeHostImpl::FrameData frame; | 303 LayerTreeHostImpl::FrameData frame; |
| 303 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 304 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 304 | 305 |
| 305 // This test case has quads from multiple layers in the delegated renderer, so | 306 // This test case has quads from multiple layers in the delegated renderer, so |
| 306 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 307 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 307 // render surface. | 308 // render surface. |
| 308 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 309 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 309 | 310 |
| 310 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 311 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 311 host_impl_->DidDrawAllLayers(frame); | 312 host_impl_->DidDrawAllLayers(frame); |
| 312 } | 313 } |
| 313 | 314 |
| 314 class DelegatedRendererLayerImplTestOwnSurface | 315 class DelegatedRendererLayerImplTestOwnSurface |
| 315 : public DelegatedRendererLayerImplTestSimple { | 316 : public DelegatedRendererLayerImplTestSimple { |
| 316 public: | 317 public: |
| 317 DelegatedRendererLayerImplTestOwnSurface() | 318 DelegatedRendererLayerImplTestOwnSurface() |
| 318 : DelegatedRendererLayerImplTestSimple() { | 319 : DelegatedRendererLayerImplTestSimple() { |
| 319 delegated_renderer_layer_->SetForceRenderSurface(true); | 320 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 320 } | 321 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 347 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); | 348 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); |
| 348 EXPECT_EQ(0, frame.render_passes[5]->id.index); | 349 EXPECT_EQ(0, frame.render_passes[5]->id.index); |
| 349 | 350 |
| 350 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 351 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
| 351 // in order. | 352 // in order. |
| 352 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 353 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 353 frame.render_passes[1]->output_rect.ToString()); | 354 frame.render_passes[1]->output_rect.ToString()); |
| 354 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 355 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 355 frame.render_passes[2]->output_rect.ToString()); | 356 frame.render_passes[2]->output_rect.ToString()); |
| 356 | 357 |
| 357 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 358 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 358 host_impl_->DidDrawAllLayers(frame); | 359 host_impl_->DidDrawAllLayers(frame); |
| 359 } | 360 } |
| 360 | 361 |
| 361 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 362 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 362 AddsQuadsToContributingRenderPasses) { | 363 AddsQuadsToContributingRenderPasses) { |
| 363 LayerTreeHostImpl::FrameData frame; | 364 LayerTreeHostImpl::FrameData frame; |
| 364 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 365 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 365 | 366 |
| 366 // Each non-DelegatedRendererLayer added one RenderPass. The | 367 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 367 // DelegatedRendererLayer added two contributing passes and its owned surface | 368 // DelegatedRendererLayer added two contributing passes and its owned surface |
| (...skipping 16 matching lines...) Expand all Loading... |
| 384 // Verify it added the right quads. | 385 // Verify it added the right quads. |
| 385 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 386 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 386 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 387 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
| 387 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 388 frame.render_passes[2]->quad_list[0]->rect.ToString()); |
| 388 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 389 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 389 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 390 frame.render_passes[2]->quad_list[1]->rect.ToString()); |
| 390 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 391 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 391 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 392 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 392 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 393 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 393 | 394 |
| 394 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 395 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 395 host_impl_->DidDrawAllLayers(frame); | 396 host_impl_->DidDrawAllLayers(frame); |
| 396 } | 397 } |
| 397 | 398 |
| 398 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 399 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
| 399 LayerTreeHostImpl::FrameData frame; | 400 LayerTreeHostImpl::FrameData frame; |
| 400 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 401 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 401 | 402 |
| 402 // Each non-DelegatedRendererLayer added one RenderPass. The | 403 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 403 // DelegatedRendererLayer added two contributing passes and its owned surface | 404 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 404 // added one pass. | 405 // added one pass. |
| 405 ASSERT_EQ(6u, frame.render_passes.size()); | 406 ASSERT_EQ(6u, frame.render_passes.size()); |
| 406 | 407 |
| 407 // The layer's target is the RenderPass owned by itself. | 408 // The layer's target is the RenderPass owned by itself. |
| 408 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); | 409 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); |
| 409 | 410 |
| 410 // The DelegatedRendererLayer should have added copies of quads in its root | 411 // The DelegatedRendererLayer should have added copies of quads in its root |
| 411 // RenderPass to its target RenderPass. | 412 // RenderPass to its target RenderPass. |
| 412 // The layer_after also adds one quad. | 413 // The layer_after also adds one quad. |
| 413 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 414 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
| 414 | 415 |
| 415 // Verify it added the right quads. | 416 // Verify it added the right quads. |
| 416 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 417 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 417 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 418 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 418 | 419 |
| 419 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 420 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 420 host_impl_->DidDrawAllLayers(frame); | 421 host_impl_->DidDrawAllLayers(frame); |
| 421 } | 422 } |
| 422 | 423 |
| 423 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 424 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 424 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 425 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
| 425 LayerTreeHostImpl::FrameData frame; | 426 LayerTreeHostImpl::FrameData frame; |
| 426 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 427 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 427 | 428 |
| 428 // Each non-DelegatedRendererLayer added one RenderPass. The | 429 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 429 // DelegatedRendererLayer added two contributing passes and its owned surface | 430 // DelegatedRendererLayer added two contributing passes and its owned surface |
| (...skipping 11 matching lines...) Expand all Loading... |
| 441 // Quads from non-root RenderPasses should not be shifted either. | 442 // Quads from non-root RenderPasses should not be shifted either. |
| 442 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 443 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 443 EXPECT_TRANSFORMATION_MATRIX_EQ( | 444 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 444 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 445 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); |
| 445 EXPECT_TRANSFORMATION_MATRIX_EQ( | 446 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 446 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 447 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); |
| 447 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 448 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 448 EXPECT_TRANSFORMATION_MATRIX_EQ( | 449 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 449 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 450 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
| 450 | 451 |
| 451 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 452 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 452 host_impl_->DidDrawAllLayers(frame); | 453 host_impl_->DidDrawAllLayers(frame); |
| 453 } | 454 } |
| 454 | 455 |
| 455 class DelegatedRendererLayerImplTestTransform | 456 class DelegatedRendererLayerImplTestTransform |
| 456 : public DelegatedRendererLayerImplTest { | 457 : public DelegatedRendererLayerImplTest { |
| 457 public: | 458 public: |
| 458 void SetUpTest() { | 459 void SetUpTest() { |
| 459 host_impl_->SetDeviceScaleFactor(2.f); | 460 host_impl_->SetDeviceScaleFactor(2.f); |
| 460 | 461 |
| 461 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( | 462 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 675 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 676 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 676 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 677 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 677 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 678 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 678 expected.MakeIdentity(); | 679 expected.MakeIdentity(); |
| 679 expected.Scale(0.8f, 0.8f); | 680 expected.Scale(0.8f, 0.8f); |
| 680 expected.Translate(9.0, 9.0); | 681 expected.Translate(9.0, 9.0); |
| 681 EXPECT_TRANSFORMATION_MATRIX_EQ( | 682 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 682 expected, | 683 expected, |
| 683 contrib_delegated_shared_quad_state->content_to_target_transform); | 684 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 684 | 685 |
| 685 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 686 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 686 host_impl_->DidDrawAllLayers(frame); | 687 host_impl_->DidDrawAllLayers(frame); |
| 687 } | 688 } |
| 688 | 689 |
| 689 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 690 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
| 690 root_delegated_render_pass_is_clipped_ = true; | 691 root_delegated_render_pass_is_clipped_ = true; |
| 691 SetUpTest(); | 692 SetUpTest(); |
| 692 | 693 |
| 693 LayerTreeHostImpl::FrameData frame; | 694 LayerTreeHostImpl::FrameData frame; |
| 694 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 695 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 695 | 696 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 739 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 739 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 740 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 740 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 741 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 741 expected.MakeIdentity(); | 742 expected.MakeIdentity(); |
| 742 expected.Scale(0.8f, 0.8f); | 743 expected.Scale(0.8f, 0.8f); |
| 743 expected.Translate(9.0, 9.0); | 744 expected.Translate(9.0, 9.0); |
| 744 EXPECT_TRANSFORMATION_MATRIX_EQ( | 745 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 745 expected, | 746 expected, |
| 746 contrib_delegated_shared_quad_state->content_to_target_transform); | 747 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 747 | 748 |
| 748 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 749 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 749 host_impl_->DidDrawAllLayers(frame); | 750 host_impl_->DidDrawAllLayers(frame); |
| 750 } | 751 } |
| 751 | 752 |
| 752 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 753 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 753 root_delegated_render_pass_is_clipped_ = false; | 754 root_delegated_render_pass_is_clipped_ = false; |
| 754 SetUpTest(); | 755 SetUpTest(); |
| 755 | 756 |
| 756 delegated_renderer_layer_->SetForceRenderSurface(true); | 757 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 757 | 758 |
| 758 LayerTreeHostImpl::FrameData frame; | 759 LayerTreeHostImpl::FrameData frame; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 795 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 795 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 796 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 796 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 797 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 797 expected.MakeIdentity(); | 798 expected.MakeIdentity(); |
| 798 expected.Scale(0.8f, 0.8f); | 799 expected.Scale(0.8f, 0.8f); |
| 799 expected.Translate(9.0, 9.0); | 800 expected.Translate(9.0, 9.0); |
| 800 EXPECT_TRANSFORMATION_MATRIX_EQ( | 801 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 801 expected, | 802 expected, |
| 802 contrib_delegated_shared_quad_state->content_to_target_transform); | 803 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 803 | 804 |
| 804 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 805 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 805 host_impl_->DidDrawAllLayers(frame); | 806 host_impl_->DidDrawAllLayers(frame); |
| 806 } | 807 } |
| 807 | 808 |
| 808 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 809 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 809 root_delegated_render_pass_is_clipped_ = true; | 810 root_delegated_render_pass_is_clipped_ = true; |
| 810 SetUpTest(); | 811 SetUpTest(); |
| 811 | 812 |
| 812 delegated_renderer_layer_->SetForceRenderSurface(true); | 813 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 813 | 814 |
| 814 LayerTreeHostImpl::FrameData frame; | 815 LayerTreeHostImpl::FrameData frame; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 850 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 850 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 851 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 851 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 852 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 852 expected.MakeIdentity(); | 853 expected.MakeIdentity(); |
| 853 expected.Scale(0.8f, 0.8f); | 854 expected.Scale(0.8f, 0.8f); |
| 854 expected.Translate(9.0, 9.0); | 855 expected.Translate(9.0, 9.0); |
| 855 EXPECT_TRANSFORMATION_MATRIX_EQ( | 856 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 856 expected, | 857 expected, |
| 857 contrib_delegated_shared_quad_state->content_to_target_transform); | 858 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 858 | 859 |
| 859 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 860 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 860 host_impl_->DidDrawAllLayers(frame); | 861 host_impl_->DidDrawAllLayers(frame); |
| 861 } | 862 } |
| 862 | 863 |
| 863 class DelegatedRendererLayerImplTestClip | 864 class DelegatedRendererLayerImplTestClip |
| 864 : public DelegatedRendererLayerImplTest { | 865 : public DelegatedRendererLayerImplTest { |
| 865 public: | 866 public: |
| 866 void SetUpTest() { | 867 void SetUpTest() { |
| 867 scoped_ptr<LayerImpl> root_layer = | 868 scoped_ptr<LayerImpl> root_layer = |
| 868 LayerImpl::Create(host_impl_->active_tree(), 1); | 869 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 869 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 870 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1025 const SharedQuadState* root_delegated_shared_quad_state = | 1026 const SharedQuadState* root_delegated_shared_quad_state = |
| 1026 root_delegated_quad_list[0]->shared_quad_state; | 1027 root_delegated_quad_list[0]->shared_quad_state; |
| 1027 | 1028 |
| 1028 // When the quads don't have a clip of their own, the clip rect is set to | 1029 // When the quads don't have a clip of their own, the clip rect is set to |
| 1029 // the drawable_content_rect of the delegated renderer layer. | 1030 // the drawable_content_rect of the delegated renderer layer. |
| 1030 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1031 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
| 1031 root_delegated_shared_quad_state->clip_rect.ToString()); | 1032 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1032 // Quads are clipped to the delegated renderer layer. | 1033 // Quads are clipped to the delegated renderer layer. |
| 1033 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1034 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1034 | 1035 |
| 1035 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1036 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1036 host_impl_->DidDrawAllLayers(frame); | 1037 host_impl_->DidDrawAllLayers(frame); |
| 1037 } | 1038 } |
| 1038 | 1039 |
| 1039 TEST_F(DelegatedRendererLayerImplTestClip, | 1040 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1040 QuadsClipped_LayerUnclipped_NoSurface) { | 1041 QuadsClipped_LayerUnclipped_NoSurface) { |
| 1041 root_delegated_render_pass_is_clipped_ = true; | 1042 root_delegated_render_pass_is_clipped_ = true; |
| 1042 clip_delegated_renderer_layer_ = false; | 1043 clip_delegated_renderer_layer_ = false; |
| 1043 SetUpTest(); | 1044 SetUpTest(); |
| 1044 | 1045 |
| 1045 LayerTreeHostImpl::FrameData frame; | 1046 LayerTreeHostImpl::FrameData frame; |
| 1046 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1047 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1047 | 1048 |
| 1048 ASSERT_EQ(2u, frame.render_passes.size()); | 1049 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1049 const QuadList& contrib_delegated_quad_list = | 1050 const QuadList& contrib_delegated_quad_list = |
| 1050 frame.render_passes[0]->quad_list; | 1051 frame.render_passes[0]->quad_list; |
| 1051 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1052 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1052 const QuadList& root_delegated_quad_list = | 1053 const QuadList& root_delegated_quad_list = |
| 1053 frame.render_passes[1]->quad_list; | 1054 frame.render_passes[1]->quad_list; |
| 1054 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1055 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1055 const SharedQuadState* root_delegated_shared_quad_state = | 1056 const SharedQuadState* root_delegated_shared_quad_state = |
| 1056 root_delegated_quad_list[0]->shared_quad_state; | 1057 root_delegated_quad_list[0]->shared_quad_state; |
| 1057 | 1058 |
| 1058 // When the quads have a clip of their own, it is used. | 1059 // When the quads have a clip of their own, it is used. |
| 1059 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1060 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
| 1060 root_delegated_shared_quad_state->clip_rect.ToString()); | 1061 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1061 // Quads came with a clip rect. | 1062 // Quads came with a clip rect. |
| 1062 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1063 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1063 | 1064 |
| 1064 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1065 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1065 host_impl_->DidDrawAllLayers(frame); | 1066 host_impl_->DidDrawAllLayers(frame); |
| 1066 } | 1067 } |
| 1067 | 1068 |
| 1068 TEST_F(DelegatedRendererLayerImplTestClip, | 1069 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1069 QuadsUnclipped_LayerClipped_NoSurface) { | 1070 QuadsUnclipped_LayerClipped_NoSurface) { |
| 1070 root_delegated_render_pass_is_clipped_ = false; | 1071 root_delegated_render_pass_is_clipped_ = false; |
| 1071 clip_delegated_renderer_layer_ = true; | 1072 clip_delegated_renderer_layer_ = true; |
| 1072 SetUpTest(); | 1073 SetUpTest(); |
| 1073 | 1074 |
| 1074 LayerTreeHostImpl::FrameData frame; | 1075 LayerTreeHostImpl::FrameData frame; |
| 1075 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1076 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1076 | 1077 |
| 1077 ASSERT_EQ(2u, frame.render_passes.size()); | 1078 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1078 const QuadList& contrib_delegated_quad_list = | 1079 const QuadList& contrib_delegated_quad_list = |
| 1079 frame.render_passes[0]->quad_list; | 1080 frame.render_passes[0]->quad_list; |
| 1080 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1081 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1081 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1082 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1082 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1083 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1083 const SharedQuadState* root_delegated_shared_quad_state = | 1084 const SharedQuadState* root_delegated_shared_quad_state = |
| 1084 root_delegated_quad_list[0]->shared_quad_state; | 1085 root_delegated_quad_list[0]->shared_quad_state; |
| 1085 | 1086 |
| 1086 // When the quads don't have a clip of their own, the clip rect is set to | 1087 // When the quads don't have a clip of their own, the clip rect is set to |
| 1087 // the drawable_content_rect of the delegated renderer layer. When the layer | 1088 // the drawable_content_rect of the delegated renderer layer. When the layer |
| 1088 // is clipped, that should be seen in the quads' clip_rect. | 1089 // is clipped, that should be seen in the quads' clip_rect. |
| 1089 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1090 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
| 1090 root_delegated_shared_quad_state->clip_rect.ToString()); | 1091 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1091 // Quads are clipped to the delegated renderer layer. | 1092 // Quads are clipped to the delegated renderer layer. |
| 1092 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1093 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1093 | 1094 |
| 1094 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1095 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1095 host_impl_->DidDrawAllLayers(frame); | 1096 host_impl_->DidDrawAllLayers(frame); |
| 1096 } | 1097 } |
| 1097 | 1098 |
| 1098 TEST_F(DelegatedRendererLayerImplTestClip, | 1099 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1099 QuadsClipped_LayerClipped_NoSurface) { | 1100 QuadsClipped_LayerClipped_NoSurface) { |
| 1100 root_delegated_render_pass_is_clipped_ = true; | 1101 root_delegated_render_pass_is_clipped_ = true; |
| 1101 clip_delegated_renderer_layer_ = true; | 1102 clip_delegated_renderer_layer_ = true; |
| 1102 SetUpTest(); | 1103 SetUpTest(); |
| 1103 | 1104 |
| 1104 LayerTreeHostImpl::FrameData frame; | 1105 LayerTreeHostImpl::FrameData frame; |
| 1105 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1106 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1106 | 1107 |
| 1107 ASSERT_EQ(2u, frame.render_passes.size()); | 1108 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1108 const QuadList& contrib_delegated_quad_list = | 1109 const QuadList& contrib_delegated_quad_list = |
| 1109 frame.render_passes[0]->quad_list; | 1110 frame.render_passes[0]->quad_list; |
| 1110 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1111 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1111 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1112 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1112 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1113 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1113 const SharedQuadState* root_delegated_shared_quad_state = | 1114 const SharedQuadState* root_delegated_shared_quad_state = |
| 1114 root_delegated_quad_list[0]->shared_quad_state; | 1115 root_delegated_quad_list[0]->shared_quad_state; |
| 1115 | 1116 |
| 1116 // When the quads have a clip of their own, it is used, but it is | 1117 // When the quads have a clip of their own, it is used, but it is |
| 1117 // combined with the clip rect of the delegated renderer layer. | 1118 // combined with the clip rect of the delegated renderer layer. |
| 1118 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), | 1119 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), |
| 1119 root_delegated_shared_quad_state->clip_rect.ToString()); | 1120 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1120 // Quads came with a clip rect. | 1121 // Quads came with a clip rect. |
| 1121 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1122 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1122 | 1123 |
| 1123 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1124 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1124 host_impl_->DidDrawAllLayers(frame); | 1125 host_impl_->DidDrawAllLayers(frame); |
| 1125 } | 1126 } |
| 1126 | 1127 |
| 1127 TEST_F(DelegatedRendererLayerImplTestClip, | 1128 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1128 QuadsUnclipped_LayerUnclipped_Surface) { | 1129 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1129 root_delegated_render_pass_is_clipped_ = false; | 1130 root_delegated_render_pass_is_clipped_ = false; |
| 1130 clip_delegated_renderer_layer_ = false; | 1131 clip_delegated_renderer_layer_ = false; |
| 1131 SetUpTest(); | 1132 SetUpTest(); |
| 1132 | 1133 |
| 1133 delegated_renderer_layer_->SetForceRenderSurface(true); | 1134 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1134 | 1135 |
| 1135 LayerTreeHostImpl::FrameData frame; | 1136 LayerTreeHostImpl::FrameData frame; |
| 1136 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1137 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1137 | 1138 |
| 1138 ASSERT_EQ(3u, frame.render_passes.size()); | 1139 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1139 const QuadList& contrib_delegated_quad_list = | 1140 const QuadList& contrib_delegated_quad_list = |
| 1140 frame.render_passes[0]->quad_list; | 1141 frame.render_passes[0]->quad_list; |
| 1141 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1142 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1142 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1143 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1143 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1144 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1144 const SharedQuadState* root_delegated_shared_quad_state = | 1145 const SharedQuadState* root_delegated_shared_quad_state = |
| 1145 root_delegated_quad_list[0]->shared_quad_state; | 1146 root_delegated_quad_list[0]->shared_quad_state; |
| 1146 | 1147 |
| 1147 // When the layer owns a surface, the quads don't need to be clipped | 1148 // When the layer owns a surface, the quads don't need to be clipped |
| 1148 // further than they already specify. If they aren't clipped, then their | 1149 // further than they already specify. If they aren't clipped, then their |
| 1149 // clip rect is ignored, and they are not set as clipped. | 1150 // clip rect is ignored, and they are not set as clipped. |
| 1150 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1151 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1151 | 1152 |
| 1152 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1153 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1153 host_impl_->DidDrawAllLayers(frame); | 1154 host_impl_->DidDrawAllLayers(frame); |
| 1154 } | 1155 } |
| 1155 | 1156 |
| 1156 TEST_F(DelegatedRendererLayerImplTestClip, | 1157 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1157 QuadsClipped_LayerUnclipped_Surface) { | 1158 QuadsClipped_LayerUnclipped_Surface) { |
| 1158 root_delegated_render_pass_is_clipped_ = true; | 1159 root_delegated_render_pass_is_clipped_ = true; |
| 1159 clip_delegated_renderer_layer_ = false; | 1160 clip_delegated_renderer_layer_ = false; |
| 1160 SetUpTest(); | 1161 SetUpTest(); |
| 1161 | 1162 |
| 1162 delegated_renderer_layer_->SetForceRenderSurface(true); | 1163 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1163 | 1164 |
| 1164 LayerTreeHostImpl::FrameData frame; | 1165 LayerTreeHostImpl::FrameData frame; |
| 1165 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1166 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1166 | 1167 |
| 1167 ASSERT_EQ(3u, frame.render_passes.size()); | 1168 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1168 const QuadList& contrib_delegated_quad_list = | 1169 const QuadList& contrib_delegated_quad_list = |
| 1169 frame.render_passes[0]->quad_list; | 1170 frame.render_passes[0]->quad_list; |
| 1170 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1171 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1171 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; |
| 1172 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1173 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1173 const SharedQuadState* root_delegated_shared_quad_state = | 1174 const SharedQuadState* root_delegated_shared_quad_state = |
| 1174 root_delegated_quad_list[0]->shared_quad_state; | 1175 root_delegated_quad_list[0]->shared_quad_state; |
| 1175 | 1176 |
| 1176 // When the quads have a clip of their own, it is used. | 1177 // When the quads have a clip of their own, it is used. |
| 1177 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1178 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1178 root_delegated_shared_quad_state->clip_rect.ToString()); | 1179 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1179 // Quads came with a clip rect. | 1180 // Quads came with a clip rect. |
| 1180 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1181 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1181 | 1182 |
| 1182 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1183 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1183 host_impl_->DidDrawAllLayers(frame); | 1184 host_impl_->DidDrawAllLayers(frame); |
| 1184 } | 1185 } |
| 1185 | 1186 |
| 1186 TEST_F(DelegatedRendererLayerImplTestClip, | 1187 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1187 QuadsUnclipped_LayerClipped_Surface) { | 1188 QuadsUnclipped_LayerClipped_Surface) { |
| 1188 root_delegated_render_pass_is_clipped_ = false; | 1189 root_delegated_render_pass_is_clipped_ = false; |
| 1189 clip_delegated_renderer_layer_ = true; | 1190 clip_delegated_renderer_layer_ = true; |
| 1190 SetUpTest(); | 1191 SetUpTest(); |
| 1191 | 1192 |
| 1192 delegated_renderer_layer_->SetForceRenderSurface(true); | 1193 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1193 | 1194 |
| 1194 LayerTreeHostImpl::FrameData frame; | 1195 LayerTreeHostImpl::FrameData frame; |
| 1195 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1196 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1196 | 1197 |
| 1197 ASSERT_EQ(3u, frame.render_passes.size()); | 1198 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1198 const QuadList& contrib_delegated_quad_list = | 1199 const QuadList& contrib_delegated_quad_list = |
| 1199 frame.render_passes[0]->quad_list; | 1200 frame.render_passes[0]->quad_list; |
| 1200 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1201 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1201 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1202 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1202 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1203 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1203 const SharedQuadState* root_delegated_shared_quad_state = | 1204 const SharedQuadState* root_delegated_shared_quad_state = |
| 1204 root_delegated_quad_list[0]->shared_quad_state; | 1205 root_delegated_quad_list[0]->shared_quad_state; |
| 1205 | 1206 |
| 1206 // When the layer owns a surface, the quads don't need to be clipped | 1207 // When the layer owns a surface, the quads don't need to be clipped |
| 1207 // further than they already specify. If they aren't clipped, then their | 1208 // further than they already specify. If they aren't clipped, then their |
| 1208 // clip rect is ignored, and they are not set as clipped. | 1209 // clip rect is ignored, and they are not set as clipped. |
| 1209 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1210 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1210 | 1211 |
| 1211 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1212 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1212 host_impl_->DidDrawAllLayers(frame); | 1213 host_impl_->DidDrawAllLayers(frame); |
| 1213 } | 1214 } |
| 1214 | 1215 |
| 1215 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1216 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1216 root_delegated_render_pass_is_clipped_ = true; | 1217 root_delegated_render_pass_is_clipped_ = true; |
| 1217 clip_delegated_renderer_layer_ = true; | 1218 clip_delegated_renderer_layer_ = true; |
| 1218 SetUpTest(); | 1219 SetUpTest(); |
| 1219 | 1220 |
| 1220 delegated_renderer_layer_->SetForceRenderSurface(true); | 1221 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1221 | 1222 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1232 root_delegated_quad_list[0]->shared_quad_state; | 1233 root_delegated_quad_list[0]->shared_quad_state; |
| 1233 | 1234 |
| 1234 // When the quads have a clip of their own, it is used, but it is | 1235 // When the quads have a clip of their own, it is used, but it is |
| 1235 // combined with the clip rect of the delegated renderer layer. If the | 1236 // combined with the clip rect of the delegated renderer layer. If the |
| 1236 // layer owns a surface, then it does not have a clip rect of its own. | 1237 // layer owns a surface, then it does not have a clip rect of its own. |
| 1237 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1238 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1238 root_delegated_shared_quad_state->clip_rect.ToString()); | 1239 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1239 // Quads came with a clip rect. | 1240 // Quads came with a clip rect. |
| 1240 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1241 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1241 | 1242 |
| 1242 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1243 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1243 host_impl_->DidDrawAllLayers(frame); | 1244 host_impl_->DidDrawAllLayers(frame); |
| 1244 } | 1245 } |
| 1245 | 1246 |
| 1246 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { | 1247 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { |
| 1247 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( | 1248 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| 1248 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); | 1249 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); |
| 1249 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 1250 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 1250 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); | 1251 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); |
| 1251 | 1252 |
| 1252 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 1253 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1285 | 1286 |
| 1286 LayerTreeHostImpl::FrameData frame; | 1287 LayerTreeHostImpl::FrameData frame; |
| 1287 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1288 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1288 | 1289 |
| 1289 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1290 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
| 1290 ASSERT_EQ(1u, frame.render_passes.size()); | 1291 ASSERT_EQ(1u, frame.render_passes.size()); |
| 1291 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1292 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 1292 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1293 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 1293 frame.render_passes[0]->quad_list[0]->material); | 1294 frame.render_passes[0]->quad_list[0]->material); |
| 1294 | 1295 |
| 1295 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1296 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1296 host_impl_->DidDrawAllLayers(frame); | 1297 host_impl_->DidDrawAllLayers(frame); |
| 1297 } | 1298 } |
| 1298 | 1299 |
| 1299 } // namespace | 1300 } // namespace |
| 1300 } // namespace cc | 1301 } // namespace cc |
| OLD | NEW |