| 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/quad_sink.h" | 8 #include "cc/layers/quad_sink.h" |
| 9 #include "cc/layers/solid_color_layer_impl.h" | 9 #include "cc/layers/solid_color_layer_impl.h" |
| 10 #include "cc/quads/render_pass_draw_quad.h" | 10 #include "cc/quads/render_pass_draw_quad.h" |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); | 159 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); |
| 160 EXPECT_EQ(0, frame.render_passes[4]->id.index); | 160 EXPECT_EQ(0, frame.render_passes[4]->id.index); |
| 161 | 161 |
| 162 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 162 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
| 163 // in order. | 163 // in order. |
| 164 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 164 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 165 frame.render_passes[1]->output_rect.ToString()); | 165 frame.render_passes[1]->output_rect.ToString()); |
| 166 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 166 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 167 frame.render_passes[2]->output_rect.ToString()); | 167 frame.render_passes[2]->output_rect.ToString()); |
| 168 | 168 |
| 169 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 169 host_impl_->DrawLayers(&frame); |
| 170 host_impl_->DidDrawAllLayers(frame); | 170 host_impl_->DidDrawAllLayers(frame); |
| 171 } | 171 } |
| 172 | 172 |
| 173 TEST_F(DelegatedRendererLayerImplTestSimple, | 173 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 174 AddsQuadsToContributingRenderPasses) { | 174 AddsQuadsToContributingRenderPasses) { |
| 175 LayerTreeHostImpl::FrameData frame; | 175 LayerTreeHostImpl::FrameData frame; |
| 176 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 176 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 177 | 177 |
| 178 // Each non-DelegatedRendererLayer added one RenderPass. The | 178 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 179 // DelegatedRendererLayer added two contributing passes. | 179 // DelegatedRendererLayer added two contributing passes. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 195 // Verify it added the right quads. | 195 // Verify it added the right quads. |
| 196 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 196 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 197 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 197 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
| 198 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 198 frame.render_passes[2]->quad_list[0]->rect.ToString()); |
| 199 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 199 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 200 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 200 frame.render_passes[2]->quad_list[1]->rect.ToString()); |
| 201 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 201 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 202 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 202 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 203 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 203 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 204 | 204 |
| 205 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 205 host_impl_->DrawLayers(&frame); |
| 206 host_impl_->DidDrawAllLayers(frame); | 206 host_impl_->DidDrawAllLayers(frame); |
| 207 } | 207 } |
| 208 | 208 |
| 209 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 209 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
| 210 LayerTreeHostImpl::FrameData frame; | 210 LayerTreeHostImpl::FrameData frame; |
| 211 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 211 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 212 | 212 |
| 213 // Each non-DelegatedRendererLayer added one RenderPass. The | 213 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 214 // DelegatedRendererLayer added two contributing passes. | 214 // DelegatedRendererLayer added two contributing passes. |
| 215 ASSERT_EQ(5u, frame.render_passes.size()); | 215 ASSERT_EQ(5u, frame.render_passes.size()); |
| 216 | 216 |
| 217 // The layer's target is the RenderPass from layer_after_. | 217 // The layer's target is the RenderPass from layer_after_. |
| 218 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); | 218 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); |
| 219 | 219 |
| 220 // The DelegatedRendererLayer should have added copies of quads in its root | 220 // The DelegatedRendererLayer should have added copies of quads in its root |
| 221 // 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. |
| 222 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 222 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
| 223 | 223 |
| 224 // Verify it added the right quads. | 224 // Verify it added the right quads. |
| 225 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 225 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 226 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 226 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 227 | 227 |
| 228 // Its target layer should have a quad as well. | 228 // Its target layer should have a quad as well. |
| 229 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 229 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
| 230 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 230 frame.render_passes[3]->quad_list[1]->rect.ToString()); |
| 231 | 231 |
| 232 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 232 host_impl_->DrawLayers(&frame); |
| 233 host_impl_->DidDrawAllLayers(frame); | 233 host_impl_->DidDrawAllLayers(frame); |
| 234 } | 234 } |
| 235 | 235 |
| 236 TEST_F(DelegatedRendererLayerImplTestSimple, | 236 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 237 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 237 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
| 238 LayerTreeHostImpl::FrameData frame; | 238 LayerTreeHostImpl::FrameData frame; |
| 239 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 239 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 240 | 240 |
| 241 // Each non-DelegatedRendererLayer added one RenderPass. The | 241 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 242 // DelegatedRendererLayer added two contributing passes. | 242 // DelegatedRendererLayer added two contributing passes. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 253 // Quads from non-root RenderPasses should not be shifted though. | 253 // Quads from non-root RenderPasses should not be shifted though. |
| 254 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 254 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 255 EXPECT_TRANSFORMATION_MATRIX_EQ( | 255 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 256 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 256 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); |
| 257 EXPECT_TRANSFORMATION_MATRIX_EQ( | 257 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 258 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 258 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); |
| 259 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 259 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 260 EXPECT_TRANSFORMATION_MATRIX_EQ( | 260 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 261 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 261 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
| 262 | 262 |
| 263 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 263 host_impl_->DrawLayers(&frame); |
| 264 host_impl_->DidDrawAllLayers(frame); | 264 host_impl_->DidDrawAllLayers(frame); |
| 265 } | 265 } |
| 266 | 266 |
| 267 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 267 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
| 268 LayerTreeHostImpl::FrameData frame; | 268 LayerTreeHostImpl::FrameData frame; |
| 269 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 269 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 270 | 270 |
| 271 // The delegated layer has a surface between it and the root. | 271 // The delegated layer has a surface between it and the root. |
| 272 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); | 272 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); |
| 273 | 273 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 285 | 285 |
| 286 // The second contributing surface has a translation of 7, 8. | 286 // The second contributing surface has a translation of 7, 8. |
| 287 gfx::Transform seven_eight(1, 0, 0, 1, 7, 8); | 287 gfx::Transform seven_eight(1, 0, 0, 1, 7, 8); |
| 288 | 288 |
| 289 EXPECT_TRANSFORMATION_MATRIX_EQ( | 289 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 290 transform * five_six, frame.render_passes[1]->transform_to_root_target); | 290 transform * five_six, frame.render_passes[1]->transform_to_root_target); |
| 291 EXPECT_TRANSFORMATION_MATRIX_EQ( | 291 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 292 transform * seven_eight, | 292 transform * seven_eight, |
| 293 frame.render_passes[2]->transform_to_root_target); | 293 frame.render_passes[2]->transform_to_root_target); |
| 294 | 294 |
| 295 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 295 host_impl_->DrawLayers(&frame); |
| 296 host_impl_->DidDrawAllLayers(frame); | 296 host_impl_->DidDrawAllLayers(frame); |
| 297 } | 297 } |
| 298 | 298 |
| 299 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 299 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
| 300 LayerTreeHostImpl::FrameData frame; | 300 LayerTreeHostImpl::FrameData frame; |
| 301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 302 | 302 |
| 303 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 303 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
| 304 // has no need to be a RenderSurface for the quads it carries. | 304 // has no need to be a RenderSurface for the quads it carries. |
| 305 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | 305 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
| 306 | 306 |
| 307 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 307 host_impl_->DrawLayers(&frame); |
| 308 host_impl_->DidDrawAllLayers(frame); | 308 host_impl_->DidDrawAllLayers(frame); |
| 309 } | 309 } |
| 310 | 310 |
| 311 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 311 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
| 312 delegated_renderer_layer_->SetOpacity(0.5f); | 312 delegated_renderer_layer_->SetOpacity(0.5f); |
| 313 | 313 |
| 314 LayerTreeHostImpl::FrameData frame; | 314 LayerTreeHostImpl::FrameData frame; |
| 315 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 315 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 316 | 316 |
| 317 // This test case has quads from multiple layers in the delegated renderer, so | 317 // This test case has quads from multiple layers in the delegated renderer, so |
| 318 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 318 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 319 // render surface. | 319 // render surface. |
| 320 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 320 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 321 | 321 |
| 322 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 322 host_impl_->DrawLayers(&frame); |
| 323 host_impl_->DidDrawAllLayers(frame); | 323 host_impl_->DidDrawAllLayers(frame); |
| 324 } | 324 } |
| 325 | 325 |
| 326 TEST_F(DelegatedRendererLayerImplTestSimple, | 326 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 327 DoesOwnARenderSurfaceForTransform) { | 327 DoesOwnARenderSurfaceForTransform) { |
| 328 gfx::Transform rotation; | 328 gfx::Transform rotation; |
| 329 rotation.RotateAboutZAxis(30.0); | 329 rotation.RotateAboutZAxis(30.0); |
| 330 delegated_renderer_layer_->SetTransform(rotation); | 330 delegated_renderer_layer_->SetTransform(rotation); |
| 331 | 331 |
| 332 LayerTreeHostImpl::FrameData frame; | 332 LayerTreeHostImpl::FrameData frame; |
| 333 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 333 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 334 | 334 |
| 335 // This test case has quads from multiple layers in the delegated renderer, so | 335 // This test case has quads from multiple layers in the delegated renderer, so |
| 336 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 336 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 337 // render surface. | 337 // render surface. |
| 338 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 338 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 339 | 339 |
| 340 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 340 host_impl_->DrawLayers(&frame); |
| 341 host_impl_->DidDrawAllLayers(frame); | 341 host_impl_->DidDrawAllLayers(frame); |
| 342 } | 342 } |
| 343 | 343 |
| 344 class DelegatedRendererLayerImplTestOwnSurface | 344 class DelegatedRendererLayerImplTestOwnSurface |
| 345 : public DelegatedRendererLayerImplTestSimple { | 345 : public DelegatedRendererLayerImplTestSimple { |
| 346 public: | 346 public: |
| 347 DelegatedRendererLayerImplTestOwnSurface() | 347 DelegatedRendererLayerImplTestOwnSurface() |
| 348 : DelegatedRendererLayerImplTestSimple() { | 348 : DelegatedRendererLayerImplTestSimple() { |
| 349 delegated_renderer_layer_->SetForceRenderSurface(true); | 349 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 350 } | 350 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 377 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); | 377 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); |
| 378 EXPECT_EQ(0, frame.render_passes[5]->id.index); | 378 EXPECT_EQ(0, frame.render_passes[5]->id.index); |
| 379 | 379 |
| 380 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 380 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
| 381 // in order. | 381 // in order. |
| 382 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 382 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 383 frame.render_passes[1]->output_rect.ToString()); | 383 frame.render_passes[1]->output_rect.ToString()); |
| 384 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 384 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 385 frame.render_passes[2]->output_rect.ToString()); | 385 frame.render_passes[2]->output_rect.ToString()); |
| 386 | 386 |
| 387 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 387 host_impl_->DrawLayers(&frame); |
| 388 host_impl_->DidDrawAllLayers(frame); | 388 host_impl_->DidDrawAllLayers(frame); |
| 389 } | 389 } |
| 390 | 390 |
| 391 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 391 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 392 AddsQuadsToContributingRenderPasses) { | 392 AddsQuadsToContributingRenderPasses) { |
| 393 LayerTreeHostImpl::FrameData frame; | 393 LayerTreeHostImpl::FrameData frame; |
| 394 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 394 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 395 | 395 |
| 396 // Each non-DelegatedRendererLayer added one RenderPass. The | 396 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 397 // DelegatedRendererLayer added two contributing passes and its owned surface | 397 // DelegatedRendererLayer added two contributing passes and its owned surface |
| (...skipping 16 matching lines...) Expand all Loading... |
| 414 // Verify it added the right quads. | 414 // Verify it added the right quads. |
| 415 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 415 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 416 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 416 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
| 417 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 417 frame.render_passes[2]->quad_list[0]->rect.ToString()); |
| 418 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 418 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 419 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 419 frame.render_passes[2]->quad_list[1]->rect.ToString()); |
| 420 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 420 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 421 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 421 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 422 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 422 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 423 | 423 |
| 424 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 424 host_impl_->DrawLayers(&frame); |
| 425 host_impl_->DidDrawAllLayers(frame); | 425 host_impl_->DidDrawAllLayers(frame); |
| 426 } | 426 } |
| 427 | 427 |
| 428 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 428 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
| 429 LayerTreeHostImpl::FrameData frame; | 429 LayerTreeHostImpl::FrameData frame; |
| 430 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 430 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 431 | 431 |
| 432 // Each non-DelegatedRendererLayer added one RenderPass. The | 432 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 433 // DelegatedRendererLayer added two contributing passes and its owned surface | 433 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 434 // added one pass. | 434 // added one pass. |
| 435 ASSERT_EQ(6u, frame.render_passes.size()); | 435 ASSERT_EQ(6u, frame.render_passes.size()); |
| 436 | 436 |
| 437 // The layer's target is the RenderPass owned by itself. | 437 // The layer's target is the RenderPass owned by itself. |
| 438 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); | 438 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); |
| 439 | 439 |
| 440 // The DelegatedRendererLayer should have added copies of quads in its root | 440 // The DelegatedRendererLayer should have added copies of quads in its root |
| 441 // RenderPass to its target RenderPass. | 441 // RenderPass to its target RenderPass. |
| 442 // The layer_after also adds one quad. | 442 // The layer_after also adds one quad. |
| 443 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 443 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
| 444 | 444 |
| 445 // Verify it added the right quads. | 445 // Verify it added the right quads. |
| 446 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 446 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 447 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 447 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 448 | 448 |
| 449 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 449 host_impl_->DrawLayers(&frame); |
| 450 host_impl_->DidDrawAllLayers(frame); | 450 host_impl_->DidDrawAllLayers(frame); |
| 451 } | 451 } |
| 452 | 452 |
| 453 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 453 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 454 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 454 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
| 455 LayerTreeHostImpl::FrameData frame; | 455 LayerTreeHostImpl::FrameData frame; |
| 456 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 456 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 457 | 457 |
| 458 // Each non-DelegatedRendererLayer added one RenderPass. The | 458 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 459 // DelegatedRendererLayer added two contributing passes and its owned surface | 459 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 460 // added one pass. | 460 // added one pass. |
| 461 ASSERT_EQ(6u, frame.render_passes.size()); | 461 ASSERT_EQ(6u, frame.render_passes.size()); |
| 462 | 462 |
| 463 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 463 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
| 464 // RenderPass' quads do not need to be translated at all. | 464 // RenderPass' quads do not need to be translated at all. |
| 465 EXPECT_TRANSFORMATION_MATRIX_EQ( | 465 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 466 gfx::Transform(), frame.render_passes[3]->quad_list[0]->quadTransform()); | 466 gfx::Transform(), frame.render_passes[3]->quad_list[0]->quadTransform()); |
| 467 | 467 |
| 468 // Quads from non-root RenderPasses should not be shifted either. | 468 // Quads from non-root RenderPasses should not be shifted either. |
| 469 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 469 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 470 EXPECT_TRANSFORMATION_MATRIX_EQ( | 470 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 471 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 471 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); |
| 472 EXPECT_TRANSFORMATION_MATRIX_EQ( | 472 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 473 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 473 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); |
| 474 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 474 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 475 EXPECT_TRANSFORMATION_MATRIX_EQ( | 475 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 476 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 476 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
| 477 | 477 |
| 478 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 478 host_impl_->DrawLayers(&frame); |
| 479 host_impl_->DidDrawAllLayers(frame); | 479 host_impl_->DidDrawAllLayers(frame); |
| 480 } | 480 } |
| 481 | 481 |
| 482 class DelegatedRendererLayerImplTestTransform | 482 class DelegatedRendererLayerImplTestTransform |
| 483 : public DelegatedRendererLayerImplTest { | 483 : public DelegatedRendererLayerImplTest { |
| 484 public: | 484 public: |
| 485 DelegatedRendererLayerImplTestTransform() | 485 DelegatedRendererLayerImplTestTransform() |
| 486 : root_delegated_render_pass_is_clipped_(false), | 486 : root_delegated_render_pass_is_clipped_(false), |
| 487 delegated_device_scale_factor_(2.f) {} | 487 delegated_device_scale_factor_(2.f) {} |
| 488 | 488 |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 726 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 727 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 727 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 728 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 728 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 729 expected.MakeIdentity(); | 729 expected.MakeIdentity(); |
| 730 expected.Scale(0.8f, 0.8f); | 730 expected.Scale(0.8f, 0.8f); |
| 731 expected.Translate(9.0, 9.0); | 731 expected.Translate(9.0, 9.0); |
| 732 EXPECT_TRANSFORMATION_MATRIX_EQ( | 732 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 733 expected, | 733 expected, |
| 734 contrib_delegated_shared_quad_state->content_to_target_transform); | 734 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 735 | 735 |
| 736 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 736 host_impl_->DrawLayers(&frame); |
| 737 host_impl_->DidDrawAllLayers(frame); | 737 host_impl_->DidDrawAllLayers(frame); |
| 738 } | 738 } |
| 739 | 739 |
| 740 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 740 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
| 741 root_delegated_render_pass_is_clipped_ = true; | 741 root_delegated_render_pass_is_clipped_ = true; |
| 742 SetUpTest(); | 742 SetUpTest(); |
| 743 | 743 |
| 744 LayerTreeHostImpl::FrameData frame; | 744 LayerTreeHostImpl::FrameData frame; |
| 745 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 745 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 746 | 746 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 785 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 786 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 786 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 787 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 787 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 788 expected.MakeIdentity(); | 788 expected.MakeIdentity(); |
| 789 expected.Scale(0.8f, 0.8f); | 789 expected.Scale(0.8f, 0.8f); |
| 790 expected.Translate(9.0, 9.0); | 790 expected.Translate(9.0, 9.0); |
| 791 EXPECT_TRANSFORMATION_MATRIX_EQ( | 791 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 792 expected, | 792 expected, |
| 793 contrib_delegated_shared_quad_state->content_to_target_transform); | 793 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 794 | 794 |
| 795 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 795 host_impl_->DrawLayers(&frame); |
| 796 host_impl_->DidDrawAllLayers(frame); | 796 host_impl_->DidDrawAllLayers(frame); |
| 797 } | 797 } |
| 798 | 798 |
| 799 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 799 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 800 root_delegated_render_pass_is_clipped_ = false; | 800 root_delegated_render_pass_is_clipped_ = false; |
| 801 SetUpTest(); | 801 SetUpTest(); |
| 802 | 802 |
| 803 delegated_renderer_layer_->SetForceRenderSurface(true); | 803 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 804 | 804 |
| 805 LayerTreeHostImpl::FrameData frame; | 805 LayerTreeHostImpl::FrameData frame; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 833 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 833 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 834 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 834 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 835 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 835 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 836 expected.MakeIdentity(); | 836 expected.MakeIdentity(); |
| 837 expected.Scale(0.8f, 0.8f); | 837 expected.Scale(0.8f, 0.8f); |
| 838 expected.Translate(9.0, 9.0); | 838 expected.Translate(9.0, 9.0); |
| 839 EXPECT_TRANSFORMATION_MATRIX_EQ( | 839 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 840 expected, | 840 expected, |
| 841 contrib_delegated_shared_quad_state->content_to_target_transform); | 841 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 842 | 842 |
| 843 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 843 host_impl_->DrawLayers(&frame); |
| 844 host_impl_->DidDrawAllLayers(frame); | 844 host_impl_->DidDrawAllLayers(frame); |
| 845 } | 845 } |
| 846 | 846 |
| 847 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 847 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 848 root_delegated_render_pass_is_clipped_ = true; | 848 root_delegated_render_pass_is_clipped_ = true; |
| 849 SetUpTest(); | 849 SetUpTest(); |
| 850 | 850 |
| 851 delegated_renderer_layer_->SetForceRenderSurface(true); | 851 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 852 | 852 |
| 853 LayerTreeHostImpl::FrameData frame; | 853 LayerTreeHostImpl::FrameData frame; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 880 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), | 880 EXPECT_EQ(gfx::Rect(21, 21, 3, 3).ToString(), |
| 881 contrib_delegated_shared_quad_state->clip_rect.ToString()); | 881 contrib_delegated_shared_quad_state->clip_rect.ToString()); |
| 882 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); | 882 EXPECT_FALSE(contrib_delegated_shared_quad_state->is_clipped); |
| 883 expected.MakeIdentity(); | 883 expected.MakeIdentity(); |
| 884 expected.Scale(0.8f, 0.8f); | 884 expected.Scale(0.8f, 0.8f); |
| 885 expected.Translate(9.0, 9.0); | 885 expected.Translate(9.0, 9.0); |
| 886 EXPECT_TRANSFORMATION_MATRIX_EQ( | 886 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 887 expected, | 887 expected, |
| 888 contrib_delegated_shared_quad_state->content_to_target_transform); | 888 contrib_delegated_shared_quad_state->content_to_target_transform); |
| 889 | 889 |
| 890 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 890 host_impl_->DrawLayers(&frame); |
| 891 host_impl_->DidDrawAllLayers(frame); | 891 host_impl_->DidDrawAllLayers(frame); |
| 892 } | 892 } |
| 893 | 893 |
| 894 TEST_F(DelegatedRendererLayerImplTestTransform, MismatchedDeviceScaleFactor) { | 894 TEST_F(DelegatedRendererLayerImplTestTransform, MismatchedDeviceScaleFactor) { |
| 895 root_delegated_render_pass_is_clipped_ = true; | 895 root_delegated_render_pass_is_clipped_ = true; |
| 896 delegated_device_scale_factor_ = 1.3f; | 896 delegated_device_scale_factor_ = 1.3f; |
| 897 | 897 |
| 898 SetUpTest(); | 898 SetUpTest(); |
| 899 | 899 |
| 900 LayerTreeHostImpl::FrameData frame; | 900 LayerTreeHostImpl::FrameData frame; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 919 expected.Scale(2.0, 2.0); | 919 expected.Scale(2.0, 2.0); |
| 920 expected.Translate(8.0, 8.0); | 920 expected.Translate(8.0, 8.0); |
| 921 // This is the transform within the source frame. | 921 // This is the transform within the source frame. |
| 922 // Inverse device scale factor (from child). | 922 // Inverse device scale factor (from child). |
| 923 expected.Scale(1.0f / 1.3f, 1.0f / 1.3f); | 923 expected.Scale(1.0f / 1.3f, 1.0f / 1.3f); |
| 924 expected.Scale(1.5, 1.5); | 924 expected.Scale(1.5, 1.5); |
| 925 expected.Translate(7.0, 7.0); | 925 expected.Translate(7.0, 7.0); |
| 926 EXPECT_TRANSFORMATION_MATRIX_EQ( | 926 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 927 expected, root_delegated_shared_quad_state->content_to_target_transform); | 927 expected, root_delegated_shared_quad_state->content_to_target_transform); |
| 928 | 928 |
| 929 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 929 host_impl_->DrawLayers(&frame); |
| 930 host_impl_->DidDrawAllLayers(frame); | 930 host_impl_->DidDrawAllLayers(frame); |
| 931 } | 931 } |
| 932 | 932 |
| 933 class DelegatedRendererLayerImplTestClip | 933 class DelegatedRendererLayerImplTestClip |
| 934 : public DelegatedRendererLayerImplTest { | 934 : public DelegatedRendererLayerImplTest { |
| 935 public: | 935 public: |
| 936 void SetUpTest() { | 936 void SetUpTest() { |
| 937 scoped_ptr<LayerImpl> root_layer = | 937 scoped_ptr<LayerImpl> root_layer = |
| 938 LayerImpl::Create(host_impl_->active_tree(), 1); | 938 LayerImpl::Create(host_impl_->active_tree(), 1); |
| 939 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 939 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1116 const SharedQuadState* root_delegated_shared_quad_state = | 1116 const SharedQuadState* root_delegated_shared_quad_state = |
| 1117 root_delegated_quad_list[0]->shared_quad_state; | 1117 root_delegated_quad_list[0]->shared_quad_state; |
| 1118 | 1118 |
| 1119 // When the quads don't have a clip of their own, the clip rect is set to | 1119 // When the quads don't have a clip of their own, the clip rect is set to |
| 1120 // the drawable_content_rect of the delegated renderer layer. | 1120 // the drawable_content_rect of the delegated renderer layer. |
| 1121 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1121 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
| 1122 root_delegated_shared_quad_state->clip_rect.ToString()); | 1122 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1123 // Quads are clipped to the delegated renderer layer. | 1123 // Quads are clipped to the delegated renderer layer. |
| 1124 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1124 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1125 | 1125 |
| 1126 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1126 host_impl_->DrawLayers(&frame); |
| 1127 host_impl_->DidDrawAllLayers(frame); | 1127 host_impl_->DidDrawAllLayers(frame); |
| 1128 } | 1128 } |
| 1129 | 1129 |
| 1130 TEST_F(DelegatedRendererLayerImplTestClip, | 1130 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1131 QuadsClipped_LayerUnclipped_NoSurface) { | 1131 QuadsClipped_LayerUnclipped_NoSurface) { |
| 1132 root_delegated_render_pass_is_clipped_ = true; | 1132 root_delegated_render_pass_is_clipped_ = true; |
| 1133 clip_delegated_renderer_layer_ = false; | 1133 clip_delegated_renderer_layer_ = false; |
| 1134 SetUpTest(); | 1134 SetUpTest(); |
| 1135 | 1135 |
| 1136 LayerTreeHostImpl::FrameData frame; | 1136 LayerTreeHostImpl::FrameData frame; |
| 1137 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1137 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1138 | 1138 |
| 1139 ASSERT_EQ(2u, frame.render_passes.size()); | 1139 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1140 const QuadList& contrib_delegated_quad_list = | 1140 const QuadList& contrib_delegated_quad_list = |
| 1141 frame.render_passes[0]->quad_list; | 1141 frame.render_passes[0]->quad_list; |
| 1142 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1142 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1143 const QuadList& root_delegated_quad_list = | 1143 const QuadList& root_delegated_quad_list = |
| 1144 frame.render_passes[1]->quad_list; | 1144 frame.render_passes[1]->quad_list; |
| 1145 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1145 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1146 const SharedQuadState* root_delegated_shared_quad_state = | 1146 const SharedQuadState* root_delegated_shared_quad_state = |
| 1147 root_delegated_quad_list[0]->shared_quad_state; | 1147 root_delegated_quad_list[0]->shared_quad_state; |
| 1148 | 1148 |
| 1149 // When the quads have a clip of their own, it is used. | 1149 // When the quads have a clip of their own, it is used. |
| 1150 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1150 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
| 1151 root_delegated_shared_quad_state->clip_rect.ToString()); | 1151 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1152 // Quads came with a clip rect. | 1152 // Quads came with a clip rect. |
| 1153 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1153 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1154 | 1154 |
| 1155 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1155 host_impl_->DrawLayers(&frame); |
| 1156 host_impl_->DidDrawAllLayers(frame); | 1156 host_impl_->DidDrawAllLayers(frame); |
| 1157 } | 1157 } |
| 1158 | 1158 |
| 1159 TEST_F(DelegatedRendererLayerImplTestClip, | 1159 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1160 QuadsUnclipped_LayerClipped_NoSurface) { | 1160 QuadsUnclipped_LayerClipped_NoSurface) { |
| 1161 root_delegated_render_pass_is_clipped_ = false; | 1161 root_delegated_render_pass_is_clipped_ = false; |
| 1162 clip_delegated_renderer_layer_ = true; | 1162 clip_delegated_renderer_layer_ = true; |
| 1163 SetUpTest(); | 1163 SetUpTest(); |
| 1164 | 1164 |
| 1165 LayerTreeHostImpl::FrameData frame; | 1165 LayerTreeHostImpl::FrameData frame; |
| 1166 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1166 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1167 | 1167 |
| 1168 ASSERT_EQ(2u, frame.render_passes.size()); | 1168 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1169 const QuadList& contrib_delegated_quad_list = | 1169 const QuadList& contrib_delegated_quad_list = |
| 1170 frame.render_passes[0]->quad_list; | 1170 frame.render_passes[0]->quad_list; |
| 1171 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1171 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1172 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; |
| 1173 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1173 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1174 const SharedQuadState* root_delegated_shared_quad_state = | 1174 const SharedQuadState* root_delegated_shared_quad_state = |
| 1175 root_delegated_quad_list[0]->shared_quad_state; | 1175 root_delegated_quad_list[0]->shared_quad_state; |
| 1176 | 1176 |
| 1177 // When the quads don't have a clip of their own, the clip rect is set to | 1177 // When the quads don't have a clip of their own, the clip rect is set to |
| 1178 // the drawable_content_rect of the delegated renderer layer. When the layer | 1178 // the drawable_content_rect of the delegated renderer layer. When the layer |
| 1179 // is clipped, that should be seen in the quads' clip_rect. | 1179 // is clipped, that should be seen in the quads' clip_rect. |
| 1180 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1180 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
| 1181 root_delegated_shared_quad_state->clip_rect.ToString()); | 1181 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1182 // Quads are clipped to the delegated renderer layer. | 1182 // Quads are clipped to the delegated renderer layer. |
| 1183 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1183 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1184 | 1184 |
| 1185 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1185 host_impl_->DrawLayers(&frame); |
| 1186 host_impl_->DidDrawAllLayers(frame); | 1186 host_impl_->DidDrawAllLayers(frame); |
| 1187 } | 1187 } |
| 1188 | 1188 |
| 1189 TEST_F(DelegatedRendererLayerImplTestClip, | 1189 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1190 QuadsClipped_LayerClipped_NoSurface) { | 1190 QuadsClipped_LayerClipped_NoSurface) { |
| 1191 root_delegated_render_pass_is_clipped_ = true; | 1191 root_delegated_render_pass_is_clipped_ = true; |
| 1192 clip_delegated_renderer_layer_ = true; | 1192 clip_delegated_renderer_layer_ = true; |
| 1193 SetUpTest(); | 1193 SetUpTest(); |
| 1194 | 1194 |
| 1195 LayerTreeHostImpl::FrameData frame; | 1195 LayerTreeHostImpl::FrameData frame; |
| 1196 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1196 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1197 | 1197 |
| 1198 ASSERT_EQ(2u, frame.render_passes.size()); | 1198 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1199 const QuadList& contrib_delegated_quad_list = | 1199 const QuadList& contrib_delegated_quad_list = |
| 1200 frame.render_passes[0]->quad_list; | 1200 frame.render_passes[0]->quad_list; |
| 1201 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1201 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1202 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; |
| 1203 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1203 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1204 const SharedQuadState* root_delegated_shared_quad_state = | 1204 const SharedQuadState* root_delegated_shared_quad_state = |
| 1205 root_delegated_quad_list[0]->shared_quad_state; | 1205 root_delegated_quad_list[0]->shared_quad_state; |
| 1206 | 1206 |
| 1207 // When the quads have a clip of their own, it is used, but it is | 1207 // When the quads have a clip of their own, it is used, but it is |
| 1208 // combined with the clip rect of the delegated renderer layer. | 1208 // combined with the clip rect of the delegated renderer layer. |
| 1209 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), | 1209 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), |
| 1210 root_delegated_shared_quad_state->clip_rect.ToString()); | 1210 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1211 // Quads came with a clip rect. | 1211 // Quads came with a clip rect. |
| 1212 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1212 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1213 | 1213 |
| 1214 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1214 host_impl_->DrawLayers(&frame); |
| 1215 host_impl_->DidDrawAllLayers(frame); | 1215 host_impl_->DidDrawAllLayers(frame); |
| 1216 } | 1216 } |
| 1217 | 1217 |
| 1218 TEST_F(DelegatedRendererLayerImplTestClip, | 1218 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1219 QuadsUnclipped_LayerUnclipped_Surface) { | 1219 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1220 root_delegated_render_pass_is_clipped_ = false; | 1220 root_delegated_render_pass_is_clipped_ = false; |
| 1221 clip_delegated_renderer_layer_ = false; | 1221 clip_delegated_renderer_layer_ = false; |
| 1222 SetUpTest(); | 1222 SetUpTest(); |
| 1223 | 1223 |
| 1224 delegated_renderer_layer_->SetForceRenderSurface(true); | 1224 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1225 | 1225 |
| 1226 LayerTreeHostImpl::FrameData frame; | 1226 LayerTreeHostImpl::FrameData frame; |
| 1227 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1227 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1228 | 1228 |
| 1229 ASSERT_EQ(3u, frame.render_passes.size()); | 1229 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1230 const QuadList& contrib_delegated_quad_list = | 1230 const QuadList& contrib_delegated_quad_list = |
| 1231 frame.render_passes[0]->quad_list; | 1231 frame.render_passes[0]->quad_list; |
| 1232 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1232 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1233 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1233 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1234 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1234 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1235 const SharedQuadState* root_delegated_shared_quad_state = | 1235 const SharedQuadState* root_delegated_shared_quad_state = |
| 1236 root_delegated_quad_list[0]->shared_quad_state; | 1236 root_delegated_quad_list[0]->shared_quad_state; |
| 1237 | 1237 |
| 1238 // When the layer owns a surface, the quads don't need to be clipped | 1238 // When the layer owns a surface, the quads don't need to be clipped |
| 1239 // further than they already specify. If they aren't clipped, then their | 1239 // further than they already specify. If they aren't clipped, then their |
| 1240 // clip rect is ignored, and they are not set as clipped. | 1240 // clip rect is ignored, and they are not set as clipped. |
| 1241 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1241 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1242 | 1242 |
| 1243 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1243 host_impl_->DrawLayers(&frame); |
| 1244 host_impl_->DidDrawAllLayers(frame); | 1244 host_impl_->DidDrawAllLayers(frame); |
| 1245 } | 1245 } |
| 1246 | 1246 |
| 1247 TEST_F(DelegatedRendererLayerImplTestClip, | 1247 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1248 QuadsClipped_LayerUnclipped_Surface) { | 1248 QuadsClipped_LayerUnclipped_Surface) { |
| 1249 root_delegated_render_pass_is_clipped_ = true; | 1249 root_delegated_render_pass_is_clipped_ = true; |
| 1250 clip_delegated_renderer_layer_ = false; | 1250 clip_delegated_renderer_layer_ = false; |
| 1251 SetUpTest(); | 1251 SetUpTest(); |
| 1252 | 1252 |
| 1253 delegated_renderer_layer_->SetForceRenderSurface(true); | 1253 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1254 | 1254 |
| 1255 LayerTreeHostImpl::FrameData frame; | 1255 LayerTreeHostImpl::FrameData frame; |
| 1256 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1256 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1257 | 1257 |
| 1258 ASSERT_EQ(3u, frame.render_passes.size()); | 1258 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1259 const QuadList& contrib_delegated_quad_list = | 1259 const QuadList& contrib_delegated_quad_list = |
| 1260 frame.render_passes[0]->quad_list; | 1260 frame.render_passes[0]->quad_list; |
| 1261 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1261 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1262 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1262 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1263 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1263 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1264 const SharedQuadState* root_delegated_shared_quad_state = | 1264 const SharedQuadState* root_delegated_shared_quad_state = |
| 1265 root_delegated_quad_list[0]->shared_quad_state; | 1265 root_delegated_quad_list[0]->shared_quad_state; |
| 1266 | 1266 |
| 1267 // When the quads have a clip of their own, it is used. | 1267 // When the quads have a clip of their own, it is used. |
| 1268 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1268 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1269 root_delegated_shared_quad_state->clip_rect.ToString()); | 1269 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1270 // Quads came with a clip rect. | 1270 // Quads came with a clip rect. |
| 1271 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1271 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1272 | 1272 |
| 1273 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1273 host_impl_->DrawLayers(&frame); |
| 1274 host_impl_->DidDrawAllLayers(frame); | 1274 host_impl_->DidDrawAllLayers(frame); |
| 1275 } | 1275 } |
| 1276 | 1276 |
| 1277 TEST_F(DelegatedRendererLayerImplTestClip, | 1277 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1278 QuadsUnclipped_LayerClipped_Surface) { | 1278 QuadsUnclipped_LayerClipped_Surface) { |
| 1279 root_delegated_render_pass_is_clipped_ = false; | 1279 root_delegated_render_pass_is_clipped_ = false; |
| 1280 clip_delegated_renderer_layer_ = true; | 1280 clip_delegated_renderer_layer_ = true; |
| 1281 SetUpTest(); | 1281 SetUpTest(); |
| 1282 | 1282 |
| 1283 delegated_renderer_layer_->SetForceRenderSurface(true); | 1283 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1284 | 1284 |
| 1285 LayerTreeHostImpl::FrameData frame; | 1285 LayerTreeHostImpl::FrameData frame; |
| 1286 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1286 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1287 | 1287 |
| 1288 ASSERT_EQ(3u, frame.render_passes.size()); | 1288 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1289 const QuadList& contrib_delegated_quad_list = | 1289 const QuadList& contrib_delegated_quad_list = |
| 1290 frame.render_passes[0]->quad_list; | 1290 frame.render_passes[0]->quad_list; |
| 1291 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1291 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1292 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1292 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1293 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1293 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1294 const SharedQuadState* root_delegated_shared_quad_state = | 1294 const SharedQuadState* root_delegated_shared_quad_state = |
| 1295 root_delegated_quad_list[0]->shared_quad_state; | 1295 root_delegated_quad_list[0]->shared_quad_state; |
| 1296 | 1296 |
| 1297 // When the layer owns a surface, the quads don't need to be clipped | 1297 // When the layer owns a surface, the quads don't need to be clipped |
| 1298 // further than they already specify. If they aren't clipped, then their | 1298 // further than they already specify. If they aren't clipped, then their |
| 1299 // clip rect is ignored, and they are not set as clipped. | 1299 // clip rect is ignored, and they are not set as clipped. |
| 1300 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1300 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1301 | 1301 |
| 1302 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1302 host_impl_->DrawLayers(&frame); |
| 1303 host_impl_->DidDrawAllLayers(frame); | 1303 host_impl_->DidDrawAllLayers(frame); |
| 1304 } | 1304 } |
| 1305 | 1305 |
| 1306 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1306 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1307 root_delegated_render_pass_is_clipped_ = true; | 1307 root_delegated_render_pass_is_clipped_ = true; |
| 1308 clip_delegated_renderer_layer_ = true; | 1308 clip_delegated_renderer_layer_ = true; |
| 1309 SetUpTest(); | 1309 SetUpTest(); |
| 1310 | 1310 |
| 1311 delegated_renderer_layer_->SetForceRenderSurface(true); | 1311 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1312 | 1312 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1323 root_delegated_quad_list[0]->shared_quad_state; | 1323 root_delegated_quad_list[0]->shared_quad_state; |
| 1324 | 1324 |
| 1325 // When the quads have a clip of their own, it is used, but it is | 1325 // When the quads have a clip of their own, it is used, but it is |
| 1326 // combined with the clip rect of the delegated renderer layer. If the | 1326 // combined with the clip rect of the delegated renderer layer. If the |
| 1327 // layer owns a surface, then it does not have a clip rect of its own. | 1327 // layer owns a surface, then it does not have a clip rect of its own. |
| 1328 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1328 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1329 root_delegated_shared_quad_state->clip_rect.ToString()); | 1329 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1330 // Quads came with a clip rect. | 1330 // Quads came with a clip rect. |
| 1331 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1331 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1332 | 1332 |
| 1333 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1333 host_impl_->DrawLayers(&frame); |
| 1334 host_impl_->DidDrawAllLayers(frame); | 1334 host_impl_->DidDrawAllLayers(frame); |
| 1335 } | 1335 } |
| 1336 | 1336 |
| 1337 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { | 1337 TEST_F(DelegatedRendererLayerImplTest, InvalidRenderPassDrawQuad) { |
| 1338 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( | 1338 scoped_ptr<LayerImpl> root_layer = LayerImpl::Create( |
| 1339 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); | 1339 host_impl_->active_tree(), 1).PassAs<LayerImpl>(); |
| 1340 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = | 1340 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer = |
| 1341 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); | 1341 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 4); |
| 1342 | 1342 |
| 1343 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 1343 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1376 | 1376 |
| 1377 LayerTreeHostImpl::FrameData frame; | 1377 LayerTreeHostImpl::FrameData frame; |
| 1378 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1378 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 1379 | 1379 |
| 1380 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1380 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
| 1381 ASSERT_EQ(1u, frame.render_passes.size()); | 1381 ASSERT_EQ(1u, frame.render_passes.size()); |
| 1382 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1382 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 1383 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1383 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 1384 frame.render_passes[0]->quad_list[0]->material); | 1384 frame.render_passes[0]->quad_list[0]->material); |
| 1385 | 1385 |
| 1386 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1386 host_impl_->DrawLayers(&frame); |
| 1387 host_impl_->DidDrawAllLayers(frame); | 1387 host_impl_->DidDrawAllLayers(frame); |
| 1388 } | 1388 } |
| 1389 | 1389 |
| 1390 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { | 1390 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { |
| 1391 gfx::Size layer_size(1000, 1000); | 1391 gfx::Size layer_size(1000, 1000); |
| 1392 gfx::Size viewport_size(1000, 1000); | 1392 gfx::Size viewport_size(1000, 1000); |
| 1393 gfx::Rect quad_rect(200, 300, 400, 500); | 1393 gfx::Rect quad_rect(200, 300, 400, 500); |
| 1394 | 1394 |
| 1395 gfx::Transform transform; | 1395 gfx::Transform transform; |
| 1396 transform.Translate(11.0, 0.0); | 1396 transform.Translate(11.0, 0.0); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1515 // The occlusion extends to 500 in the x-axis, pushing the left of the | 1515 // The occlusion extends to 500 in the x-axis, pushing the left of the |
| 1516 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. | 1516 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. |
| 1517 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), | 1517 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), |
| 1518 impl.quad_list()[0]->visible_rect.ToString()); | 1518 impl.quad_list()[0]->visible_rect.ToString()); |
| 1519 } | 1519 } |
| 1520 } | 1520 } |
| 1521 } | 1521 } |
| 1522 | 1522 |
| 1523 } // namespace | 1523 } // namespace |
| 1524 } // namespace cc | 1524 } // namespace cc |
| OLD | NEW |