| 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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 | 129 |
| 130 protected: | 130 protected: |
| 131 LayerImpl* root_layer_; | 131 LayerImpl* root_layer_; |
| 132 LayerImpl* layer_before_; | 132 LayerImpl* layer_before_; |
| 133 LayerImpl* layer_after_; | 133 LayerImpl* layer_after_; |
| 134 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 134 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 135 }; | 135 }; |
| 136 | 136 |
| 137 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { | 137 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { |
| 138 LayerTreeHostImpl::FrameData frame; | 138 LayerTreeHostImpl::FrameData frame; |
| 139 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 139 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 140 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 140 | 141 |
| 141 // Each non-DelegatedRendererLayer added one RenderPass. The | 142 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 142 // DelegatedRendererLayer added two contributing passes. | 143 // DelegatedRendererLayer added two contributing passes. |
| 143 ASSERT_EQ(5u, frame.render_passes.size()); | 144 ASSERT_EQ(5u, frame.render_passes.size()); |
| 144 | 145 |
| 145 // The DelegatedRendererLayer should have added its contributing RenderPasses | 146 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 146 // to the frame. | 147 // to the frame. |
| 147 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 148 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 148 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 149 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 149 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 150 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 163 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 164 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 164 frame.render_passes[2]->output_rect.ToString()); | 165 frame.render_passes[2]->output_rect.ToString()); |
| 165 | 166 |
| 166 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 167 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 167 host_impl_->DidDrawAllLayers(frame); | 168 host_impl_->DidDrawAllLayers(frame); |
| 168 } | 169 } |
| 169 | 170 |
| 170 TEST_F(DelegatedRendererLayerImplTestSimple, | 171 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 171 AddsQuadsToContributingRenderPasses) { | 172 AddsQuadsToContributingRenderPasses) { |
| 172 LayerTreeHostImpl::FrameData frame; | 173 LayerTreeHostImpl::FrameData frame; |
| 173 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 174 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 175 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 174 | 176 |
| 175 // Each non-DelegatedRendererLayer added one RenderPass. The | 177 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 176 // DelegatedRendererLayer added two contributing passes. | 178 // DelegatedRendererLayer added two contributing passes. |
| 177 ASSERT_EQ(5u, frame.render_passes.size()); | 179 ASSERT_EQ(5u, frame.render_passes.size()); |
| 178 | 180 |
| 179 // The DelegatedRendererLayer should have added its contributing RenderPasses | 181 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 180 // to the frame. | 182 // to the frame. |
| 181 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 182 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 184 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 183 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 198 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 199 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 200 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 202 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 201 | 203 |
| 202 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 203 host_impl_->DidDrawAllLayers(frame); | 205 host_impl_->DidDrawAllLayers(frame); |
| 204 } | 206 } |
| 205 | 207 |
| 206 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
| 207 LayerTreeHostImpl::FrameData frame; | 209 LayerTreeHostImpl::FrameData frame; |
| 208 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 210 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 211 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 209 | 212 |
| 210 // Each non-DelegatedRendererLayer added one RenderPass. The | 213 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 211 // DelegatedRendererLayer added two contributing passes. | 214 // DelegatedRendererLayer added two contributing passes. |
| 212 ASSERT_EQ(5u, frame.render_passes.size()); | 215 ASSERT_EQ(5u, frame.render_passes.size()); |
| 213 | 216 |
| 214 // The layer's target is the RenderPass from layer_after_. | 217 // The layer's target is the RenderPass from layer_after_. |
| 215 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); | 218 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); |
| 216 | 219 |
| 217 // The DelegatedRendererLayer should have added copies of quads in its root | 220 // The DelegatedRendererLayer should have added copies of quads in its root |
| 218 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 221 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
| 219 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 222 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
| 220 | 223 |
| 221 // Verify it added the right quads. | 224 // Verify it added the right quads. |
| 222 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 225 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 223 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 226 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 224 | 227 |
| 225 // Its target layer should have a quad as well. | 228 // Its target layer should have a quad as well. |
| 226 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 229 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
| 227 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 230 frame.render_passes[3]->quad_list[1]->rect.ToString()); |
| 228 | 231 |
| 229 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 232 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 230 host_impl_->DidDrawAllLayers(frame); | 233 host_impl_->DidDrawAllLayers(frame); |
| 231 } | 234 } |
| 232 | 235 |
| 233 TEST_F(DelegatedRendererLayerImplTestSimple, | 236 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 234 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 237 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
| 235 LayerTreeHostImpl::FrameData frame; | 238 LayerTreeHostImpl::FrameData frame; |
| 236 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 239 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 240 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 237 | 241 |
| 238 // Each non-DelegatedRendererLayer added one RenderPass. The | 242 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 239 // DelegatedRendererLayer added two contributing passes. | 243 // DelegatedRendererLayer added two contributing passes. |
| 240 ASSERT_EQ(5u, frame.render_passes.size()); | 244 ASSERT_EQ(5u, frame.render_passes.size()); |
| 241 | 245 |
| 242 // 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 |
| 243 // 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 |
| 244 // all be transformed by that combined amount. | 248 // all be transformed by that combined amount. |
| 245 // The DelegatedRendererLayer has a size of 10x10, but the root delegated | 249 // The DelegatedRendererLayer has a size of 10x10, but the root delegated |
| 246 // 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... |
| 259 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 263 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 260 EXPECT_TRANSFORMATION_MATRIX_EQ( | 264 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 261 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 265 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
| 262 | 266 |
| 263 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 264 host_impl_->DidDrawAllLayers(frame); | 268 host_impl_->DidDrawAllLayers(frame); |
| 265 } | 269 } |
| 266 | 270 |
| 267 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 271 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
| 268 LayerTreeHostImpl::FrameData frame; | 272 LayerTreeHostImpl::FrameData frame; |
| 269 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 273 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 274 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 270 | 275 |
| 271 // The delegated layer has a surface between it and the root. | 276 // The delegated layer has a surface between it and the root. |
| 272 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); | 277 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); |
| 273 | 278 |
| 274 // Each non-DelegatedRendererLayer added one RenderPass. The | 279 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 275 // DelegatedRendererLayer added two contributing passes. | 280 // DelegatedRendererLayer added two contributing passes. |
| 276 ASSERT_EQ(5u, frame.render_passes.size()); | 281 ASSERT_EQ(5u, frame.render_passes.size()); |
| 277 | 282 |
| 278 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all | 283 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all |
| 279 // render pass' transforms to the root should be shifted by this amount. | 284 // render pass' transforms to the root should be shifted by this amount. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 295 EXPECT_TRANSFORMATION_MATRIX_EQ( | 300 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 296 transform * seven_eight, | 301 transform * seven_eight, |
| 297 frame.render_passes[2]->transform_to_root_target); | 302 frame.render_passes[2]->transform_to_root_target); |
| 298 | 303 |
| 299 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 304 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
| 300 host_impl_->DidDrawAllLayers(frame); | 305 host_impl_->DidDrawAllLayers(frame); |
| 301 } | 306 } |
| 302 | 307 |
| 303 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 308 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
| 304 LayerTreeHostImpl::FrameData frame; | 309 LayerTreeHostImpl::FrameData frame; |
| 305 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 310 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 311 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 306 | 312 |
| 307 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 313 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
| 308 // has no need to be a RenderSurface for the quads it carries. | 314 // has no need to be a RenderSurface for the quads it carries. |
| 309 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | 315 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
| 310 | 316 |
| 311 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 317 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 312 host_impl_->DidDrawAllLayers(frame); | 318 host_impl_->DidDrawAllLayers(frame); |
| 313 } | 319 } |
| 314 | 320 |
| 315 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 321 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
| 316 delegated_renderer_layer_->SetOpacity(0.5f); | 322 delegated_renderer_layer_->SetOpacity(0.5f); |
| 317 | 323 |
| 318 LayerTreeHostImpl::FrameData frame; | 324 LayerTreeHostImpl::FrameData frame; |
| 319 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 325 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 326 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 320 | 327 |
| 321 // This test case has quads from multiple layers in the delegated renderer, so | 328 // This test case has quads from multiple layers in the delegated renderer, so |
| 322 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 329 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 323 // render surface. | 330 // render surface. |
| 324 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 331 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 325 | 332 |
| 326 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 333 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 327 host_impl_->DidDrawAllLayers(frame); | 334 host_impl_->DidDrawAllLayers(frame); |
| 328 } | 335 } |
| 329 | 336 |
| 330 TEST_F(DelegatedRendererLayerImplTestSimple, | 337 TEST_F(DelegatedRendererLayerImplTestSimple, |
| 331 DoesOwnARenderSurfaceForTransform) { | 338 DoesOwnARenderSurfaceForTransform) { |
| 332 gfx::Transform rotation; | 339 gfx::Transform rotation; |
| 333 rotation.RotateAboutZAxis(30.0); | 340 rotation.RotateAboutZAxis(30.0); |
| 334 delegated_renderer_layer_->SetTransform(rotation); | 341 delegated_renderer_layer_->SetTransform(rotation); |
| 335 | 342 |
| 336 LayerTreeHostImpl::FrameData frame; | 343 LayerTreeHostImpl::FrameData frame; |
| 337 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 344 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 345 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 338 | 346 |
| 339 // This test case has quads from multiple layers in the delegated renderer, so | 347 // This test case has quads from multiple layers in the delegated renderer, so |
| 340 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 348 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
| 341 // render surface. | 349 // render surface. |
| 342 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 350 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
| 343 | 351 |
| 344 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 352 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 345 host_impl_->DidDrawAllLayers(frame); | 353 host_impl_->DidDrawAllLayers(frame); |
| 346 } | 354 } |
| 347 | 355 |
| 348 class DelegatedRendererLayerImplTestOwnSurface | 356 class DelegatedRendererLayerImplTestOwnSurface |
| 349 : public DelegatedRendererLayerImplTestSimple { | 357 : public DelegatedRendererLayerImplTestSimple { |
| 350 public: | 358 public: |
| 351 DelegatedRendererLayerImplTestOwnSurface() | 359 DelegatedRendererLayerImplTestOwnSurface() |
| 352 : DelegatedRendererLayerImplTestSimple() { | 360 : DelegatedRendererLayerImplTestSimple() { |
| 353 delegated_renderer_layer_->SetForceRenderSurface(true); | 361 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 354 } | 362 } |
| 355 }; | 363 }; |
| 356 | 364 |
| 357 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 365 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
| 358 LayerTreeHostImpl::FrameData frame; | 366 LayerTreeHostImpl::FrameData frame; |
| 359 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 367 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 368 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 360 | 369 |
| 361 // Each non-DelegatedRendererLayer added one RenderPass. The | 370 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 362 // DelegatedRendererLayer added two contributing passes and its owned surface | 371 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 363 // added one pass. | 372 // added one pass. |
| 364 ASSERT_EQ(6u, frame.render_passes.size()); | 373 ASSERT_EQ(6u, frame.render_passes.size()); |
| 365 | 374 |
| 366 // The DelegatedRendererLayer should have added its contributing RenderPasses | 375 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 367 // to the frame. | 376 // to the frame. |
| 368 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 377 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 369 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 378 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 388 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 397 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 389 frame.render_passes[2]->output_rect.ToString()); | 398 frame.render_passes[2]->output_rect.ToString()); |
| 390 | 399 |
| 391 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 400 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 392 host_impl_->DidDrawAllLayers(frame); | 401 host_impl_->DidDrawAllLayers(frame); |
| 393 } | 402 } |
| 394 | 403 |
| 395 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 404 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 396 AddsQuadsToContributingRenderPasses) { | 405 AddsQuadsToContributingRenderPasses) { |
| 397 LayerTreeHostImpl::FrameData frame; | 406 LayerTreeHostImpl::FrameData frame; |
| 398 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 407 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 408 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 399 | 409 |
| 400 // Each non-DelegatedRendererLayer added one RenderPass. The | 410 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 401 // DelegatedRendererLayer added two contributing passes and its owned surface | 411 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 402 // added one pass. | 412 // added one pass. |
| 403 ASSERT_EQ(6u, frame.render_passes.size()); | 413 ASSERT_EQ(6u, frame.render_passes.size()); |
| 404 | 414 |
| 405 // The DelegatedRendererLayer should have added its contributing RenderPasses | 415 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 406 // to the frame. | 416 // to the frame. |
| 407 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 417 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 408 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 418 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 424 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 434 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 425 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 435 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 426 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 436 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
| 427 | 437 |
| 428 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 438 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 429 host_impl_->DidDrawAllLayers(frame); | 439 host_impl_->DidDrawAllLayers(frame); |
| 430 } | 440 } |
| 431 | 441 |
| 432 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 442 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
| 433 LayerTreeHostImpl::FrameData frame; | 443 LayerTreeHostImpl::FrameData frame; |
| 434 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 444 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 445 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 435 | 446 |
| 436 // Each non-DelegatedRendererLayer added one RenderPass. The | 447 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 437 // DelegatedRendererLayer added two contributing passes and its owned surface | 448 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 438 // added one pass. | 449 // added one pass. |
| 439 ASSERT_EQ(6u, frame.render_passes.size()); | 450 ASSERT_EQ(6u, frame.render_passes.size()); |
| 440 | 451 |
| 441 // The layer's target is the RenderPass owned by itself. | 452 // The layer's target is the RenderPass owned by itself. |
| 442 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); | 453 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); |
| 443 | 454 |
| 444 // The DelegatedRendererLayer should have added copies of quads in its root | 455 // The DelegatedRendererLayer should have added copies of quads in its root |
| 445 // RenderPass to its target RenderPass. | 456 // RenderPass to its target RenderPass. |
| 446 // The layer_after also adds one quad. | 457 // The layer_after also adds one quad. |
| 447 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 458 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
| 448 | 459 |
| 449 // Verify it added the right quads. | 460 // Verify it added the right quads. |
| 450 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 461 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 451 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 462 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
| 452 | 463 |
| 453 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 464 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 454 host_impl_->DidDrawAllLayers(frame); | 465 host_impl_->DidDrawAllLayers(frame); |
| 455 } | 466 } |
| 456 | 467 |
| 457 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 468 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 458 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 469 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
| 459 LayerTreeHostImpl::FrameData frame; | 470 LayerTreeHostImpl::FrameData frame; |
| 460 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 471 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 472 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 461 | 473 |
| 462 // Each non-DelegatedRendererLayer added one RenderPass. The | 474 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 463 // DelegatedRendererLayer added two contributing passes and its owned surface | 475 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 464 // added one pass. | 476 // added one pass. |
| 465 ASSERT_EQ(6u, frame.render_passes.size()); | 477 ASSERT_EQ(6u, frame.render_passes.size()); |
| 466 | 478 |
| 467 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 479 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
| 468 // RenderPass' quads do not need to be translated at all. However, they are | 480 // RenderPass' quads do not need to be translated at all. However, they are |
| 469 // scaled from the frame's size (8x8) to the layer's bounds (10x10). | 481 // scaled from the frame's size (8x8) to the layer's bounds (10x10). |
| 470 gfx::Transform transform; | 482 gfx::Transform transform; |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 LayerImpl* root_layer_; | 674 LayerImpl* root_layer_; |
| 663 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 675 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
| 664 bool root_delegated_render_pass_is_clipped_; | 676 bool root_delegated_render_pass_is_clipped_; |
| 665 }; | 677 }; |
| 666 | 678 |
| 667 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { | 679 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { |
| 668 root_delegated_render_pass_is_clipped_ = false; | 680 root_delegated_render_pass_is_clipped_ = false; |
| 669 SetUpTest(); | 681 SetUpTest(); |
| 670 | 682 |
| 671 LayerTreeHostImpl::FrameData frame; | 683 LayerTreeHostImpl::FrameData frame; |
| 672 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 684 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 685 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 673 | 686 |
| 674 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 687 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 675 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 688 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 676 VerifyRenderPasses( | 689 VerifyRenderPasses( |
| 677 frame, | 690 frame, |
| 678 2, | 691 2, |
| 679 &root_delegated_shared_quad_state, | 692 &root_delegated_shared_quad_state, |
| 680 &contrib_delegated_shared_quad_state); | 693 &contrib_delegated_shared_quad_state); |
| 681 | 694 |
| 682 // When the quads don't have a clip of their own, the clip rect is set to | 695 // 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... |
| 718 | 731 |
| 719 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 732 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 720 host_impl_->DidDrawAllLayers(frame); | 733 host_impl_->DidDrawAllLayers(frame); |
| 721 } | 734 } |
| 722 | 735 |
| 723 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 736 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
| 724 root_delegated_render_pass_is_clipped_ = true; | 737 root_delegated_render_pass_is_clipped_ = true; |
| 725 SetUpTest(); | 738 SetUpTest(); |
| 726 | 739 |
| 727 LayerTreeHostImpl::FrameData frame; | 740 LayerTreeHostImpl::FrameData frame; |
| 728 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 741 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 742 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 729 | 743 |
| 730 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 744 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 731 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 745 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 732 VerifyRenderPasses( | 746 VerifyRenderPasses( |
| 733 frame, | 747 frame, |
| 734 2, | 748 2, |
| 735 &root_delegated_shared_quad_state, | 749 &root_delegated_shared_quad_state, |
| 736 &contrib_delegated_shared_quad_state); | 750 &contrib_delegated_shared_quad_state); |
| 737 | 751 |
| 738 // Since the quads have a clip_rect it should be modified by delegated | 752 // 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... |
| 783 host_impl_->DidDrawAllLayers(frame); | 797 host_impl_->DidDrawAllLayers(frame); |
| 784 } | 798 } |
| 785 | 799 |
| 786 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 800 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
| 787 root_delegated_render_pass_is_clipped_ = false; | 801 root_delegated_render_pass_is_clipped_ = false; |
| 788 SetUpTest(); | 802 SetUpTest(); |
| 789 | 803 |
| 790 delegated_renderer_layer_->SetForceRenderSurface(true); | 804 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 791 | 805 |
| 792 LayerTreeHostImpl::FrameData frame; | 806 LayerTreeHostImpl::FrameData frame; |
| 793 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 807 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 808 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 794 | 809 |
| 795 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 810 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 796 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 811 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 797 VerifyRenderPasses( | 812 VerifyRenderPasses( |
| 798 frame, | 813 frame, |
| 799 3, | 814 3, |
| 800 &root_delegated_shared_quad_state, | 815 &root_delegated_shared_quad_state, |
| 801 &contrib_delegated_shared_quad_state); | 816 &contrib_delegated_shared_quad_state); |
| 802 | 817 |
| 803 // When the layer owns a surface, then its position and translation are not | 818 // 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... |
| 839 host_impl_->DidDrawAllLayers(frame); | 854 host_impl_->DidDrawAllLayers(frame); |
| 840 } | 855 } |
| 841 | 856 |
| 842 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 857 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
| 843 root_delegated_render_pass_is_clipped_ = true; | 858 root_delegated_render_pass_is_clipped_ = true; |
| 844 SetUpTest(); | 859 SetUpTest(); |
| 845 | 860 |
| 846 delegated_renderer_layer_->SetForceRenderSurface(true); | 861 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 847 | 862 |
| 848 LayerTreeHostImpl::FrameData frame; | 863 LayerTreeHostImpl::FrameData frame; |
| 849 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 864 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 865 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 850 | 866 |
| 851 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 867 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
| 852 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 868 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
| 853 VerifyRenderPasses( | 869 VerifyRenderPasses( |
| 854 frame, | 870 frame, |
| 855 3, | 871 3, |
| 856 &root_delegated_shared_quad_state, | 872 &root_delegated_shared_quad_state, |
| 857 &contrib_delegated_shared_quad_state); | 873 &contrib_delegated_shared_quad_state); |
| 858 | 874 |
| 859 // When the layer owns a surface, then its position and translation are not | 875 // When the layer owns a surface, then its position and translation are not |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1042 bool clip_delegated_renderer_layer_; | 1058 bool clip_delegated_renderer_layer_; |
| 1043 }; | 1059 }; |
| 1044 | 1060 |
| 1045 TEST_F(DelegatedRendererLayerImplTestClip, | 1061 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1046 QuadsUnclipped_LayerUnclipped_NoSurface) { | 1062 QuadsUnclipped_LayerUnclipped_NoSurface) { |
| 1047 root_delegated_render_pass_is_clipped_ = false; | 1063 root_delegated_render_pass_is_clipped_ = false; |
| 1048 clip_delegated_renderer_layer_ = false; | 1064 clip_delegated_renderer_layer_ = false; |
| 1049 SetUpTest(); | 1065 SetUpTest(); |
| 1050 | 1066 |
| 1051 LayerTreeHostImpl::FrameData frame; | 1067 LayerTreeHostImpl::FrameData frame; |
| 1052 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1068 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1069 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1053 | 1070 |
| 1054 ASSERT_EQ(2u, frame.render_passes.size()); | 1071 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1055 const QuadList& contrib_delegated_quad_list = | 1072 const QuadList& contrib_delegated_quad_list = |
| 1056 frame.render_passes[0]->quad_list; | 1073 frame.render_passes[0]->quad_list; |
| 1057 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1074 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1058 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1075 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1059 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1076 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1060 const SharedQuadState* root_delegated_shared_quad_state = | 1077 const SharedQuadState* root_delegated_shared_quad_state = |
| 1061 root_delegated_quad_list[0]->shared_quad_state; | 1078 root_delegated_quad_list[0]->shared_quad_state; |
| 1062 | 1079 |
| 1063 // When the quads don't have a clip of their own, the clip rect is set to | 1080 // When the quads don't have a clip of their own, the clip rect is set to |
| 1064 // the drawable_content_rect of the delegated renderer layer. | 1081 // the drawable_content_rect of the delegated renderer layer. |
| 1065 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1082 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
| 1066 root_delegated_shared_quad_state->clip_rect.ToString()); | 1083 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1067 // Quads are clipped to the delegated renderer layer. | 1084 // Quads are clipped to the delegated renderer layer. |
| 1068 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1085 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1069 | 1086 |
| 1070 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1087 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1071 host_impl_->DidDrawAllLayers(frame); | 1088 host_impl_->DidDrawAllLayers(frame); |
| 1072 } | 1089 } |
| 1073 | 1090 |
| 1074 TEST_F(DelegatedRendererLayerImplTestClip, | 1091 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1075 QuadsClipped_LayerUnclipped_NoSurface) { | 1092 QuadsClipped_LayerUnclipped_NoSurface) { |
| 1076 root_delegated_render_pass_is_clipped_ = true; | 1093 root_delegated_render_pass_is_clipped_ = true; |
| 1077 clip_delegated_renderer_layer_ = false; | 1094 clip_delegated_renderer_layer_ = false; |
| 1078 SetUpTest(); | 1095 SetUpTest(); |
| 1079 | 1096 |
| 1080 LayerTreeHostImpl::FrameData frame; | 1097 LayerTreeHostImpl::FrameData frame; |
| 1081 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1098 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1099 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1082 | 1100 |
| 1083 ASSERT_EQ(2u, frame.render_passes.size()); | 1101 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1084 const QuadList& contrib_delegated_quad_list = | 1102 const QuadList& contrib_delegated_quad_list = |
| 1085 frame.render_passes[0]->quad_list; | 1103 frame.render_passes[0]->quad_list; |
| 1086 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1104 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1087 const QuadList& root_delegated_quad_list = | 1105 const QuadList& root_delegated_quad_list = |
| 1088 frame.render_passes[1]->quad_list; | 1106 frame.render_passes[1]->quad_list; |
| 1089 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1107 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1090 const SharedQuadState* root_delegated_shared_quad_state = | 1108 const SharedQuadState* root_delegated_shared_quad_state = |
| 1091 root_delegated_quad_list[0]->shared_quad_state; | 1109 root_delegated_quad_list[0]->shared_quad_state; |
| 1092 | 1110 |
| 1093 // When the quads have a clip of their own, it is used. | 1111 // When the quads have a clip of their own, it is used. |
| 1094 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1112 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
| 1095 root_delegated_shared_quad_state->clip_rect.ToString()); | 1113 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1096 // Quads came with a clip rect. | 1114 // Quads came with a clip rect. |
| 1097 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1115 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1098 | 1116 |
| 1099 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1117 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1100 host_impl_->DidDrawAllLayers(frame); | 1118 host_impl_->DidDrawAllLayers(frame); |
| 1101 } | 1119 } |
| 1102 | 1120 |
| 1103 TEST_F(DelegatedRendererLayerImplTestClip, | 1121 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1104 QuadsUnclipped_LayerClipped_NoSurface) { | 1122 QuadsUnclipped_LayerClipped_NoSurface) { |
| 1105 root_delegated_render_pass_is_clipped_ = false; | 1123 root_delegated_render_pass_is_clipped_ = false; |
| 1106 clip_delegated_renderer_layer_ = true; | 1124 clip_delegated_renderer_layer_ = true; |
| 1107 SetUpTest(); | 1125 SetUpTest(); |
| 1108 | 1126 |
| 1109 LayerTreeHostImpl::FrameData frame; | 1127 LayerTreeHostImpl::FrameData frame; |
| 1110 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1128 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1129 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1111 | 1130 |
| 1112 ASSERT_EQ(2u, frame.render_passes.size()); | 1131 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1113 const QuadList& contrib_delegated_quad_list = | 1132 const QuadList& contrib_delegated_quad_list = |
| 1114 frame.render_passes[0]->quad_list; | 1133 frame.render_passes[0]->quad_list; |
| 1115 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1134 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1116 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1135 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1117 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1136 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1118 const SharedQuadState* root_delegated_shared_quad_state = | 1137 const SharedQuadState* root_delegated_shared_quad_state = |
| 1119 root_delegated_quad_list[0]->shared_quad_state; | 1138 root_delegated_quad_list[0]->shared_quad_state; |
| 1120 | 1139 |
| 1121 // When the quads don't have a clip of their own, the clip rect is set to | 1140 // When the quads don't have a clip of their own, the clip rect is set to |
| 1122 // the drawable_content_rect of the delegated renderer layer. When the layer | 1141 // the drawable_content_rect of the delegated renderer layer. When the layer |
| 1123 // is clipped, that should be seen in the quads' clip_rect. | 1142 // is clipped, that should be seen in the quads' clip_rect. |
| 1124 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1143 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
| 1125 root_delegated_shared_quad_state->clip_rect.ToString()); | 1144 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1126 // Quads are clipped to the delegated renderer layer. | 1145 // Quads are clipped to the delegated renderer layer. |
| 1127 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1146 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1128 | 1147 |
| 1129 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1148 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1130 host_impl_->DidDrawAllLayers(frame); | 1149 host_impl_->DidDrawAllLayers(frame); |
| 1131 } | 1150 } |
| 1132 | 1151 |
| 1133 TEST_F(DelegatedRendererLayerImplTestClip, | 1152 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1134 QuadsClipped_LayerClipped_NoSurface) { | 1153 QuadsClipped_LayerClipped_NoSurface) { |
| 1135 root_delegated_render_pass_is_clipped_ = true; | 1154 root_delegated_render_pass_is_clipped_ = true; |
| 1136 clip_delegated_renderer_layer_ = true; | 1155 clip_delegated_renderer_layer_ = true; |
| 1137 SetUpTest(); | 1156 SetUpTest(); |
| 1138 | 1157 |
| 1139 LayerTreeHostImpl::FrameData frame; | 1158 LayerTreeHostImpl::FrameData frame; |
| 1140 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1159 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1160 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1141 | 1161 |
| 1142 ASSERT_EQ(2u, frame.render_passes.size()); | 1162 ASSERT_EQ(2u, frame.render_passes.size()); |
| 1143 const QuadList& contrib_delegated_quad_list = | 1163 const QuadList& contrib_delegated_quad_list = |
| 1144 frame.render_passes[0]->quad_list; | 1164 frame.render_passes[0]->quad_list; |
| 1145 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1165 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1146 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; |
| 1147 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1167 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1148 const SharedQuadState* root_delegated_shared_quad_state = | 1168 const SharedQuadState* root_delegated_shared_quad_state = |
| 1149 root_delegated_quad_list[0]->shared_quad_state; | 1169 root_delegated_quad_list[0]->shared_quad_state; |
| 1150 | 1170 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1161 | 1181 |
| 1162 TEST_F(DelegatedRendererLayerImplTestClip, | 1182 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1163 QuadsUnclipped_LayerUnclipped_Surface) { | 1183 QuadsUnclipped_LayerUnclipped_Surface) { |
| 1164 root_delegated_render_pass_is_clipped_ = false; | 1184 root_delegated_render_pass_is_clipped_ = false; |
| 1165 clip_delegated_renderer_layer_ = false; | 1185 clip_delegated_renderer_layer_ = false; |
| 1166 SetUpTest(); | 1186 SetUpTest(); |
| 1167 | 1187 |
| 1168 delegated_renderer_layer_->SetForceRenderSurface(true); | 1188 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1169 | 1189 |
| 1170 LayerTreeHostImpl::FrameData frame; | 1190 LayerTreeHostImpl::FrameData frame; |
| 1171 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1191 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1192 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1172 | 1193 |
| 1173 ASSERT_EQ(3u, frame.render_passes.size()); | 1194 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1174 const QuadList& contrib_delegated_quad_list = | 1195 const QuadList& contrib_delegated_quad_list = |
| 1175 frame.render_passes[0]->quad_list; | 1196 frame.render_passes[0]->quad_list; |
| 1176 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1197 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1177 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; |
| 1178 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1199 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1179 const SharedQuadState* root_delegated_shared_quad_state = | 1200 const SharedQuadState* root_delegated_shared_quad_state = |
| 1180 root_delegated_quad_list[0]->shared_quad_state; | 1201 root_delegated_quad_list[0]->shared_quad_state; |
| 1181 | 1202 |
| 1182 // 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 |
| 1183 // 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 |
| 1184 // clip rect is ignored, and they are not set as clipped. | 1205 // clip rect is ignored, and they are not set as clipped. |
| 1185 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1206 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1186 | 1207 |
| 1187 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1208 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1188 host_impl_->DidDrawAllLayers(frame); | 1209 host_impl_->DidDrawAllLayers(frame); |
| 1189 } | 1210 } |
| 1190 | 1211 |
| 1191 TEST_F(DelegatedRendererLayerImplTestClip, | 1212 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1192 QuadsClipped_LayerUnclipped_Surface) { | 1213 QuadsClipped_LayerUnclipped_Surface) { |
| 1193 root_delegated_render_pass_is_clipped_ = true; | 1214 root_delegated_render_pass_is_clipped_ = true; |
| 1194 clip_delegated_renderer_layer_ = false; | 1215 clip_delegated_renderer_layer_ = false; |
| 1195 SetUpTest(); | 1216 SetUpTest(); |
| 1196 | 1217 |
| 1197 delegated_renderer_layer_->SetForceRenderSurface(true); | 1218 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1198 | 1219 |
| 1199 LayerTreeHostImpl::FrameData frame; | 1220 LayerTreeHostImpl::FrameData frame; |
| 1200 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1221 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1222 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1201 | 1223 |
| 1202 ASSERT_EQ(3u, frame.render_passes.size()); | 1224 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1203 const QuadList& contrib_delegated_quad_list = | 1225 const QuadList& contrib_delegated_quad_list = |
| 1204 frame.render_passes[0]->quad_list; | 1226 frame.render_passes[0]->quad_list; |
| 1205 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1227 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1206 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1228 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1207 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1229 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1208 const SharedQuadState* root_delegated_shared_quad_state = | 1230 const SharedQuadState* root_delegated_shared_quad_state = |
| 1209 root_delegated_quad_list[0]->shared_quad_state; | 1231 root_delegated_quad_list[0]->shared_quad_state; |
| 1210 | 1232 |
| 1211 // When the quads have a clip of their own, it is used. | 1233 // When the quads have a clip of their own, it is used. |
| 1212 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1234 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
| 1213 root_delegated_shared_quad_state->clip_rect.ToString()); | 1235 root_delegated_shared_quad_state->clip_rect.ToString()); |
| 1214 // Quads came with a clip rect. | 1236 // Quads came with a clip rect. |
| 1215 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1237 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
| 1216 | 1238 |
| 1217 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1239 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1218 host_impl_->DidDrawAllLayers(frame); | 1240 host_impl_->DidDrawAllLayers(frame); |
| 1219 } | 1241 } |
| 1220 | 1242 |
| 1221 TEST_F(DelegatedRendererLayerImplTestClip, | 1243 TEST_F(DelegatedRendererLayerImplTestClip, |
| 1222 QuadsUnclipped_LayerClipped_Surface) { | 1244 QuadsUnclipped_LayerClipped_Surface) { |
| 1223 root_delegated_render_pass_is_clipped_ = false; | 1245 root_delegated_render_pass_is_clipped_ = false; |
| 1224 clip_delegated_renderer_layer_ = true; | 1246 clip_delegated_renderer_layer_ = true; |
| 1225 SetUpTest(); | 1247 SetUpTest(); |
| 1226 | 1248 |
| 1227 delegated_renderer_layer_->SetForceRenderSurface(true); | 1249 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1228 | 1250 |
| 1229 LayerTreeHostImpl::FrameData frame; | 1251 LayerTreeHostImpl::FrameData frame; |
| 1230 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1252 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1253 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1231 | 1254 |
| 1232 ASSERT_EQ(3u, frame.render_passes.size()); | 1255 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1233 const QuadList& contrib_delegated_quad_list = | 1256 const QuadList& contrib_delegated_quad_list = |
| 1234 frame.render_passes[0]->quad_list; | 1257 frame.render_passes[0]->quad_list; |
| 1235 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1258 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1236 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1259 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1237 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1260 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1238 const SharedQuadState* root_delegated_shared_quad_state = | 1261 const SharedQuadState* root_delegated_shared_quad_state = |
| 1239 root_delegated_quad_list[0]->shared_quad_state; | 1262 root_delegated_quad_list[0]->shared_quad_state; |
| 1240 | 1263 |
| 1241 // When the layer owns a surface, the quads don't need to be clipped | 1264 // When the layer owns a surface, the quads don't need to be clipped |
| 1242 // further than they already specify. If they aren't clipped, then their | 1265 // further than they already specify. If they aren't clipped, then their |
| 1243 // clip rect is ignored, and they are not set as clipped. | 1266 // clip rect is ignored, and they are not set as clipped. |
| 1244 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1267 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
| 1245 | 1268 |
| 1246 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1269 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1247 host_impl_->DidDrawAllLayers(frame); | 1270 host_impl_->DidDrawAllLayers(frame); |
| 1248 } | 1271 } |
| 1249 | 1272 |
| 1250 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1273 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
| 1251 root_delegated_render_pass_is_clipped_ = true; | 1274 root_delegated_render_pass_is_clipped_ = true; |
| 1252 clip_delegated_renderer_layer_ = true; | 1275 clip_delegated_renderer_layer_ = true; |
| 1253 SetUpTest(); | 1276 SetUpTest(); |
| 1254 | 1277 |
| 1255 delegated_renderer_layer_->SetForceRenderSurface(true); | 1278 delegated_renderer_layer_->SetForceRenderSurface(true); |
| 1256 | 1279 |
| 1257 LayerTreeHostImpl::FrameData frame; | 1280 LayerTreeHostImpl::FrameData frame; |
| 1258 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1281 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1282 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1259 | 1283 |
| 1260 ASSERT_EQ(3u, frame.render_passes.size()); | 1284 ASSERT_EQ(3u, frame.render_passes.size()); |
| 1261 const QuadList& contrib_delegated_quad_list = | 1285 const QuadList& contrib_delegated_quad_list = |
| 1262 frame.render_passes[0]->quad_list; | 1286 frame.render_passes[0]->quad_list; |
| 1263 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1287 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 1264 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1288 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
| 1265 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1289 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 1266 const SharedQuadState* root_delegated_shared_quad_state = | 1290 const SharedQuadState* root_delegated_shared_quad_state = |
| 1267 root_delegated_quad_list[0]->shared_quad_state; | 1291 root_delegated_quad_list[0]->shared_quad_state; |
| 1268 | 1292 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1312 delegated_renderer_layer->SetFrameDataForRenderPasses( | 1336 delegated_renderer_layer->SetFrameDataForRenderPasses( |
| 1313 &delegated_render_passes); | 1337 &delegated_render_passes); |
| 1314 | 1338 |
| 1315 // The RenderPasses should be taken by the layer. | 1339 // The RenderPasses should be taken by the layer. |
| 1316 EXPECT_EQ(0u, delegated_render_passes.size()); | 1340 EXPECT_EQ(0u, delegated_render_passes.size()); |
| 1317 | 1341 |
| 1318 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 1342 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
| 1319 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 1343 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
| 1320 | 1344 |
| 1321 LayerTreeHostImpl::FrameData frame; | 1345 LayerTreeHostImpl::FrameData frame; |
| 1322 EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1346 EXPECT_EQ(DrawSwapReadbackResult::DID_DRAW, |
| 1347 host_impl_->PrepareToDraw(&frame, gfx::Rect())); |
| 1323 | 1348 |
| 1324 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1349 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
| 1325 ASSERT_EQ(1u, frame.render_passes.size()); | 1350 ASSERT_EQ(1u, frame.render_passes.size()); |
| 1326 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1351 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
| 1327 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1352 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
| 1328 frame.render_passes[0]->quad_list[0]->material); | 1353 frame.render_passes[0]->quad_list[0]->material); |
| 1329 | 1354 |
| 1330 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1355 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
| 1331 host_impl_->DidDrawAllLayers(frame); | 1356 host_impl_->DidDrawAllLayers(frame); |
| 1332 } | 1357 } |
| 1333 | 1358 |
| 1334 } // namespace | 1359 } // namespace |
| 1335 } // namespace cc | 1360 } // namespace cc |
| OLD | NEW |