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