| 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/append_quads_data.h" | 8 #include "cc/layers/append_quads_data.h" |
| 9 #include "cc/layers/quad_sink.h" | 9 #include "cc/layers/quad_sink.h" |
| 10 #include "cc/layers/solid_color_layer_impl.h" | 10 #include "cc/layers/solid_color_layer_impl.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 | 136 |
| 137 protected: | 137 protected: |
| 138 LayerImpl* root_layer_; | 138 LayerImpl* root_layer_; |
| 139 LayerImpl* layer_before_; | 139 LayerImpl* layer_before_; |
| 140 LayerImpl* layer_after_; | 140 LayerImpl* layer_after_; |
| 141 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 141 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 142 }; | 142 }; |
| 143 | 143 |
| 144 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { | 144 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { |
| 145 LayerTreeHostImpl::FrameData frame; | 145 LayerTreeHostImpl::FrameData frame; |
| 146 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 146 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 147 | 147 |
| 148 // Each non-DelegatedRendererLayer added one RenderPass. The | 148 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 149 // DelegatedRendererLayer added two contributing passes. | 149 // DelegatedRendererLayer added two contributing passes. |
| 150 ASSERT_EQ(5u, frame.render_passes.size()); | 150 ASSERT_EQ(5u, frame.render_passes.size()); |
| 151 | 151 |
| 152 // The DelegatedRendererLayer should have added its contributing RenderPasses | 152 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 153 // to the frame. | 153 // to the frame. |
| 154 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 154 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 155 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 155 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 156 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 156 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 170 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 170 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 171 frame.render_passes[2]->output_rect.ToString()); | 171 frame.render_passes[2]->output_rect.ToString()); |
| 172 | 172 |
| 173 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 173 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 174 host_impl_->DidDrawAllLayers(frame); | 174 host_impl_->DidDrawAllLayers(frame); |
| 175 } | 175 } |
| 176 | 176 |
| 177 TEST_F(DelegatedRendererLayerImplTestSimple, | 177 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 178 AddsQuadsToContributingRenderPasses) { | 178 AddsQuadsToContributingRenderPasses) { |
| 179 LayerTreeHostImpl::FrameData frame; | 179 LayerTreeHostImpl::FrameData frame; |
| 180 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 180 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 181 | 181 |
| 182 // Each non-DelegatedRendererLayer added one RenderPass. The | 182 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 183 // DelegatedRendererLayer added two contributing passes. | 183 // DelegatedRendererLayer added two contributing passes. |
| 184 ASSERT_EQ(5u, frame.render_passes.size()); | 184 ASSERT_EQ(5u, frame.render_passes.size()); |
| 185 | 185 |
| 186 // The DelegatedRendererLayer should have added its contributing RenderPasses | 186 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 187 // to the frame. | 187 // to the frame. |
| 188 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 188 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 189 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 189 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 190 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 190 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 205 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 205 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 206 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 206 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 207 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 207 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 208 | 208 |
| 209 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 209 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 210 host_impl_->DidDrawAllLayers(frame); | 210 host_impl_->DidDrawAllLayers(frame); |
| 211 } | 211 } |
| 212 | 212 |
| 213 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 213 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
| 214 LayerTreeHostImpl::FrameData frame; | 214 LayerTreeHostImpl::FrameData frame; |
| 215 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 215 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 216 | 216 |
| 217 // Each non-DelegatedRendererLayer added one RenderPass. The | 217 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 218 // DelegatedRendererLayer added two contributing passes. | 218 // DelegatedRendererLayer added two contributing passes. |
| 219 ASSERT_EQ(5u, frame.render_passes.size()); | 219 ASSERT_EQ(5u, frame.render_passes.size()); |
| 220 | 220 |
| 221 // The layer's target is the RenderPass from layer_after_. | 221 // The layer's target is the RenderPass from layer_after_. |
| 222 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); | 222 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); |
| 223 | 223 |
| 224 // The DelegatedRendererLayer should have added copies of quads in its root | 224 // The DelegatedRendererLayer should have added copies of quads in its root |
| 225 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 225 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
| 226 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 226 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
| 227 | 227 |
| 228 // Verify it added the right quads. | 228 // Verify it added the right quads. |
| 229 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 229 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 230 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 230 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 231 | 231 |
| 232 // Its target layer should have a quad as well. | 232 // Its target layer should have a quad as well. |
| 233 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 233 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
| 234 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 234 frame.render_passes[3]->quad_list[1]->rect.ToString()); |
| 235 | 235 |
| 236 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 236 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 237 host_impl_->DidDrawAllLayers(frame); | 237 host_impl_->DidDrawAllLayers(frame); |
| 238 } | 238 } |
| 239 | 239 |
| 240 TEST_F(DelegatedRendererLayerImplTestSimple, | 240 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 241 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 241 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
| 242 LayerTreeHostImpl::FrameData frame; | 242 LayerTreeHostImpl::FrameData frame; |
| 243 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 243 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 244 | 244 |
| 245 // Each non-DelegatedRendererLayer added one RenderPass. The | 245 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 246 // DelegatedRendererLayer added two contributing passes. | 246 // DelegatedRendererLayer added two contributing passes. |
| 247 ASSERT_EQ(5u, frame.render_passes.size()); | 247 ASSERT_EQ(5u, frame.render_passes.size()); |
| 248 | 248 |
| 249 // The DelegatedRendererLayer is at position 3,3 compared to its target, and | 249 // The DelegatedRendererLayer is at position 3,3 compared to its target, and |
| 250 // has a translation transform of 1,1. So its root RenderPass' quads should | 250 // has a translation transform of 1,1. So its root RenderPass' quads should |
| 251 // all be transformed by that combined amount. | 251 // all be transformed by that combined amount. |
| 252 // The DelegatedRendererLayer has a size of 10x10, but the root delegated | 252 // The DelegatedRendererLayer has a size of 10x10, but the root delegated |
| 253 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8. | 253 // RenderPass has a size of 8x8, so any quads should be scaled by 10/8. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 266 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 266 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 267 EXPECT_TRANSFORMATION_MATRIX_EQ( | 267 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 268 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 268 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
| 269 | 269 |
| 270 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 270 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 271 host_impl_->DidDrawAllLayers(frame); | 271 host_impl_->DidDrawAllLayers(frame); |
| 272 } | 272 } |
| 273 | 273 |
| 274 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 274 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
| 275 LayerTreeHostImpl::FrameData frame; | 275 LayerTreeHostImpl::FrameData frame; |
| 276 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 276 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 277 | 277 |
| 278 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 278 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
| 279 // has no need to be a RenderSurface for the quads it carries. | 279 // has no need to be a RenderSurface for the quads it carries. |
| 280 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | 280 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
| 281 | 281 |
| 282 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 282 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 283 host_impl_->DidDrawAllLayers(frame); | 283 host_impl_->DidDrawAllLayers(frame); |
| 284 } | 284 } |
| 285 | 285 |
| 286 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 286 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
| 287 delegated_renderer_layer_->SetOpacity(0.5f); | 287 delegated_renderer_layer_->SetOpacity(0.5f); |
| 288 | 288 |
| 289 LayerTreeHostImpl::FrameData frame; | 289 LayerTreeHostImpl::FrameData frame; |
| 290 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 290 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 291 | 291 |
| 292 // This test case has quads from multiple layers in the delegated renderer, so | 292 // This test case has quads from multiple layers in the delegated renderer, so |
| 293 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 293 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 294 // render surface. | 294 // render surface. |
| 295 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 295 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 296 | 296 |
| 297 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 297 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 298 host_impl_->DidDrawAllLayers(frame); | 298 host_impl_->DidDrawAllLayers(frame); |
| 299 } | 299 } |
| 300 | 300 |
| 301 TEST_F(DelegatedRendererLayerImplTestSimple, | 301 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 302 DoesOwnARenderSurfaceForTransform) { | 302 DoesOwnARenderSurfaceForTransform) { |
| 303 gfx::Transform rotation; | 303 gfx::Transform rotation; |
| 304 rotation.RotateAboutZAxis(30.0); | 304 rotation.RotateAboutZAxis(30.0); |
| 305 delegated_renderer_layer_->SetTransform(rotation); | 305 delegated_renderer_layer_->SetTransform(rotation); |
| 306 | 306 |
| 307 LayerTreeHostImpl::FrameData frame; | 307 LayerTreeHostImpl::FrameData frame; |
| 308 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 308 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 309 | 309 |
| 310 // This test case has quads from multiple layers in the delegated renderer, so | 310 // This test case has quads from multiple layers in the delegated renderer, so |
| 311 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 311 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 312 // render surface. | 312 // render surface. |
| 313 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 313 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 314 | 314 |
| 315 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 315 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 316 host_impl_->DidDrawAllLayers(frame); | 316 host_impl_->DidDrawAllLayers(frame); |
| 317 } | 317 } |
| 318 | 318 |
| 319 class DelegatedRendererLayerImplTestOwnSurface | 319 class DelegatedRendererLayerImplTestOwnSurface |
| 320 : public DelegatedRendererLayerImplTestSimple { | 320 : public DelegatedRendererLayerImplTestSimple { |
| 321 public: | 321 public: |
| 322 DelegatedRendererLayerImplTestOwnSurface() | 322 DelegatedRendererLayerImplTestOwnSurface() |
| 323 : DelegatedRendererLayerImplTestSimple() { | 323 : DelegatedRendererLayerImplTestSimple() { |
| 324 delegated_renderer_layer_->SetForceRenderSurface(true); | 324 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 325 } | 325 } |
| 326 }; | 326 }; |
| 327 | 327 |
| 328 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 328 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
| 329 LayerTreeHostImpl::FrameData frame; | 329 LayerTreeHostImpl::FrameData frame; |
| 330 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 330 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 331 | 331 |
| 332 // Each non-DelegatedRendererLayer added one RenderPass. The | 332 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 333 // DelegatedRendererLayer added two contributing passes and its owned surface | 333 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 334 // added one pass. | 334 // added one pass. |
| 335 ASSERT_EQ(6u, frame.render_passes.size()); | 335 ASSERT_EQ(6u, frame.render_passes.size()); |
| 336 | 336 |
| 337 // The DelegatedRendererLayer should have added its contributing RenderPasses | 337 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 338 // to the frame. | 338 // to the frame. |
| 339 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 339 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 340 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 340 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 359 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 359 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 360 frame.render_passes[2]->output_rect.ToString()); | 360 frame.render_passes[2]->output_rect.ToString()); |
| 361 | 361 |
| 362 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 362 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 363 host_impl_->DidDrawAllLayers(frame); | 363 host_impl_->DidDrawAllLayers(frame); |
| 364 } | 364 } |
| 365 | 365 |
| 366 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 366 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 367 AddsQuadsToContributingRenderPasses) { | 367 AddsQuadsToContributingRenderPasses) { |
| 368 LayerTreeHostImpl::FrameData frame; | 368 LayerTreeHostImpl::FrameData frame; |
| 369 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 369 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 370 | 370 |
| 371 // Each non-DelegatedRendererLayer added one RenderPass. The | 371 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 372 // DelegatedRendererLayer added two contributing passes and its owned surface | 372 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 373 // added one pass. | 373 // added one pass. |
| 374 ASSERT_EQ(6u, frame.render_passes.size()); | 374 ASSERT_EQ(6u, frame.render_passes.size()); |
| 375 | 375 |
| 376 // The DelegatedRendererLayer should have added its contributing RenderPasses | 376 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 377 // to the frame. | 377 // to the frame. |
| 378 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 378 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 379 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 379 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 395 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 395 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 396 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 396 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 397 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 397 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 398 | 398 |
| 399 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 399 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 400 host_impl_->DidDrawAllLayers(frame); | 400 host_impl_->DidDrawAllLayers(frame); |
| 401 } | 401 } |
| 402 | 402 |
| 403 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 403 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
| 404 LayerTreeHostImpl::FrameData frame; | 404 LayerTreeHostImpl::FrameData frame; |
| 405 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 405 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 406 | 406 |
| 407 // Each non-DelegatedRendererLayer added one RenderPass. The | 407 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 408 // DelegatedRendererLayer added two contributing passes and its owned surface | 408 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 409 // added one pass. | 409 // added one pass. |
| 410 ASSERT_EQ(6u, frame.render_passes.size()); | 410 ASSERT_EQ(6u, frame.render_passes.size()); |
| 411 | 411 |
| 412 // The layer's target is the RenderPass owned by itself. | 412 // The layer's target is the RenderPass owned by itself. |
| 413 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); | 413 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); |
| 414 | 414 |
| 415 // The DelegatedRendererLayer should have added copies of quads in its root | 415 // The DelegatedRendererLayer should have added copies of quads in its root |
| 416 // RenderPass to its target RenderPass. | 416 // RenderPass to its target RenderPass. |
| 417 // The layer_after also adds one quad. | 417 // The layer_after also adds one quad. |
| 418 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 418 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
| 419 | 419 |
| 420 // Verify it added the right quads. | 420 // Verify it added the right quads. |
| 421 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 421 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 422 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 422 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 423 | 423 |
| 424 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 424 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 425 host_impl_->DidDrawAllLayers(frame); | 425 host_impl_->DidDrawAllLayers(frame); |
| 426 } | 426 } |
| 427 | 427 |
| 428 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 428 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 429 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 429 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
| 430 LayerTreeHostImpl::FrameData frame; | 430 LayerTreeHostImpl::FrameData frame; |
| 431 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 431 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 432 | 432 |
| 433 // Each non-DelegatedRendererLayer added one RenderPass. The | 433 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 434 // DelegatedRendererLayer added two contributing passes and its owned surface | 434 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 435 // added one pass. | 435 // added one pass. |
| 436 ASSERT_EQ(6u, frame.render_passes.size()); | 436 ASSERT_EQ(6u, frame.render_passes.size()); |
| 437 | 437 |
| 438 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 438 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
| 439 // RenderPass' quads do not need to be translated at all. However, they are | 439 // RenderPass' quads do not need to be translated at all. However, they are |
| 440 // scaled from the frame's size (8x8) to the layer's bounds (10x10). | 440 // scaled from the frame's size (8x8) to the layer's bounds (10x10). |
| 441 gfx::Transform transform; | 441 gfx::Transform transform; |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 LayerImpl* root_layer_; | 632 LayerImpl* root_layer_; |
| 633 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 633 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 634 bool root_delegated_render_pass_is_clipped_; | 634 bool root_delegated_render_pass_is_clipped_; |
| 635 }; | 635 }; |
| 636 | 636 |
| 637 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { | 637 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { |
| 638 root_delegated_render_pass_is_clipped_ = false; | 638 root_delegated_render_pass_is_clipped_ = false; |
| 639 SetUpTest(); | 639 SetUpTest(); |
| 640 | 640 |
| 641 LayerTreeHostImpl::FrameData frame; | 641 LayerTreeHostImpl::FrameData frame; |
| 642 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 642 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 643 | 643 |
| 644 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 644 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 645 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 645 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 646 VerifyRenderPasses( | 646 VerifyRenderPasses( |
| 647 frame, | 647 frame, |
| 648 2, | 648 2, |
| 649 &root_delegated_shared_quad_state, | 649 &root_delegated_shared_quad_state, |
| 650 &contrib_delegated_shared_quad_state); | 650 &contrib_delegated_shared_quad_state); |
| 651 | 651 |
| 652 // When the quads don't have a clip of their own, the clip rect is set to | 652 // When the quads don't have a clip of their own, the clip rect is set to |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 686 | 686 |
| 687 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 687 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 688 host_impl_->DidDrawAllLayers(frame); | 688 host_impl_->DidDrawAllLayers(frame); |
| 689 } | 689 } |
| 690 | 690 |
| 691 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 691 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
| 692 root_delegated_render_pass_is_clipped_ = true; | 692 root_delegated_render_pass_is_clipped_ = true; |
| 693 SetUpTest(); | 693 SetUpTest(); |
| 694 | 694 |
| 695 LayerTreeHostImpl::FrameData frame; | 695 LayerTreeHostImpl::FrameData frame; |
| 696 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 696 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 697 | 697 |
| 698 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 698 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 699 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 699 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 700 VerifyRenderPasses( | 700 VerifyRenderPasses( |
| 701 frame, | 701 frame, |
| 702 2, | 702 2, |
| 703 &root_delegated_shared_quad_state, | 703 &root_delegated_shared_quad_state, |
| 704 &contrib_delegated_shared_quad_state); | 704 &contrib_delegated_shared_quad_state); |
| 705 | 705 |
| 706 // Since the quads have a clip_rect it should be modified by delegated | 706 // Since the quads have a clip_rect it should be modified by delegated |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 host_impl_->DidDrawAllLayers(frame); | 747 host_impl_->DidDrawAllLayers(frame); |
| 748 } | 748 } |
| 749 | 749 |
| 750 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 750 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 751 root_delegated_render_pass_is_clipped_ = false; | 751 root_delegated_render_pass_is_clipped_ = false; |
| 752 SetUpTest(); | 752 SetUpTest(); |
| 753 | 753 |
| 754 delegated_renderer_layer_->SetForceRenderSurface(true); | 754 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 755 | 755 |
| 756 LayerTreeHostImpl::FrameData frame; | 756 LayerTreeHostImpl::FrameData frame; |
| 757 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 757 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 758 | 758 |
| 759 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 759 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 760 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 760 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 761 VerifyRenderPasses( | 761 VerifyRenderPasses( |
| 762 frame, | 762 frame, |
| 763 3, | 763 3, |
| 764 &root_delegated_shared_quad_state, | 764 &root_delegated_shared_quad_state, |
| 765 &contrib_delegated_shared_quad_state); | 765 &contrib_delegated_shared_quad_state); |
| 766 | 766 |
| 767 // When the layer owns a surface, then its position and translation are not | 767 // When the layer owns a surface, then its position and translation are not |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 host_impl_->DidDrawAllLayers(frame); | 802 host_impl_->DidDrawAllLayers(frame); |
| 803 } | 803 } |
| 804 | 804 |
| 805 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 805 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 806 root_delegated_render_pass_is_clipped_ = true; | 806 root_delegated_render_pass_is_clipped_ = true; |
| 807 SetUpTest(); | 807 SetUpTest(); |
| 808 | 808 |
| 809 delegated_renderer_layer_->SetForceRenderSurface(true); | 809 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 810 | 810 |
| 811 LayerTreeHostImpl::FrameData frame; | 811 LayerTreeHostImpl::FrameData frame; |
| 812 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 812 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 813 | 813 |
| 814 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 814 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 815 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 815 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 816 VerifyRenderPasses( | 816 VerifyRenderPasses( |
| 817 frame, | 817 frame, |
| 818 3, | 818 3, |
| 819 &root_delegated_shared_quad_state, | 819 &root_delegated_shared_quad_state, |
| 820 &contrib_delegated_shared_quad_state); | 820 &contrib_delegated_shared_quad_state); |
| 821 | 821 |
| 822 // When the layer owns a surface, then its position and translation are not | 822 // When the layer owns a surface, then its position and translation are not |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1004 bool clip_delegated_renderer_layer_; | 1004 bool clip_delegated_renderer_layer_; |
| 1005 }; | 1005 }; |
| 1006 | 1006 |
| 1007 TEST_F(DelegatedRendererLayerImplTestClip, | 1007 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1008 QuadsUnclipped_LayerUnclipped_NoSurface) { | 1008 QuadsUnclipped_LayerUnclipped_NoSurface) { |
| 1009 root_delegated_render_pass_is_clipped_ = false; | 1009 root_delegated_render_pass_is_clipped_ = false; |
| 1010 clip_delegated_renderer_layer_ = false; | 1010 clip_delegated_renderer_layer_ = false; |
| 1011 SetUpTest(); | 1011 SetUpTest(); |
| 1012 | 1012 |
| 1013 LayerTreeHostImpl::FrameData frame; | 1013 LayerTreeHostImpl::FrameData frame; |
| 1014 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1014 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1015 | 1015 |
| 1016 ASSERT_EQ(2u, frame.render_passes.size()); | 1016 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1017 const QuadList& contrib_delegated_quad_list = | 1017 const QuadList& contrib_delegated_quad_list = |
| 1018 frame.render_passes[0]->quad_list; | 1018 frame.render_passes[0]->quad_list; |
| 1019 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1019 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1020 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1020 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1021 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1021 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1022 const SharedQuadState* root_delegated_shared_quad_state = | 1022 const SharedQuadState* root_delegated_shared_quad_state = |
| 1023 root_delegated_quad_list[0]->shared_quad_state; | 1023 root_delegated_quad_list[0]->shared_quad_state; |
| 1024 | 1024 |
| 1025 // When the quads don't have a clip of their own, the clip rect is set to | 1025 // When the quads don't have a clip of their own, the clip rect is set to |
| 1026 // the drawable_content_rect of the delegated renderer layer. | 1026 // the drawable_content_rect of the delegated renderer layer. |
| 1027 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1027 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
| 1028 root_delegated_shared_quad_state->clip_rect.ToString()); | 1028 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1029 // Quads are clipped to the delegated renderer layer. | 1029 // Quads are clipped to the delegated renderer layer. |
| 1030 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1030 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1031 | 1031 |
| 1032 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1032 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1033 host_impl_->DidDrawAllLayers(frame); | 1033 host_impl_->DidDrawAllLayers(frame); |
| 1034 } | 1034 } |
| 1035 | 1035 |
| 1036 TEST_F(DelegatedRendererLayerImplTestClip, | 1036 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1037 QuadsClipped_LayerUnclipped_NoSurface) { | 1037 QuadsClipped_LayerUnclipped_NoSurface) { |
| 1038 root_delegated_render_pass_is_clipped_ = true; | 1038 root_delegated_render_pass_is_clipped_ = true; |
| 1039 clip_delegated_renderer_layer_ = false; | 1039 clip_delegated_renderer_layer_ = false; |
| 1040 SetUpTest(); | 1040 SetUpTest(); |
| 1041 | 1041 |
| 1042 LayerTreeHostImpl::FrameData frame; | 1042 LayerTreeHostImpl::FrameData frame; |
| 1043 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1043 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1044 | 1044 |
| 1045 ASSERT_EQ(2u, frame.render_passes.size()); | 1045 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1046 const QuadList& contrib_delegated_quad_list = | 1046 const QuadList& contrib_delegated_quad_list = |
| 1047 frame.render_passes[0]->quad_list; | 1047 frame.render_passes[0]->quad_list; |
| 1048 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1048 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1049 const QuadList& root_delegated_quad_list = | 1049 const QuadList& root_delegated_quad_list = |
| 1050 frame.render_passes[1]->quad_list; | 1050 frame.render_passes[1]->quad_list; |
| 1051 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1051 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1052 const SharedQuadState* root_delegated_shared_quad_state = | 1052 const SharedQuadState* root_delegated_shared_quad_state = |
| 1053 root_delegated_quad_list[0]->shared_quad_state; | 1053 root_delegated_quad_list[0]->shared_quad_state; |
| 1054 | 1054 |
| 1055 // When the quads have a clip of their own, it is used. | 1055 // When the quads have a clip of their own, it is used. |
| 1056 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1056 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
| 1057 root_delegated_shared_quad_state->clip_rect.ToString()); | 1057 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1058 // Quads came with a clip rect. | 1058 // Quads came with a clip rect. |
| 1059 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1059 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1060 | 1060 |
| 1061 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1061 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1062 host_impl_->DidDrawAllLayers(frame); | 1062 host_impl_->DidDrawAllLayers(frame); |
| 1063 } | 1063 } |
| 1064 | 1064 |
| 1065 TEST_F(DelegatedRendererLayerImplTestClip, | 1065 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1066 QuadsUnclipped_LayerClipped_NoSurface) { | 1066 QuadsUnclipped_LayerClipped_NoSurface) { |
| 1067 root_delegated_render_pass_is_clipped_ = false; | 1067 root_delegated_render_pass_is_clipped_ = false; |
| 1068 clip_delegated_renderer_layer_ = true; | 1068 clip_delegated_renderer_layer_ = true; |
| 1069 SetUpTest(); | 1069 SetUpTest(); |
| 1070 | 1070 |
| 1071 LayerTreeHostImpl::FrameData frame; | 1071 LayerTreeHostImpl::FrameData frame; |
| 1072 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1072 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1073 | 1073 |
| 1074 ASSERT_EQ(2u, frame.render_passes.size()); | 1074 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1075 const QuadList& contrib_delegated_quad_list = | 1075 const QuadList& contrib_delegated_quad_list = |
| 1076 frame.render_passes[0]->quad_list; | 1076 frame.render_passes[0]->quad_list; |
| 1077 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1077 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1078 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1078 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1079 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1079 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1080 const SharedQuadState* root_delegated_shared_quad_state = | 1080 const SharedQuadState* root_delegated_shared_quad_state = |
| 1081 root_delegated_quad_list[0]->shared_quad_state; | 1081 root_delegated_quad_list[0]->shared_quad_state; |
| 1082 | 1082 |
| 1083 // When the quads don't have a clip of their own, the clip rect is set to | 1083 // When the quads don't have a clip of their own, the clip rect is set to |
| 1084 // the drawable_content_rect of the delegated renderer layer. When the layer | 1084 // the drawable_content_rect of the delegated renderer layer. When the layer |
| 1085 // is clipped, that should be seen in the quads' clip_rect. | 1085 // is clipped, that should be seen in the quads' clip_rect. |
| 1086 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1086 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
| 1087 root_delegated_shared_quad_state->clip_rect.ToString()); | 1087 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1088 // Quads are clipped to the delegated renderer layer. | 1088 // Quads are clipped to the delegated renderer layer. |
| 1089 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1089 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1090 | 1090 |
| 1091 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1091 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1092 host_impl_->DidDrawAllLayers(frame); | 1092 host_impl_->DidDrawAllLayers(frame); |
| 1093 } | 1093 } |
| 1094 | 1094 |
| 1095 TEST_F(DelegatedRendererLayerImplTestClip, | 1095 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1096 QuadsClipped_LayerClipped_NoSurface) { | 1096 QuadsClipped_LayerClipped_NoSurface) { |
| 1097 root_delegated_render_pass_is_clipped_ = true; | 1097 root_delegated_render_pass_is_clipped_ = true; |
| 1098 clip_delegated_renderer_layer_ = true; | 1098 clip_delegated_renderer_layer_ = true; |
| 1099 SetUpTest(); | 1099 SetUpTest(); |
| 1100 | 1100 |
| 1101 LayerTreeHostImpl::FrameData frame; | 1101 LayerTreeHostImpl::FrameData frame; |
| 1102 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1102 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1103 | 1103 |
| 1104 ASSERT_EQ(2u, frame.render_passes.size()); | 1104 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1105 const QuadList& contrib_delegated_quad_list = | 1105 const QuadList& contrib_delegated_quad_list = |
| 1106 frame.render_passes[0]->quad_list; | 1106 frame.render_passes[0]->quad_list; |
| 1107 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1107 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1108 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; |
| 1109 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1109 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1110 const SharedQuadState* root_delegated_shared_quad_state = | 1110 const SharedQuadState* root_delegated_shared_quad_state = |
| 1111 root_delegated_quad_list[0]->shared_quad_state; | 1111 root_delegated_quad_list[0]->shared_quad_state; |
| 1112 | 1112 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1123 | 1123 |
| 1124 TEST_F(DelegatedRendererLayerImplTestClip, | 1124 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1125 QuadsUnclipped_LayerUnclipped_Surface) { | 1125 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1126 root_delegated_render_pass_is_clipped_ = false; | 1126 root_delegated_render_pass_is_clipped_ = false; |
| 1127 clip_delegated_renderer_layer_ = false; | 1127 clip_delegated_renderer_layer_ = false; |
| 1128 SetUpTest(); | 1128 SetUpTest(); |
| 1129 | 1129 |
| 1130 delegated_renderer_layer_->SetForceRenderSurface(true); | 1130 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1131 | 1131 |
| 1132 LayerTreeHostImpl::FrameData frame; | 1132 LayerTreeHostImpl::FrameData frame; |
| 1133 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1133 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1134 | 1134 |
| 1135 ASSERT_EQ(3u, frame.render_passes.size()); | 1135 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1136 const QuadList& contrib_delegated_quad_list = | 1136 const QuadList& contrib_delegated_quad_list = |
| 1137 frame.render_passes[0]->quad_list; | 1137 frame.render_passes[0]->quad_list; |
| 1138 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1138 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1139 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1139 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1140 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1140 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1141 const SharedQuadState* root_delegated_shared_quad_state = | 1141 const SharedQuadState* root_delegated_shared_quad_state = |
| 1142 root_delegated_quad_list[0]->shared_quad_state; | 1142 root_delegated_quad_list[0]->shared_quad_state; |
| 1143 | 1143 |
| 1144 // When the layer owns a surface, the quads don't need to be clipped | 1144 // When the layer owns a surface, the quads don't need to be clipped |
| 1145 // further than they already specify. If they aren't clipped, then their | 1145 // further than they already specify. If they aren't clipped, then their |
| 1146 // clip rect is ignored, and they are not set as clipped. | 1146 // clip rect is ignored, and they are not set as clipped. |
| 1147 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1147 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1148 | 1148 |
| 1149 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1149 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1150 host_impl_->DidDrawAllLayers(frame); | 1150 host_impl_->DidDrawAllLayers(frame); |
| 1151 } | 1151 } |
| 1152 | 1152 |
| 1153 TEST_F(DelegatedRendererLayerImplTestClip, | 1153 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1154 QuadsClipped_LayerUnclipped_Surface) { | 1154 QuadsClipped_LayerUnclipped_Surface) { |
| 1155 root_delegated_render_pass_is_clipped_ = true; | 1155 root_delegated_render_pass_is_clipped_ = true; |
| 1156 clip_delegated_renderer_layer_ = false; | 1156 clip_delegated_renderer_layer_ = false; |
| 1157 SetUpTest(); | 1157 SetUpTest(); |
| 1158 | 1158 |
| 1159 delegated_renderer_layer_->SetForceRenderSurface(true); | 1159 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1160 | 1160 |
| 1161 LayerTreeHostImpl::FrameData frame; | 1161 LayerTreeHostImpl::FrameData frame; |
| 1162 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1162 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1163 | 1163 |
| 1164 ASSERT_EQ(3u, frame.render_passes.size()); | 1164 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1165 const QuadList& contrib_delegated_quad_list = | 1165 const QuadList& contrib_delegated_quad_list = |
| 1166 frame.render_passes[0]->quad_list; | 1166 frame.render_passes[0]->quad_list; |
| 1167 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1167 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1168 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1168 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1169 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1169 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1170 const SharedQuadState* root_delegated_shared_quad_state = | 1170 const SharedQuadState* root_delegated_shared_quad_state = |
| 1171 root_delegated_quad_list[0]->shared_quad_state; | 1171 root_delegated_quad_list[0]->shared_quad_state; |
| 1172 | 1172 |
| 1173 // When the quads have a clip of their own, it is used. | 1173 // When the quads have a clip of their own, it is used. |
| 1174 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1174 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1175 root_delegated_shared_quad_state->clip_rect.ToString()); | 1175 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1176 // Quads came with a clip rect. | 1176 // Quads came with a clip rect. |
| 1177 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1177 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1178 | 1178 |
| 1179 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1179 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1180 host_impl_->DidDrawAllLayers(frame); | 1180 host_impl_->DidDrawAllLayers(frame); |
| 1181 } | 1181 } |
| 1182 | 1182 |
| 1183 TEST_F(DelegatedRendererLayerImplTestClip, | 1183 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1184 QuadsUnclipped_LayerClipped_Surface) { | 1184 QuadsUnclipped_LayerClipped_Surface) { |
| 1185 root_delegated_render_pass_is_clipped_ = false; | 1185 root_delegated_render_pass_is_clipped_ = false; |
| 1186 clip_delegated_renderer_layer_ = true; | 1186 clip_delegated_renderer_layer_ = true; |
| 1187 SetUpTest(); | 1187 SetUpTest(); |
| 1188 | 1188 |
| 1189 delegated_renderer_layer_->SetForceRenderSurface(true); | 1189 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1190 | 1190 |
| 1191 LayerTreeHostImpl::FrameData frame; | 1191 LayerTreeHostImpl::FrameData frame; |
| 1192 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1192 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1193 | 1193 |
| 1194 ASSERT_EQ(3u, frame.render_passes.size()); | 1194 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1195 const QuadList& contrib_delegated_quad_list = | 1195 const QuadList& contrib_delegated_quad_list = |
| 1196 frame.render_passes[0]->quad_list; | 1196 frame.render_passes[0]->quad_list; |
| 1197 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1197 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1198 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1198 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1199 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1199 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1200 const SharedQuadState* root_delegated_shared_quad_state = | 1200 const SharedQuadState* root_delegated_shared_quad_state = |
| 1201 root_delegated_quad_list[0]->shared_quad_state; | 1201 root_delegated_quad_list[0]->shared_quad_state; |
| 1202 | 1202 |
| 1203 // When the layer owns a surface, the quads don't need to be clipped | 1203 // When the layer owns a surface, the quads don't need to be clipped |
| 1204 // further than they already specify. If they aren't clipped, then their | 1204 // further than they already specify. If they aren't clipped, then their |
| 1205 // clip rect is ignored, and they are not set as clipped. | 1205 // clip rect is ignored, and they are not set as clipped. |
| 1206 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1206 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1207 | 1207 |
| 1208 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1208 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1209 host_impl_->DidDrawAllLayers(frame); | 1209 host_impl_->DidDrawAllLayers(frame); |
| 1210 } | 1210 } |
| 1211 | 1211 |
| 1212 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1212 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1213 root_delegated_render_pass_is_clipped_ = true; | 1213 root_delegated_render_pass_is_clipped_ = true; |
| 1214 clip_delegated_renderer_layer_ = true; | 1214 clip_delegated_renderer_layer_ = true; |
| 1215 SetUpTest(); | 1215 SetUpTest(); |
| 1216 | 1216 |
| 1217 delegated_renderer_layer_->SetForceRenderSurface(true); | 1217 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1218 | 1218 |
| 1219 LayerTreeHostImpl::FrameData frame; | 1219 LayerTreeHostImpl::FrameData frame; |
| 1220 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame)); | 1220 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1221 | 1221 |
| 1222 ASSERT_EQ(3u, frame.render_passes.size()); | 1222 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1223 const QuadList& contrib_delegated_quad_list = | 1223 const QuadList& contrib_delegated_quad_list = |
| 1224 frame.render_passes[0]->quad_list; | 1224 frame.render_passes[0]->quad_list; |
| 1225 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1225 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1226 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1226 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1227 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1227 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1228 const SharedQuadState* root_delegated_shared_quad_state = | 1228 const SharedQuadState* root_delegated_shared_quad_state = |
| 1229 root_delegated_quad_list[0]->shared_quad_state; | 1229 root_delegated_quad_list[0]->shared_quad_state; |
| 1230 | 1230 |
| 1231 // When the quads have a clip of their own, it is used, but it is | 1231 // When the quads have a clip of their own, it is used, but it is |
| 1232 // combined with the clip rect of the delegated renderer layer. If the | 1232 // combined with the clip rect of the delegated renderer layer. If the |
| 1233 // layer owns a surface, then it does not have a clip rect of its own. | 1233 // layer owns a surface, then it does not have a clip rect of its own. |
| 1234 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1234 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1235 root_delegated_shared_quad_state->clip_rect.ToString()); | 1235 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1236 // Quads came with a clip rect. | 1236 // Quads came with a clip rect. |
| 1237 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1237 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1238 | 1238 |
| 1239 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 1239 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 1240 host_impl_->DidDrawAllLayers(frame); | 1240 host_impl_->DidDrawAllLayers(frame); |
| 1241 } | 1241 } |
| 1242 | 1242 |
| 1243 } // namespace | 1243 } // namespace |
| 1244 } // namespace cc | 1244 } // namespace cc |
| OLD | NEW |