| 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 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 | 133 |
| 134 protected: | 134 protected: |
| 135 LayerImpl* root_layer_; | 135 LayerImpl* root_layer_; |
| 136 LayerImpl* layer_before_; | 136 LayerImpl* layer_before_; |
| 137 LayerImpl* layer_after_; | 137 LayerImpl* layer_after_; |
| 138 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 138 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 139 }; | 139 }; |
| 140 | 140 |
| 141 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { | 141 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { |
| 142 LayerTreeHostImpl::FrameData frame; | 142 LayerTreeHostImpl::FrameData frame; |
| 143 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 143 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 144 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 145 | 144 |
| 146 // Each non-DelegatedRendererLayer added one RenderPass. The | 145 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 147 // DelegatedRendererLayer added two contributing passes. | 146 // DelegatedRendererLayer added two contributing passes. |
| 148 ASSERT_EQ(5u, frame.render_passes.size()); | 147 ASSERT_EQ(5u, frame.render_passes.size()); |
| 149 | 148 |
| 150 // The DelegatedRendererLayer should have added its contributing RenderPasses | 149 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 151 // to the frame. | 150 // to the frame. |
| 152 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 151 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 153 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 152 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 154 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 153 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 168 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 167 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 169 frame.render_passes[2]->output_rect.ToString()); | 168 frame.render_passes[2]->output_rect.ToString()); |
| 170 | 169 |
| 171 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 170 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 172 host_impl_->DidDrawAllLayers(frame); | 171 host_impl_->DidDrawAllLayers(frame); |
| 173 } | 172 } |
| 174 | 173 |
| 175 TEST_F(DelegatedRendererLayerImplTestSimple, | 174 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 176 AddsQuadsToContributingRenderPasses) { | 175 AddsQuadsToContributingRenderPasses) { |
| 177 LayerTreeHostImpl::FrameData frame; | 176 LayerTreeHostImpl::FrameData frame; |
| 178 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 177 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 179 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 180 | 178 |
| 181 // Each non-DelegatedRendererLayer added one RenderPass. The | 179 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 182 // DelegatedRendererLayer added two contributing passes. | 180 // DelegatedRendererLayer added two contributing passes. |
| 183 ASSERT_EQ(5u, frame.render_passes.size()); | 181 ASSERT_EQ(5u, frame.render_passes.size()); |
| 184 | 182 |
| 185 // The DelegatedRendererLayer should have added its contributing RenderPasses | 183 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 186 // to the frame. | 184 // to the frame. |
| 187 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 185 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 188 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 186 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 189 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 187 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 204 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 202 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 205 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 203 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 206 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 204 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 207 | 205 |
| 208 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 206 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 209 host_impl_->DidDrawAllLayers(frame); | 207 host_impl_->DidDrawAllLayers(frame); |
| 210 } | 208 } |
| 211 | 209 |
| 212 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 210 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
| 213 LayerTreeHostImpl::FrameData frame; | 211 LayerTreeHostImpl::FrameData frame; |
| 214 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 215 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 216 | 213 |
| 217 // Each non-DelegatedRendererLayer added one RenderPass. The | 214 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 218 // DelegatedRendererLayer added two contributing passes. | 215 // DelegatedRendererLayer added two contributing passes. |
| 219 ASSERT_EQ(5u, frame.render_passes.size()); | 216 ASSERT_EQ(5u, frame.render_passes.size()); |
| 220 | 217 |
| 221 // The layer's target is the RenderPass from layer_after_. | 218 // The layer's target is the RenderPass from layer_after_. |
| 222 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); | 219 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); |
| 223 | 220 |
| 224 // The DelegatedRendererLayer should have added copies of quads in its root | 221 // The DelegatedRendererLayer should have added copies of quads in its root |
| 225 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 222 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
| 226 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 223 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
| 227 | 224 |
| 228 // Verify it added the right quads. | 225 // Verify it added the right quads. |
| 229 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 226 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 230 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 227 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 231 | 228 |
| 232 // Its target layer should have a quad as well. | 229 // Its target layer should have a quad as well. |
| 233 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 230 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
| 234 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 231 frame.render_passes[3]->quad_list[1]->rect.ToString()); |
| 235 | 232 |
| 236 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 237 host_impl_->DidDrawAllLayers(frame); | 234 host_impl_->DidDrawAllLayers(frame); |
| 238 } | 235 } |
| 239 | 236 |
| 240 TEST_F(DelegatedRendererLayerImplTestSimple, | 237 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 241 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 238 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
| 242 LayerTreeHostImpl::FrameData frame; | 239 LayerTreeHostImpl::FrameData frame; |
| 243 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 240 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 244 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 245 | 241 |
| 246 // Each non-DelegatedRendererLayer added one RenderPass. The | 242 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 247 // DelegatedRendererLayer added two contributing passes. | 243 // DelegatedRendererLayer added two contributing passes. |
| 248 ASSERT_EQ(5u, frame.render_passes.size()); | 244 ASSERT_EQ(5u, frame.render_passes.size()); |
| 249 | 245 |
| 250 // The DelegatedRendererLayer is at position 3,3 compared to its target, and | 246 // The DelegatedRendererLayer is at position 3,3 compared to its target, and |
| 251 // has a translation transform of 1,1. So its root RenderPass' quads should | 247 // has a translation transform of 1,1. So its root RenderPass' quads should |
| 252 // all be transformed by that combined amount. | 248 // all be transformed by that combined amount. |
| 253 // The DelegatedRendererLayer has a size of 10x10, but the root delegated | 249 // The DelegatedRendererLayer has a size of 10x10, but the root delegated |
| 254 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8. | 250 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 267 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 263 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 268 EXPECT_TRANSFORMATION_MATRIX_EQ( | 264 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 269 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 265 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
| 270 | 266 |
| 271 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 272 host_impl_->DidDrawAllLayers(frame); | 268 host_impl_->DidDrawAllLayers(frame); |
| 273 } | 269 } |
| 274 | 270 |
| 275 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 271 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
| 276 LayerTreeHostImpl::FrameData frame; | 272 LayerTreeHostImpl::FrameData frame; |
| 277 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 278 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 279 | 274 |
| 280 // The delegated layer has a surface between it and the root. | 275 // The delegated layer has a surface between it and the root. |
| 281 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); | 276 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); |
| 282 | 277 |
| 283 // Each non-DelegatedRendererLayer added one RenderPass. The | 278 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 284 // DelegatedRendererLayer added two contributing passes. | 279 // DelegatedRendererLayer added two contributing passes. |
| 285 ASSERT_EQ(5u, frame.render_passes.size()); | 280 ASSERT_EQ(5u, frame.render_passes.size()); |
| 286 | 281 |
| 287 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all | 282 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all |
| 288 // render pass' transforms to the root should be shifted by this amount. | 283 // render pass' transforms to the root should be shifted by this amount. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 304 EXPECT_TRANSFORMATION_MATRIX_EQ( | 299 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 305 transform * seven_eight, | 300 transform * seven_eight, |
| 306 frame.render_passes[2]->transform_to_root_target); | 301 frame.render_passes[2]->transform_to_root_target); |
| 307 | 302 |
| 308 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 303 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 309 host_impl_->DidDrawAllLayers(frame); | 304 host_impl_->DidDrawAllLayers(frame); |
| 310 } | 305 } |
| 311 | 306 |
| 312 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 307 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
| 313 LayerTreeHostImpl::FrameData frame; | 308 LayerTreeHostImpl::FrameData frame; |
| 314 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 309 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 315 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 316 | 310 |
| 317 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 311 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
| 318 // has no need to be a RenderSurface for the quads it carries. | 312 // has no need to be a RenderSurface for the quads it carries. |
| 319 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | 313 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
| 320 | 314 |
| 321 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 315 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 322 host_impl_->DidDrawAllLayers(frame); | 316 host_impl_->DidDrawAllLayers(frame); |
| 323 } | 317 } |
| 324 | 318 |
| 325 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 319 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
| 326 delegated_renderer_layer_->SetOpacity(0.5f); | 320 delegated_renderer_layer_->SetOpacity(0.5f); |
| 327 | 321 |
| 328 LayerTreeHostImpl::FrameData frame; | 322 LayerTreeHostImpl::FrameData frame; |
| 329 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 323 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 330 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 331 | 324 |
| 332 // This test case has quads from multiple layers in the delegated renderer, so | 325 // This test case has quads from multiple layers in the delegated renderer, so |
| 333 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 326 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 334 // render surface. | 327 // render surface. |
| 335 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 328 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 336 | 329 |
| 337 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 330 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 338 host_impl_->DidDrawAllLayers(frame); | 331 host_impl_->DidDrawAllLayers(frame); |
| 339 } | 332 } |
| 340 | 333 |
| 341 TEST_F(DelegatedRendererLayerImplTestSimple, | 334 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 342 DoesOwnARenderSurfaceForTransform) { | 335 DoesOwnARenderSurfaceForTransform) { |
| 343 gfx::Transform rotation; | 336 gfx::Transform rotation; |
| 344 rotation.RotateAboutZAxis(30.0); | 337 rotation.RotateAboutZAxis(30.0); |
| 345 delegated_renderer_layer_->SetTransform(rotation); | 338 delegated_renderer_layer_->SetTransform(rotation); |
| 346 | 339 |
| 347 LayerTreeHostImpl::FrameData frame; | 340 LayerTreeHostImpl::FrameData frame; |
| 348 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 341 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 349 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 350 | 342 |
| 351 // This test case has quads from multiple layers in the delegated renderer, so | 343 // This test case has quads from multiple layers in the delegated renderer, so |
| 352 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 344 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 353 // render surface. | 345 // render surface. |
| 354 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 346 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 355 | 347 |
| 356 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 348 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 357 host_impl_->DidDrawAllLayers(frame); | 349 host_impl_->DidDrawAllLayers(frame); |
| 358 } | 350 } |
| 359 | 351 |
| 360 class DelegatedRendererLayerImplTestOwnSurface | 352 class DelegatedRendererLayerImplTestOwnSurface |
| 361 : public DelegatedRendererLayerImplTestSimple { | 353 : public DelegatedRendererLayerImplTestSimple { |
| 362 public: | 354 public: |
| 363 DelegatedRendererLayerImplTestOwnSurface() | 355 DelegatedRendererLayerImplTestOwnSurface() |
| 364 : DelegatedRendererLayerImplTestSimple() { | 356 : DelegatedRendererLayerImplTestSimple() { |
| 365 delegated_renderer_layer_->SetForceRenderSurface(true); | 357 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 366 } | 358 } |
| 367 }; | 359 }; |
| 368 | 360 |
| 369 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 361 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
| 370 LayerTreeHostImpl::FrameData frame; | 362 LayerTreeHostImpl::FrameData frame; |
| 371 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 363 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 372 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 373 | 364 |
| 374 // Each non-DelegatedRendererLayer added one RenderPass. The | 365 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 375 // DelegatedRendererLayer added two contributing passes and its owned surface | 366 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 376 // added one pass. | 367 // added one pass. |
| 377 ASSERT_EQ(6u, frame.render_passes.size()); | 368 ASSERT_EQ(6u, frame.render_passes.size()); |
| 378 | 369 |
| 379 // The DelegatedRendererLayer should have added its contributing RenderPasses | 370 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 380 // to the frame. | 371 // to the frame. |
| 381 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 372 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 382 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 373 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 401 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 392 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 402 frame.render_passes[2]->output_rect.ToString()); | 393 frame.render_passes[2]->output_rect.ToString()); |
| 403 | 394 |
| 404 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 395 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 405 host_impl_->DidDrawAllLayers(frame); | 396 host_impl_->DidDrawAllLayers(frame); |
| 406 } | 397 } |
| 407 | 398 |
| 408 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 399 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 409 AddsQuadsToContributingRenderPasses) { | 400 AddsQuadsToContributingRenderPasses) { |
| 410 LayerTreeHostImpl::FrameData frame; | 401 LayerTreeHostImpl::FrameData frame; |
| 411 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 402 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 412 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 413 | 403 |
| 414 // Each non-DelegatedRendererLayer added one RenderPass. The | 404 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 415 // DelegatedRendererLayer added two contributing passes and its owned surface | 405 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 416 // added one pass. | 406 // added one pass. |
| 417 ASSERT_EQ(6u, frame.render_passes.size()); | 407 ASSERT_EQ(6u, frame.render_passes.size()); |
| 418 | 408 |
| 419 // The DelegatedRendererLayer should have added its contributing RenderPasses | 409 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 420 // to the frame. | 410 // to the frame. |
| 421 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 411 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 422 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 412 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 438 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 428 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 439 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 429 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 440 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 430 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 441 | 431 |
| 442 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 432 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 443 host_impl_->DidDrawAllLayers(frame); | 433 host_impl_->DidDrawAllLayers(frame); |
| 444 } | 434 } |
| 445 | 435 |
| 446 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 436 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
| 447 LayerTreeHostImpl::FrameData frame; | 437 LayerTreeHostImpl::FrameData frame; |
| 448 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 438 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 449 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 450 | 439 |
| 451 // Each non-DelegatedRendererLayer added one RenderPass. The | 440 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 452 // DelegatedRendererLayer added two contributing passes and its owned surface | 441 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 453 // added one pass. | 442 // added one pass. |
| 454 ASSERT_EQ(6u, frame.render_passes.size()); | 443 ASSERT_EQ(6u, frame.render_passes.size()); |
| 455 | 444 |
| 456 // The layer's target is the RenderPass owned by itself. | 445 // The layer's target is the RenderPass owned by itself. |
| 457 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); | 446 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); |
| 458 | 447 |
| 459 // The DelegatedRendererLayer should have added copies of quads in its root | 448 // The DelegatedRendererLayer should have added copies of quads in its root |
| 460 // RenderPass to its target RenderPass. | 449 // RenderPass to its target RenderPass. |
| 461 // The layer_after also adds one quad. | 450 // The layer_after also adds one quad. |
| 462 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 451 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
| 463 | 452 |
| 464 // Verify it added the right quads. | 453 // Verify it added the right quads. |
| 465 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 454 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 466 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 455 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 467 | 456 |
| 468 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 457 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 469 host_impl_->DidDrawAllLayers(frame); | 458 host_impl_->DidDrawAllLayers(frame); |
| 470 } | 459 } |
| 471 | 460 |
| 472 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 461 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 473 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 462 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
| 474 LayerTreeHostImpl::FrameData frame; | 463 LayerTreeHostImpl::FrameData frame; |
| 475 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 464 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 476 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 477 | 465 |
| 478 // Each non-DelegatedRendererLayer added one RenderPass. The | 466 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 479 // DelegatedRendererLayer added two contributing passes and its owned surface | 467 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 480 // added one pass. | 468 // added one pass. |
| 481 ASSERT_EQ(6u, frame.render_passes.size()); | 469 ASSERT_EQ(6u, frame.render_passes.size()); |
| 482 | 470 |
| 483 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 471 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
| 484 // RenderPass' quads do not need to be translated at all. However, they are | 472 // RenderPass' quads do not need to be translated at all. However, they are |
| 485 // scaled from the frame's size (8x8) to the layer's bounds (10x10). | 473 // scaled from the frame's size (8x8) to the layer's bounds (10x10). |
| 486 gfx::Transform transform; | 474 gfx::Transform transform; |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 LayerImpl* root_layer_; | 689 LayerImpl* root_layer_; |
| 702 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 690 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 703 bool root_delegated_render_pass_is_clipped_; | 691 bool root_delegated_render_pass_is_clipped_; |
| 704 }; | 692 }; |
| 705 | 693 |
| 706 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { | 694 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { |
| 707 root_delegated_render_pass_is_clipped_ = false; | 695 root_delegated_render_pass_is_clipped_ = false; |
| 708 SetUpTest(); | 696 SetUpTest(); |
| 709 | 697 |
| 710 LayerTreeHostImpl::FrameData frame; | 698 LayerTreeHostImpl::FrameData frame; |
| 711 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 699 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 712 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 713 | 700 |
| 714 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 701 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 715 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 702 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 716 VerifyRenderPasses( | 703 VerifyRenderPasses( |
| 717 frame, | 704 frame, |
| 718 2, | 705 2, |
| 719 &root_delegated_shared_quad_state, | 706 &root_delegated_shared_quad_state, |
| 720 &contrib_delegated_shared_quad_state); | 707 &contrib_delegated_shared_quad_state); |
| 721 | 708 |
| 722 // When the quads don't have a clip of their own, the clip rect is set to | 709 // When the quads don't have a clip of their own, the clip rect is set to |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 | 745 |
| 759 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 746 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 760 host_impl_->DidDrawAllLayers(frame); | 747 host_impl_->DidDrawAllLayers(frame); |
| 761 } | 748 } |
| 762 | 749 |
| 763 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 750 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
| 764 root_delegated_render_pass_is_clipped_ = true; | 751 root_delegated_render_pass_is_clipped_ = true; |
| 765 SetUpTest(); | 752 SetUpTest(); |
| 766 | 753 |
| 767 LayerTreeHostImpl::FrameData frame; | 754 LayerTreeHostImpl::FrameData frame; |
| 768 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 755 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 769 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 770 | 756 |
| 771 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 757 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 772 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 758 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 773 VerifyRenderPasses( | 759 VerifyRenderPasses( |
| 774 frame, | 760 frame, |
| 775 2, | 761 2, |
| 776 &root_delegated_shared_quad_state, | 762 &root_delegated_shared_quad_state, |
| 777 &contrib_delegated_shared_quad_state); | 763 &contrib_delegated_shared_quad_state); |
| 778 | 764 |
| 779 // Since the quads have a clip_rect it should be modified by delegated | 765 // Since the quads have a clip_rect it should be modified by delegated |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 824 host_impl_->DidDrawAllLayers(frame); | 810 host_impl_->DidDrawAllLayers(frame); |
| 825 } | 811 } |
| 826 | 812 |
| 827 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 813 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 828 root_delegated_render_pass_is_clipped_ = false; | 814 root_delegated_render_pass_is_clipped_ = false; |
| 829 SetUpTest(); | 815 SetUpTest(); |
| 830 | 816 |
| 831 delegated_renderer_layer_->SetForceRenderSurface(true); | 817 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 832 | 818 |
| 833 LayerTreeHostImpl::FrameData frame; | 819 LayerTreeHostImpl::FrameData frame; |
| 834 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 820 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 835 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 836 | 821 |
| 837 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 822 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 838 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 823 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 839 VerifyRenderPasses( | 824 VerifyRenderPasses( |
| 840 frame, | 825 frame, |
| 841 3, | 826 3, |
| 842 &root_delegated_shared_quad_state, | 827 &root_delegated_shared_quad_state, |
| 843 &contrib_delegated_shared_quad_state); | 828 &contrib_delegated_shared_quad_state); |
| 844 | 829 |
| 845 // When the layer owns a surface, then its position and translation are not | 830 // When the layer owns a surface, then its position and translation are not |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 881 host_impl_->DidDrawAllLayers(frame); | 866 host_impl_->DidDrawAllLayers(frame); |
| 882 } | 867 } |
| 883 | 868 |
| 884 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 869 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 885 root_delegated_render_pass_is_clipped_ = true; | 870 root_delegated_render_pass_is_clipped_ = true; |
| 886 SetUpTest(); | 871 SetUpTest(); |
| 887 | 872 |
| 888 delegated_renderer_layer_->SetForceRenderSurface(true); | 873 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 889 | 874 |
| 890 LayerTreeHostImpl::FrameData frame; | 875 LayerTreeHostImpl::FrameData frame; |
| 891 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 876 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 892 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 893 | 877 |
| 894 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 878 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 895 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 879 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 896 VerifyRenderPasses( | 880 VerifyRenderPasses( |
| 897 frame, | 881 frame, |
| 898 3, | 882 3, |
| 899 &root_delegated_shared_quad_state, | 883 &root_delegated_shared_quad_state, |
| 900 &contrib_delegated_shared_quad_state); | 884 &contrib_delegated_shared_quad_state); |
| 901 | 885 |
| 902 // When the layer owns a surface, then its position and translation are not | 886 // When the layer owns a surface, then its position and translation are not |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 bool clip_delegated_renderer_layer_; | 1092 bool clip_delegated_renderer_layer_; |
| 1109 }; | 1093 }; |
| 1110 | 1094 |
| 1111 TEST_F(DelegatedRendererLayerImplTestClip, | 1095 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1112 QuadsUnclipped_LayerUnclipped_NoSurface) { | 1096 QuadsUnclipped_LayerUnclipped_NoSurface) { |
| 1113 root_delegated_render_pass_is_clipped_ = false; | 1097 root_delegated_render_pass_is_clipped_ = false; |
| 1114 clip_delegated_renderer_layer_ = false; | 1098 clip_delegated_renderer_layer_ = false; |
| 1115 SetUpTest(); | 1099 SetUpTest(); |
| 1116 | 1100 |
| 1117 LayerTreeHostImpl::FrameData frame; | 1101 LayerTreeHostImpl::FrameData frame; |
| 1118 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1102 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1119 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1120 | 1103 |
| 1121 ASSERT_EQ(2u, frame.render_passes.size()); | 1104 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1122 const QuadList& contrib_delegated_quad_list = | 1105 const QuadList& contrib_delegated_quad_list = |
| 1123 frame.render_passes[0]->quad_list; | 1106 frame.render_passes[0]->quad_list; |
| 1124 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1107 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1125 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1108 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1126 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1109 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1127 const SharedQuadState* root_delegated_shared_quad_state = | 1110 const SharedQuadState* root_delegated_shared_quad_state = |
| 1128 root_delegated_quad_list[0]->shared_quad_state; | 1111 root_delegated_quad_list[0]->shared_quad_state; |
| 1129 | 1112 |
| 1130 // When the quads don't have a clip of their own, the clip rect is set to | 1113 // When the quads don't have a clip of their own, the clip rect is set to |
| 1131 // the drawable_content_rect of the delegated renderer layer. | 1114 // the drawable_content_rect of the delegated renderer layer. |
| 1132 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1115 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
| 1133 root_delegated_shared_quad_state->clip_rect.ToString()); | 1116 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1134 // Quads are clipped to the delegated renderer layer. | 1117 // Quads are clipped to the delegated renderer layer. |
| 1135 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1118 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1136 | 1119 |
| 1137 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1120 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1138 host_impl_->DidDrawAllLayers(frame); | 1121 host_impl_->DidDrawAllLayers(frame); |
| 1139 } | 1122 } |
| 1140 | 1123 |
| 1141 TEST_F(DelegatedRendererLayerImplTestClip, | 1124 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1142 QuadsClipped_LayerUnclipped_NoSurface) { | 1125 QuadsClipped_LayerUnclipped_NoSurface) { |
| 1143 root_delegated_render_pass_is_clipped_ = true; | 1126 root_delegated_render_pass_is_clipped_ = true; |
| 1144 clip_delegated_renderer_layer_ = false; | 1127 clip_delegated_renderer_layer_ = false; |
| 1145 SetUpTest(); | 1128 SetUpTest(); |
| 1146 | 1129 |
| 1147 LayerTreeHostImpl::FrameData frame; | 1130 LayerTreeHostImpl::FrameData frame; |
| 1148 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1131 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1149 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1150 | 1132 |
| 1151 ASSERT_EQ(2u, frame.render_passes.size()); | 1133 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1152 const QuadList& contrib_delegated_quad_list = | 1134 const QuadList& contrib_delegated_quad_list = |
| 1153 frame.render_passes[0]->quad_list; | 1135 frame.render_passes[0]->quad_list; |
| 1154 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1136 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1155 const QuadList& root_delegated_quad_list = | 1137 const QuadList& root_delegated_quad_list = |
| 1156 frame.render_passes[1]->quad_list; | 1138 frame.render_passes[1]->quad_list; |
| 1157 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1139 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1158 const SharedQuadState* root_delegated_shared_quad_state = | 1140 const SharedQuadState* root_delegated_shared_quad_state = |
| 1159 root_delegated_quad_list[0]->shared_quad_state; | 1141 root_delegated_quad_list[0]->shared_quad_state; |
| 1160 | 1142 |
| 1161 // When the quads have a clip of their own, it is used. | 1143 // When the quads have a clip of their own, it is used. |
| 1162 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1144 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
| 1163 root_delegated_shared_quad_state->clip_rect.ToString()); | 1145 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1164 // Quads came with a clip rect. | 1146 // Quads came with a clip rect. |
| 1165 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1147 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1166 | 1148 |
| 1167 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1149 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1168 host_impl_->DidDrawAllLayers(frame); | 1150 host_impl_->DidDrawAllLayers(frame); |
| 1169 } | 1151 } |
| 1170 | 1152 |
| 1171 TEST_F(DelegatedRendererLayerImplTestClip, | 1153 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1172 QuadsUnclipped_LayerClipped_NoSurface) { | 1154 QuadsUnclipped_LayerClipped_NoSurface) { |
| 1173 root_delegated_render_pass_is_clipped_ = false; | 1155 root_delegated_render_pass_is_clipped_ = false; |
| 1174 clip_delegated_renderer_layer_ = true; | 1156 clip_delegated_renderer_layer_ = true; |
| 1175 SetUpTest(); | 1157 SetUpTest(); |
| 1176 | 1158 |
| 1177 LayerTreeHostImpl::FrameData frame; | 1159 LayerTreeHostImpl::FrameData frame; |
| 1178 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1160 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1179 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1180 | 1161 |
| 1181 ASSERT_EQ(2u, frame.render_passes.size()); | 1162 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1182 const QuadList& contrib_delegated_quad_list = | 1163 const QuadList& contrib_delegated_quad_list = |
| 1183 frame.render_passes[0]->quad_list; | 1164 frame.render_passes[0]->quad_list; |
| 1184 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1165 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1185 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1166 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1186 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1167 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1187 const SharedQuadState* root_delegated_shared_quad_state = | 1168 const SharedQuadState* root_delegated_shared_quad_state = |
| 1188 root_delegated_quad_list[0]->shared_quad_state; | 1169 root_delegated_quad_list[0]->shared_quad_state; |
| 1189 | 1170 |
| 1190 // When the quads don't have a clip of their own, the clip rect is set to | 1171 // When the quads don't have a clip of their own, the clip rect is set to |
| 1191 // the drawable_content_rect of the delegated renderer layer. When the layer | 1172 // the drawable_content_rect of the delegated renderer layer. When the layer |
| 1192 // is clipped, that should be seen in the quads' clip_rect. | 1173 // is clipped, that should be seen in the quads' clip_rect. |
| 1193 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1174 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
| 1194 root_delegated_shared_quad_state->clip_rect.ToString()); | 1175 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1195 // Quads are clipped to the delegated renderer layer. | 1176 // Quads are clipped to the delegated renderer layer. |
| 1196 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1177 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1197 | 1178 |
| 1198 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1179 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1199 host_impl_->DidDrawAllLayers(frame); | 1180 host_impl_->DidDrawAllLayers(frame); |
| 1200 } | 1181 } |
| 1201 | 1182 |
| 1202 TEST_F(DelegatedRendererLayerImplTestClip, | 1183 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1203 QuadsClipped_LayerClipped_NoSurface) { | 1184 QuadsClipped_LayerClipped_NoSurface) { |
| 1204 root_delegated_render_pass_is_clipped_ = true; | 1185 root_delegated_render_pass_is_clipped_ = true; |
| 1205 clip_delegated_renderer_layer_ = true; | 1186 clip_delegated_renderer_layer_ = true; |
| 1206 SetUpTest(); | 1187 SetUpTest(); |
| 1207 | 1188 |
| 1208 LayerTreeHostImpl::FrameData frame; | 1189 LayerTreeHostImpl::FrameData frame; |
| 1209 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1190 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1210 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1211 | 1191 |
| 1212 ASSERT_EQ(2u, frame.render_passes.size()); | 1192 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1213 const QuadList& contrib_delegated_quad_list = | 1193 const QuadList& contrib_delegated_quad_list = |
| 1214 frame.render_passes[0]->quad_list; | 1194 frame.render_passes[0]->quad_list; |
| 1215 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1195 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1216 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1196 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1217 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1197 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1218 const SharedQuadState* root_delegated_shared_quad_state = | 1198 const SharedQuadState* root_delegated_shared_quad_state = |
| 1219 root_delegated_quad_list[0]->shared_quad_state; | 1199 root_delegated_quad_list[0]->shared_quad_state; |
| 1220 | 1200 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1231 | 1211 |
| 1232 TEST_F(DelegatedRendererLayerImplTestClip, | 1212 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1233 QuadsUnclipped_LayerUnclipped_Surface) { | 1213 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1234 root_delegated_render_pass_is_clipped_ = false; | 1214 root_delegated_render_pass_is_clipped_ = false; |
| 1235 clip_delegated_renderer_layer_ = false; | 1215 clip_delegated_renderer_layer_ = false; |
| 1236 SetUpTest(); | 1216 SetUpTest(); |
| 1237 | 1217 |
| 1238 delegated_renderer_layer_->SetForceRenderSurface(true); | 1218 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1239 | 1219 |
| 1240 LayerTreeHostImpl::FrameData frame; | 1220 LayerTreeHostImpl::FrameData frame; |
| 1241 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1221 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1242 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1243 | 1222 |
| 1244 ASSERT_EQ(3u, frame.render_passes.size()); | 1223 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1245 const QuadList& contrib_delegated_quad_list = | 1224 const QuadList& contrib_delegated_quad_list = |
| 1246 frame.render_passes[0]->quad_list; | 1225 frame.render_passes[0]->quad_list; |
| 1247 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1226 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1248 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1227 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1249 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1228 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1250 const SharedQuadState* root_delegated_shared_quad_state = | 1229 const SharedQuadState* root_delegated_shared_quad_state = |
| 1251 root_delegated_quad_list[0]->shared_quad_state; | 1230 root_delegated_quad_list[0]->shared_quad_state; |
| 1252 | 1231 |
| 1253 // When the layer owns a surface, the quads don't need to be clipped | 1232 // When the layer owns a surface, the quads don't need to be clipped |
| 1254 // further than they already specify. If they aren't clipped, then their | 1233 // further than they already specify. If they aren't clipped, then their |
| 1255 // clip rect is ignored, and they are not set as clipped. | 1234 // clip rect is ignored, and they are not set as clipped. |
| 1256 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1235 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1257 | 1236 |
| 1258 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1237 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1259 host_impl_->DidDrawAllLayers(frame); | 1238 host_impl_->DidDrawAllLayers(frame); |
| 1260 } | 1239 } |
| 1261 | 1240 |
| 1262 TEST_F(DelegatedRendererLayerImplTestClip, | 1241 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1263 QuadsClipped_LayerUnclipped_Surface) { | 1242 QuadsClipped_LayerUnclipped_Surface) { |
| 1264 root_delegated_render_pass_is_clipped_ = true; | 1243 root_delegated_render_pass_is_clipped_ = true; |
| 1265 clip_delegated_renderer_layer_ = false; | 1244 clip_delegated_renderer_layer_ = false; |
| 1266 SetUpTest(); | 1245 SetUpTest(); |
| 1267 | 1246 |
| 1268 delegated_renderer_layer_->SetForceRenderSurface(true); | 1247 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1269 | 1248 |
| 1270 LayerTreeHostImpl::FrameData frame; | 1249 LayerTreeHostImpl::FrameData frame; |
| 1271 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1250 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1272 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1273 | 1251 |
| 1274 ASSERT_EQ(3u, frame.render_passes.size()); | 1252 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1275 const QuadList& contrib_delegated_quad_list = | 1253 const QuadList& contrib_delegated_quad_list = |
| 1276 frame.render_passes[0]->quad_list; | 1254 frame.render_passes[0]->quad_list; |
| 1277 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1255 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1278 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1256 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1279 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1257 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1280 const SharedQuadState* root_delegated_shared_quad_state = | 1258 const SharedQuadState* root_delegated_shared_quad_state = |
| 1281 root_delegated_quad_list[0]->shared_quad_state; | 1259 root_delegated_quad_list[0]->shared_quad_state; |
| 1282 | 1260 |
| 1283 // When the quads have a clip of their own, it is used. | 1261 // When the quads have a clip of their own, it is used. |
| 1284 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1262 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1285 root_delegated_shared_quad_state->clip_rect.ToString()); | 1263 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1286 // Quads came with a clip rect. | 1264 // Quads came with a clip rect. |
| 1287 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1265 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1288 | 1266 |
| 1289 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1290 host_impl_->DidDrawAllLayers(frame); | 1268 host_impl_->DidDrawAllLayers(frame); |
| 1291 } | 1269 } |
| 1292 | 1270 |
| 1293 TEST_F(DelegatedRendererLayerImplTestClip, | 1271 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1294 QuadsUnclipped_LayerClipped_Surface) { | 1272 QuadsUnclipped_LayerClipped_Surface) { |
| 1295 root_delegated_render_pass_is_clipped_ = false; | 1273 root_delegated_render_pass_is_clipped_ = false; |
| 1296 clip_delegated_renderer_layer_ = true; | 1274 clip_delegated_renderer_layer_ = true; |
| 1297 SetUpTest(); | 1275 SetUpTest(); |
| 1298 | 1276 |
| 1299 delegated_renderer_layer_->SetForceRenderSurface(true); | 1277 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1300 | 1278 |
| 1301 LayerTreeHostImpl::FrameData frame; | 1279 LayerTreeHostImpl::FrameData frame; |
| 1302 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1280 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1303 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1304 | 1281 |
| 1305 ASSERT_EQ(3u, frame.render_passes.size()); | 1282 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1306 const QuadList& contrib_delegated_quad_list = | 1283 const QuadList& contrib_delegated_quad_list = |
| 1307 frame.render_passes[0]->quad_list; | 1284 frame.render_passes[0]->quad_list; |
| 1308 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1285 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1309 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1286 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1310 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1287 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1311 const SharedQuadState* root_delegated_shared_quad_state = | 1288 const SharedQuadState* root_delegated_shared_quad_state = |
| 1312 root_delegated_quad_list[0]->shared_quad_state; | 1289 root_delegated_quad_list[0]->shared_quad_state; |
| 1313 | 1290 |
| 1314 // When the layer owns a surface, the quads don't need to be clipped | 1291 // When the layer owns a surface, the quads don't need to be clipped |
| 1315 // further than they already specify. If they aren't clipped, then their | 1292 // further than they already specify. If they aren't clipped, then their |
| 1316 // clip rect is ignored, and they are not set as clipped. | 1293 // clip rect is ignored, and they are not set as clipped. |
| 1317 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1294 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1318 | 1295 |
| 1319 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1296 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1320 host_impl_->DidDrawAllLayers(frame); | 1297 host_impl_->DidDrawAllLayers(frame); |
| 1321 } | 1298 } |
| 1322 | 1299 |
| 1323 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1300 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1324 root_delegated_render_pass_is_clipped_ = true; | 1301 root_delegated_render_pass_is_clipped_ = true; |
| 1325 clip_delegated_renderer_layer_ = true; | 1302 clip_delegated_renderer_layer_ = true; |
| 1326 SetUpTest(); | 1303 SetUpTest(); |
| 1327 | 1304 |
| 1328 delegated_renderer_layer_->SetForceRenderSurface(true); | 1305 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1329 | 1306 |
| 1330 LayerTreeHostImpl::FrameData frame; | 1307 LayerTreeHostImpl::FrameData frame; |
| 1331 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1308 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1332 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1333 | 1309 |
| 1334 ASSERT_EQ(3u, frame.render_passes.size()); | 1310 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1335 const QuadList& contrib_delegated_quad_list = | 1311 const QuadList& contrib_delegated_quad_list = |
| 1336 frame.render_passes[0]->quad_list; | 1312 frame.render_passes[0]->quad_list; |
| 1337 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1313 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1338 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1314 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1339 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1315 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1340 const SharedQuadState* root_delegated_shared_quad_state = | 1316 const SharedQuadState* root_delegated_shared_quad_state = |
| 1341 root_delegated_quad_list[0]->shared_quad_state; | 1317 root_delegated_quad_list[0]->shared_quad_state; |
| 1342 | 1318 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 delegated_renderer_layer->SetFrameDataForRenderPasses( | 1362 delegated_renderer_layer->SetFrameDataForRenderPasses( |
| 1387 &delegated_render_passes); | 1363 &delegated_render_passes); |
| 1388 | 1364 |
| 1389 // The RenderPasses should be taken by the layer. | 1365 // The RenderPasses should be taken by the layer. |
| 1390 EXPECT_EQ(0u, delegated_render_passes.size()); | 1366 EXPECT_EQ(0u, delegated_render_passes.size()); |
| 1391 | 1367 |
| 1392 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 1368 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 1393 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 1369 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
| 1394 | 1370 |
| 1395 LayerTreeHostImpl::FrameData frame; | 1371 LayerTreeHostImpl::FrameData frame; |
| 1396 EXPECT_EQ(DrawSwapReadbackResult::DRAW_SUCCESS, | 1372 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1397 host_impl_->PrepareToDraw(&frame, gfx::Rect())); | |
| 1398 | 1373 |
| 1399 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1374 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
| 1400 ASSERT_EQ(1u, frame.render_passes.size()); | 1375 ASSERT_EQ(1u, frame.render_passes.size()); |
| 1401 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1376 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 1402 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1377 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 1403 frame.render_passes[0]->quad_list[0]->material); | 1378 frame.render_passes[0]->quad_list[0]->material); |
| 1404 | 1379 |
| 1405 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1380 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1406 host_impl_->DidDrawAllLayers(frame); | 1381 host_impl_->DidDrawAllLayers(frame); |
| 1407 } | 1382 } |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1535 // The occlusion extends to 500 in the x-axis, pushing the left of the | 1510 // The occlusion extends to 500 in the x-axis, pushing the left of the |
| 1536 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. | 1511 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. |
| 1537 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), | 1512 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), |
| 1538 impl.quad_list()[0]->visible_rect.ToString()); | 1513 impl.quad_list()[0]->visible_rect.ToString()); |
| 1539 } | 1514 } |
| 1540 } | 1515 } |
| 1541 } | 1516 } |
| 1542 | 1517 |
| 1543 } // namespace | 1518 } // namespace |
| 1544 } // namespace cc | 1519 } // namespace cc |
| OLD | NEW |