OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/layers/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
6 | 6 |
7 #include "cc/base/scoped_ptr_vector.h" | 7 #include "cc/base/scoped_ptr_vector.h" |
8 #include "cc/layers/quad_sink.h" | 8 #include "cc/layers/quad_sink.h" |
9 #include "cc/layers/solid_color_layer_impl.h" | 9 #include "cc/layers/solid_color_layer_impl.h" |
10 #include "cc/quads/render_pass_draw_quad.h" | 10 #include "cc/quads/render_pass_draw_quad.h" |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 133 |
134 protected: | 134 protected: |
135 LayerImpl* root_layer_; | 135 LayerImpl* root_layer_; |
136 LayerImpl* layer_before_; | 136 LayerImpl* layer_before_; |
137 LayerImpl* layer_after_; | 137 LayerImpl* layer_after_; |
138 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 138 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
139 }; | 139 }; |
140 | 140 |
141 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { | 141 TEST_F(DelegatedRendererLayerImplTestSimple, AddsContributingRenderPasses) { |
142 LayerTreeHostImpl::FrameData frame; | 142 LayerTreeHostImpl::FrameData frame; |
143 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 143 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
144 | 144 |
145 // Each non-DelegatedRendererLayer added one RenderPass. The | 145 // Each non-DelegatedRendererLayer added one RenderPass. The |
146 // DelegatedRendererLayer added two contributing passes. | 146 // DelegatedRendererLayer added two contributing passes. |
147 ASSERT_EQ(5u, frame.render_passes.size()); | 147 ASSERT_EQ(5u, frame.render_passes.size()); |
148 | 148 |
149 // The DelegatedRendererLayer should have added its contributing RenderPasses | 149 // The DelegatedRendererLayer should have added its contributing RenderPasses |
150 // to the frame. | 150 // to the frame. |
151 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 151 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
152 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 152 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
153 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 153 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
(...skipping 13 matching lines...) Expand all Loading... |
167 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 167 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
168 frame.render_passes[2]->output_rect.ToString()); | 168 frame.render_passes[2]->output_rect.ToString()); |
169 | 169 |
170 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 170 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
171 host_impl_->DidDrawAllLayers(frame); | 171 host_impl_->DidDrawAllLayers(frame); |
172 } | 172 } |
173 | 173 |
174 TEST_F(DelegatedRendererLayerImplTestSimple, | 174 TEST_F(DelegatedRendererLayerImplTestSimple, |
175 AddsQuadsToContributingRenderPasses) { | 175 AddsQuadsToContributingRenderPasses) { |
176 LayerTreeHostImpl::FrameData frame; | 176 LayerTreeHostImpl::FrameData frame; |
177 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 177 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
178 | 178 |
179 // Each non-DelegatedRendererLayer added one RenderPass. The | 179 // Each non-DelegatedRendererLayer added one RenderPass. The |
180 // DelegatedRendererLayer added two contributing passes. | 180 // DelegatedRendererLayer added two contributing passes. |
181 ASSERT_EQ(5u, frame.render_passes.size()); | 181 ASSERT_EQ(5u, frame.render_passes.size()); |
182 | 182 |
183 // The DelegatedRendererLayer should have added its contributing RenderPasses | 183 // The DelegatedRendererLayer should have added its contributing RenderPasses |
184 // to the frame. | 184 // to the frame. |
185 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 185 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
186 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 186 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
187 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 187 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
(...skipping 14 matching lines...) Expand all Loading... |
202 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 202 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
203 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 203 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
204 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 204 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
205 | 205 |
206 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 206 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
207 host_impl_->DidDrawAllLayers(frame); | 207 host_impl_->DidDrawAllLayers(frame); |
208 } | 208 } |
209 | 209 |
210 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 210 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
211 LayerTreeHostImpl::FrameData frame; | 211 LayerTreeHostImpl::FrameData frame; |
212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
213 | 213 |
214 // Each non-DelegatedRendererLayer added one RenderPass. The | 214 // Each non-DelegatedRendererLayer added one RenderPass. The |
215 // DelegatedRendererLayer added two contributing passes. | 215 // DelegatedRendererLayer added two contributing passes. |
216 ASSERT_EQ(5u, frame.render_passes.size()); | 216 ASSERT_EQ(5u, frame.render_passes.size()); |
217 | 217 |
218 // The layer's target is the RenderPass from layer_after_. | 218 // The layer's target is the RenderPass from layer_after_. |
219 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); | 219 EXPECT_EQ(RenderPass::Id(3, 0), frame.render_passes[3]->id); |
220 | 220 |
221 // The DelegatedRendererLayer should have added copies of quads in its root | 221 // The DelegatedRendererLayer should have added copies of quads in its root |
222 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 222 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
223 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 223 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
224 | 224 |
225 // Verify it added the right quads. | 225 // Verify it added the right quads. |
226 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 226 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
227 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 227 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
228 | 228 |
229 // Its target layer should have a quad as well. | 229 // Its target layer should have a quad as well. |
230 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 230 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
231 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 231 frame.render_passes[3]->quad_list[1]->rect.ToString()); |
232 | 232 |
233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
234 host_impl_->DidDrawAllLayers(frame); | 234 host_impl_->DidDrawAllLayers(frame); |
235 } | 235 } |
236 | 236 |
237 TEST_F(DelegatedRendererLayerImplTestSimple, | 237 TEST_F(DelegatedRendererLayerImplTestSimple, |
238 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 238 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
239 LayerTreeHostImpl::FrameData frame; | 239 LayerTreeHostImpl::FrameData frame; |
240 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 240 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
241 | 241 |
242 // Each non-DelegatedRendererLayer added one RenderPass. The | 242 // Each non-DelegatedRendererLayer added one RenderPass. The |
243 // DelegatedRendererLayer added two contributing passes. | 243 // DelegatedRendererLayer added two contributing passes. |
244 ASSERT_EQ(5u, frame.render_passes.size()); | 244 ASSERT_EQ(5u, frame.render_passes.size()); |
245 | 245 |
246 // 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 |
247 // 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 |
248 // all be transformed by that combined amount. | 248 // all be transformed by that combined amount. |
249 // The DelegatedRendererLayer has a size of 10x10, but the root delegated | 249 // The DelegatedRendererLayer has a size of 10x10, but the root delegated |
250 // 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... |
263 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 263 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
264 EXPECT_TRANSFORMATION_MATRIX_EQ( | 264 EXPECT_TRANSFORMATION_MATRIX_EQ( |
265 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 265 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); |
266 | 266 |
267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 267 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
268 host_impl_->DidDrawAllLayers(frame); | 268 host_impl_->DidDrawAllLayers(frame); |
269 } | 269 } |
270 | 270 |
271 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 271 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
272 LayerTreeHostImpl::FrameData frame; | 272 LayerTreeHostImpl::FrameData frame; |
273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 273 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
274 | 274 |
275 // The delegated layer has a surface between it and the root. | 275 // The delegated layer has a surface between it and the root. |
276 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); | 276 EXPECT_TRUE(delegated_renderer_layer_->render_target()->parent()); |
277 | 277 |
278 // Each non-DelegatedRendererLayer added one RenderPass. The | 278 // Each non-DelegatedRendererLayer added one RenderPass. The |
279 // DelegatedRendererLayer added two contributing passes. | 279 // DelegatedRendererLayer added two contributing passes. |
280 ASSERT_EQ(5u, frame.render_passes.size()); | 280 ASSERT_EQ(5u, frame.render_passes.size()); |
281 | 281 |
282 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all | 282 // The DelegatedRendererLayer is at position 9,9 compared to the root, so all |
283 // render pass' transforms to the root should be shifted by this amount. | 283 // render pass' transforms to the root should be shifted by this amount. |
(...skipping 15 matching lines...) Expand all Loading... |
299 EXPECT_TRANSFORMATION_MATRIX_EQ( | 299 EXPECT_TRANSFORMATION_MATRIX_EQ( |
300 transform * seven_eight, | 300 transform * seven_eight, |
301 frame.render_passes[2]->transform_to_root_target); | 301 frame.render_passes[2]->transform_to_root_target); |
302 | 302 |
303 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); | 303 host_impl_->DrawLayers(&frame, base::TimeTicks::Now()); |
304 host_impl_->DidDrawAllLayers(frame); | 304 host_impl_->DidDrawAllLayers(frame); |
305 } | 305 } |
306 | 306 |
307 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { | 307 TEST_F(DelegatedRendererLayerImplTestSimple, DoesNotOwnARenderSurface) { |
308 LayerTreeHostImpl::FrameData frame; | 308 LayerTreeHostImpl::FrameData frame; |
309 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 309 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
310 | 310 |
311 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it | 311 // If the DelegatedRendererLayer is axis aligned and has opacity 1, then it |
312 // has no need to be a RenderSurface for the quads it carries. | 312 // has no need to be a RenderSurface for the quads it carries. |
313 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); | 313 EXPECT_FALSE(delegated_renderer_layer_->render_surface()); |
314 | 314 |
315 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 315 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
316 host_impl_->DidDrawAllLayers(frame); | 316 host_impl_->DidDrawAllLayers(frame); |
317 } | 317 } |
318 | 318 |
319 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { | 319 TEST_F(DelegatedRendererLayerImplTestSimple, DoesOwnARenderSurfaceForOpacity) { |
320 delegated_renderer_layer_->SetOpacity(0.5f); | 320 delegated_renderer_layer_->SetOpacity(0.5f); |
321 | 321 |
322 LayerTreeHostImpl::FrameData frame; | 322 LayerTreeHostImpl::FrameData frame; |
323 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 323 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
324 | 324 |
325 // This test case has quads from multiple layers in the delegated renderer, so | 325 // This test case has quads from multiple layers in the delegated renderer, so |
326 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 326 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
327 // render surface. | 327 // render surface. |
328 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 328 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
329 | 329 |
330 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 330 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
331 host_impl_->DidDrawAllLayers(frame); | 331 host_impl_->DidDrawAllLayers(frame); |
332 } | 332 } |
333 | 333 |
334 TEST_F(DelegatedRendererLayerImplTestSimple, | 334 TEST_F(DelegatedRendererLayerImplTestSimple, |
335 DoesOwnARenderSurfaceForTransform) { | 335 DoesOwnARenderSurfaceForTransform) { |
336 gfx::Transform rotation; | 336 gfx::Transform rotation; |
337 rotation.RotateAboutZAxis(30.0); | 337 rotation.RotateAboutZAxis(30.0); |
338 delegated_renderer_layer_->SetTransform(rotation); | 338 delegated_renderer_layer_->SetTransform(rotation); |
339 | 339 |
340 LayerTreeHostImpl::FrameData frame; | 340 LayerTreeHostImpl::FrameData frame; |
341 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 341 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
342 | 342 |
343 // This test case has quads from multiple layers in the delegated renderer, so | 343 // This test case has quads from multiple layers in the delegated renderer, so |
344 // if the DelegatedRendererLayer has opacity < 1, it should end up with a | 344 // if the DelegatedRendererLayer has opacity < 1, it should end up with a |
345 // render surface. | 345 // render surface. |
346 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); | 346 EXPECT_TRUE(delegated_renderer_layer_->render_surface()); |
347 | 347 |
348 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 348 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
349 host_impl_->DidDrawAllLayers(frame); | 349 host_impl_->DidDrawAllLayers(frame); |
350 } | 350 } |
351 | 351 |
352 class DelegatedRendererLayerImplTestOwnSurface | 352 class DelegatedRendererLayerImplTestOwnSurface |
353 : public DelegatedRendererLayerImplTestSimple { | 353 : public DelegatedRendererLayerImplTestSimple { |
354 public: | 354 public: |
355 DelegatedRendererLayerImplTestOwnSurface() | 355 DelegatedRendererLayerImplTestOwnSurface() |
356 : DelegatedRendererLayerImplTestSimple() { | 356 : DelegatedRendererLayerImplTestSimple() { |
357 delegated_renderer_layer_->SetForceRenderSurface(true); | 357 delegated_renderer_layer_->SetForceRenderSurface(true); |
358 } | 358 } |
359 }; | 359 }; |
360 | 360 |
361 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { | 361 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsRenderPasses) { |
362 LayerTreeHostImpl::FrameData frame; | 362 LayerTreeHostImpl::FrameData frame; |
363 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 363 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
364 | 364 |
365 // Each non-DelegatedRendererLayer added one RenderPass. The | 365 // Each non-DelegatedRendererLayer added one RenderPass. The |
366 // DelegatedRendererLayer added two contributing passes and its owned surface | 366 // DelegatedRendererLayer added two contributing passes and its owned surface |
367 // added one pass. | 367 // added one pass. |
368 ASSERT_EQ(6u, frame.render_passes.size()); | 368 ASSERT_EQ(6u, frame.render_passes.size()); |
369 | 369 |
370 // The DelegatedRendererLayer should have added its contributing RenderPasses | 370 // The DelegatedRendererLayer should have added its contributing RenderPasses |
371 // to the frame. | 371 // to the frame. |
372 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 372 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
373 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 373 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
(...skipping 18 matching lines...) Expand all Loading... |
392 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 392 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
393 frame.render_passes[2]->output_rect.ToString()); | 393 frame.render_passes[2]->output_rect.ToString()); |
394 | 394 |
395 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 395 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
396 host_impl_->DidDrawAllLayers(frame); | 396 host_impl_->DidDrawAllLayers(frame); |
397 } | 397 } |
398 | 398 |
399 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 399 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
400 AddsQuadsToContributingRenderPasses) { | 400 AddsQuadsToContributingRenderPasses) { |
401 LayerTreeHostImpl::FrameData frame; | 401 LayerTreeHostImpl::FrameData frame; |
402 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 402 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
403 | 403 |
404 // Each non-DelegatedRendererLayer added one RenderPass. The | 404 // Each non-DelegatedRendererLayer added one RenderPass. The |
405 // DelegatedRendererLayer added two contributing passes and its owned surface | 405 // DelegatedRendererLayer added two contributing passes and its owned surface |
406 // added one pass. | 406 // added one pass. |
407 ASSERT_EQ(6u, frame.render_passes.size()); | 407 ASSERT_EQ(6u, frame.render_passes.size()); |
408 | 408 |
409 // The DelegatedRendererLayer should have added its contributing RenderPasses | 409 // The DelegatedRendererLayer should have added its contributing RenderPasses |
410 // to the frame. | 410 // to the frame. |
411 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 411 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
412 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 412 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
(...skipping 15 matching lines...) Expand all Loading... |
428 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 428 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
429 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 429 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
430 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 430 frame.render_passes[1]->quad_list[0]->rect.ToString()); |
431 | 431 |
432 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 432 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
433 host_impl_->DidDrawAllLayers(frame); | 433 host_impl_->DidDrawAllLayers(frame); |
434 } | 434 } |
435 | 435 |
436 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 436 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
437 LayerTreeHostImpl::FrameData frame; | 437 LayerTreeHostImpl::FrameData frame; |
438 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 438 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
439 | 439 |
440 // Each non-DelegatedRendererLayer added one RenderPass. The | 440 // Each non-DelegatedRendererLayer added one RenderPass. The |
441 // DelegatedRendererLayer added two contributing passes and its owned surface | 441 // DelegatedRendererLayer added two contributing passes and its owned surface |
442 // added one pass. | 442 // added one pass. |
443 ASSERT_EQ(6u, frame.render_passes.size()); | 443 ASSERT_EQ(6u, frame.render_passes.size()); |
444 | 444 |
445 // The layer's target is the RenderPass owned by itself. | 445 // The layer's target is the RenderPass owned by itself. |
446 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); | 446 EXPECT_EQ(RenderPass::Id(4, 0), frame.render_passes[3]->id); |
447 | 447 |
448 // The DelegatedRendererLayer should have added copies of quads in its root | 448 // The DelegatedRendererLayer should have added copies of quads in its root |
449 // RenderPass to its target RenderPass. | 449 // RenderPass to its target RenderPass. |
450 // The layer_after also adds one quad. | 450 // The layer_after also adds one quad. |
451 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 451 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
452 | 452 |
453 // Verify it added the right quads. | 453 // Verify it added the right quads. |
454 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 454 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
455 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 455 frame.render_passes[3]->quad_list[0]->rect.ToString()); |
456 | 456 |
457 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 457 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
458 host_impl_->DidDrawAllLayers(frame); | 458 host_impl_->DidDrawAllLayers(frame); |
459 } | 459 } |
460 | 460 |
461 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 461 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
462 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 462 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
463 LayerTreeHostImpl::FrameData frame; | 463 LayerTreeHostImpl::FrameData frame; |
464 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 464 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
465 | 465 |
466 // Each non-DelegatedRendererLayer added one RenderPass. The | 466 // Each non-DelegatedRendererLayer added one RenderPass. The |
467 // DelegatedRendererLayer added two contributing passes and its owned surface | 467 // DelegatedRendererLayer added two contributing passes and its owned surface |
468 // added one pass. | 468 // added one pass. |
469 ASSERT_EQ(6u, frame.render_passes.size()); | 469 ASSERT_EQ(6u, frame.render_passes.size()); |
470 | 470 |
471 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 471 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
472 // RenderPass' quads do not need to be translated at all. However, they are | 472 // RenderPass' quads do not need to be translated at all. However, they are |
473 // scaled from the frame's size (8x8) to the layer's bounds (10x10). | 473 // scaled from the frame's size (8x8) to the layer's bounds (10x10). |
474 gfx::Transform transform; | 474 gfx::Transform transform; |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 LayerImpl* root_layer_; | 687 LayerImpl* root_layer_; |
688 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 688 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
689 bool root_delegated_render_pass_is_clipped_; | 689 bool root_delegated_render_pass_is_clipped_; |
690 }; | 690 }; |
691 | 691 |
692 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { | 692 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_NoSurface) { |
693 root_delegated_render_pass_is_clipped_ = false; | 693 root_delegated_render_pass_is_clipped_ = false; |
694 SetUpTest(); | 694 SetUpTest(); |
695 | 695 |
696 LayerTreeHostImpl::FrameData frame; | 696 LayerTreeHostImpl::FrameData frame; |
697 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 697 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
698 | 698 |
699 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 699 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
700 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 700 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
701 VerifyRenderPasses( | 701 VerifyRenderPasses( |
702 frame, | 702 frame, |
703 2, | 703 2, |
704 &root_delegated_shared_quad_state, | 704 &root_delegated_shared_quad_state, |
705 &contrib_delegated_shared_quad_state); | 705 &contrib_delegated_shared_quad_state); |
706 | 706 |
707 // When the quads don't have a clip of their own, the clip rect is set to | 707 // 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... |
743 | 743 |
744 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 744 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
745 host_impl_->DidDrawAllLayers(frame); | 745 host_impl_->DidDrawAllLayers(frame); |
746 } | 746 } |
747 | 747 |
748 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { | 748 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_NoSurface) { |
749 root_delegated_render_pass_is_clipped_ = true; | 749 root_delegated_render_pass_is_clipped_ = true; |
750 SetUpTest(); | 750 SetUpTest(); |
751 | 751 |
752 LayerTreeHostImpl::FrameData frame; | 752 LayerTreeHostImpl::FrameData frame; |
753 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 753 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
754 | 754 |
755 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 755 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
756 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 756 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
757 VerifyRenderPasses( | 757 VerifyRenderPasses( |
758 frame, | 758 frame, |
759 2, | 759 2, |
760 &root_delegated_shared_quad_state, | 760 &root_delegated_shared_quad_state, |
761 &contrib_delegated_shared_quad_state); | 761 &contrib_delegated_shared_quad_state); |
762 | 762 |
763 // Since the quads have a clip_rect it should be modified by delegated | 763 // 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... |
808 host_impl_->DidDrawAllLayers(frame); | 808 host_impl_->DidDrawAllLayers(frame); |
809 } | 809 } |
810 | 810 |
811 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { | 811 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsUnclipped_Surface) { |
812 root_delegated_render_pass_is_clipped_ = false; | 812 root_delegated_render_pass_is_clipped_ = false; |
813 SetUpTest(); | 813 SetUpTest(); |
814 | 814 |
815 delegated_renderer_layer_->SetForceRenderSurface(true); | 815 delegated_renderer_layer_->SetForceRenderSurface(true); |
816 | 816 |
817 LayerTreeHostImpl::FrameData frame; | 817 LayerTreeHostImpl::FrameData frame; |
818 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 818 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
819 | 819 |
820 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 820 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
821 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 821 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
822 VerifyRenderPasses( | 822 VerifyRenderPasses( |
823 frame, | 823 frame, |
824 3, | 824 3, |
825 &root_delegated_shared_quad_state, | 825 &root_delegated_shared_quad_state, |
826 &contrib_delegated_shared_quad_state); | 826 &contrib_delegated_shared_quad_state); |
827 | 827 |
828 // When the layer owns a surface, then its position and translation are not | 828 // 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... |
864 host_impl_->DidDrawAllLayers(frame); | 864 host_impl_->DidDrawAllLayers(frame); |
865 } | 865 } |
866 | 866 |
867 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { | 867 TEST_F(DelegatedRendererLayerImplTestTransform, QuadsClipped_Surface) { |
868 root_delegated_render_pass_is_clipped_ = true; | 868 root_delegated_render_pass_is_clipped_ = true; |
869 SetUpTest(); | 869 SetUpTest(); |
870 | 870 |
871 delegated_renderer_layer_->SetForceRenderSurface(true); | 871 delegated_renderer_layer_->SetForceRenderSurface(true); |
872 | 872 |
873 LayerTreeHostImpl::FrameData frame; | 873 LayerTreeHostImpl::FrameData frame; |
874 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 874 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
875 | 875 |
876 const SharedQuadState* root_delegated_shared_quad_state = NULL; | 876 const SharedQuadState* root_delegated_shared_quad_state = NULL; |
877 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; | 877 const SharedQuadState* contrib_delegated_shared_quad_state = NULL; |
878 VerifyRenderPasses( | 878 VerifyRenderPasses( |
879 frame, | 879 frame, |
880 3, | 880 3, |
881 &root_delegated_shared_quad_state, | 881 &root_delegated_shared_quad_state, |
882 &contrib_delegated_shared_quad_state); | 882 &contrib_delegated_shared_quad_state); |
883 | 883 |
884 // When the layer owns a surface, then its position and translation are not | 884 // When the layer owns a surface, then its position and translation are not |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 bool clip_delegated_renderer_layer_; | 1088 bool clip_delegated_renderer_layer_; |
1089 }; | 1089 }; |
1090 | 1090 |
1091 TEST_F(DelegatedRendererLayerImplTestClip, | 1091 TEST_F(DelegatedRendererLayerImplTestClip, |
1092 QuadsUnclipped_LayerUnclipped_NoSurface) { | 1092 QuadsUnclipped_LayerUnclipped_NoSurface) { |
1093 root_delegated_render_pass_is_clipped_ = false; | 1093 root_delegated_render_pass_is_clipped_ = false; |
1094 clip_delegated_renderer_layer_ = false; | 1094 clip_delegated_renderer_layer_ = false; |
1095 SetUpTest(); | 1095 SetUpTest(); |
1096 | 1096 |
1097 LayerTreeHostImpl::FrameData frame; | 1097 LayerTreeHostImpl::FrameData frame; |
1098 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1098 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1099 | 1099 |
1100 ASSERT_EQ(2u, frame.render_passes.size()); | 1100 ASSERT_EQ(2u, frame.render_passes.size()); |
1101 const QuadList& contrib_delegated_quad_list = | 1101 const QuadList& contrib_delegated_quad_list = |
1102 frame.render_passes[0]->quad_list; | 1102 frame.render_passes[0]->quad_list; |
1103 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1103 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1104 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1104 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1105 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1105 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1106 const SharedQuadState* root_delegated_shared_quad_state = | 1106 const SharedQuadState* root_delegated_shared_quad_state = |
1107 root_delegated_quad_list[0]->shared_quad_state; | 1107 root_delegated_quad_list[0]->shared_quad_state; |
1108 | 1108 |
1109 // When the quads don't have a clip of their own, the clip rect is set to | 1109 // When the quads don't have a clip of their own, the clip rect is set to |
1110 // the drawable_content_rect of the delegated renderer layer. | 1110 // the drawable_content_rect of the delegated renderer layer. |
1111 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1111 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
1112 root_delegated_shared_quad_state->clip_rect.ToString()); | 1112 root_delegated_shared_quad_state->clip_rect.ToString()); |
1113 // Quads are clipped to the delegated renderer layer. | 1113 // Quads are clipped to the delegated renderer layer. |
1114 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1114 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1115 | 1115 |
1116 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1116 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1117 host_impl_->DidDrawAllLayers(frame); | 1117 host_impl_->DidDrawAllLayers(frame); |
1118 } | 1118 } |
1119 | 1119 |
1120 TEST_F(DelegatedRendererLayerImplTestClip, | 1120 TEST_F(DelegatedRendererLayerImplTestClip, |
1121 QuadsClipped_LayerUnclipped_NoSurface) { | 1121 QuadsClipped_LayerUnclipped_NoSurface) { |
1122 root_delegated_render_pass_is_clipped_ = true; | 1122 root_delegated_render_pass_is_clipped_ = true; |
1123 clip_delegated_renderer_layer_ = false; | 1123 clip_delegated_renderer_layer_ = false; |
1124 SetUpTest(); | 1124 SetUpTest(); |
1125 | 1125 |
1126 LayerTreeHostImpl::FrameData frame; | 1126 LayerTreeHostImpl::FrameData frame; |
1127 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1127 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1128 | 1128 |
1129 ASSERT_EQ(2u, frame.render_passes.size()); | 1129 ASSERT_EQ(2u, frame.render_passes.size()); |
1130 const QuadList& contrib_delegated_quad_list = | 1130 const QuadList& contrib_delegated_quad_list = |
1131 frame.render_passes[0]->quad_list; | 1131 frame.render_passes[0]->quad_list; |
1132 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1132 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1133 const QuadList& root_delegated_quad_list = | 1133 const QuadList& root_delegated_quad_list = |
1134 frame.render_passes[1]->quad_list; | 1134 frame.render_passes[1]->quad_list; |
1135 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1135 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1136 const SharedQuadState* root_delegated_shared_quad_state = | 1136 const SharedQuadState* root_delegated_shared_quad_state = |
1137 root_delegated_quad_list[0]->shared_quad_state; | 1137 root_delegated_quad_list[0]->shared_quad_state; |
1138 | 1138 |
1139 // When the quads have a clip of their own, it is used. | 1139 // When the quads have a clip of their own, it is used. |
1140 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1140 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
1141 root_delegated_shared_quad_state->clip_rect.ToString()); | 1141 root_delegated_shared_quad_state->clip_rect.ToString()); |
1142 // Quads came with a clip rect. | 1142 // Quads came with a clip rect. |
1143 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1143 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1144 | 1144 |
1145 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1145 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1146 host_impl_->DidDrawAllLayers(frame); | 1146 host_impl_->DidDrawAllLayers(frame); |
1147 } | 1147 } |
1148 | 1148 |
1149 TEST_F(DelegatedRendererLayerImplTestClip, | 1149 TEST_F(DelegatedRendererLayerImplTestClip, |
1150 QuadsUnclipped_LayerClipped_NoSurface) { | 1150 QuadsUnclipped_LayerClipped_NoSurface) { |
1151 root_delegated_render_pass_is_clipped_ = false; | 1151 root_delegated_render_pass_is_clipped_ = false; |
1152 clip_delegated_renderer_layer_ = true; | 1152 clip_delegated_renderer_layer_ = true; |
1153 SetUpTest(); | 1153 SetUpTest(); |
1154 | 1154 |
1155 LayerTreeHostImpl::FrameData frame; | 1155 LayerTreeHostImpl::FrameData frame; |
1156 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1156 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1157 | 1157 |
1158 ASSERT_EQ(2u, frame.render_passes.size()); | 1158 ASSERT_EQ(2u, frame.render_passes.size()); |
1159 const QuadList& contrib_delegated_quad_list = | 1159 const QuadList& contrib_delegated_quad_list = |
1160 frame.render_passes[0]->quad_list; | 1160 frame.render_passes[0]->quad_list; |
1161 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1161 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1162 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1162 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1163 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1163 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1164 const SharedQuadState* root_delegated_shared_quad_state = | 1164 const SharedQuadState* root_delegated_shared_quad_state = |
1165 root_delegated_quad_list[0]->shared_quad_state; | 1165 root_delegated_quad_list[0]->shared_quad_state; |
1166 | 1166 |
1167 // When the quads don't have a clip of their own, the clip rect is set to | 1167 // When the quads don't have a clip of their own, the clip rect is set to |
1168 // the drawable_content_rect of the delegated renderer layer. When the layer | 1168 // the drawable_content_rect of the delegated renderer layer. When the layer |
1169 // is clipped, that should be seen in the quads' clip_rect. | 1169 // is clipped, that should be seen in the quads' clip_rect. |
1170 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1170 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
1171 root_delegated_shared_quad_state->clip_rect.ToString()); | 1171 root_delegated_shared_quad_state->clip_rect.ToString()); |
1172 // Quads are clipped to the delegated renderer layer. | 1172 // Quads are clipped to the delegated renderer layer. |
1173 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1173 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1174 | 1174 |
1175 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1175 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1176 host_impl_->DidDrawAllLayers(frame); | 1176 host_impl_->DidDrawAllLayers(frame); |
1177 } | 1177 } |
1178 | 1178 |
1179 TEST_F(DelegatedRendererLayerImplTestClip, | 1179 TEST_F(DelegatedRendererLayerImplTestClip, |
1180 QuadsClipped_LayerClipped_NoSurface) { | 1180 QuadsClipped_LayerClipped_NoSurface) { |
1181 root_delegated_render_pass_is_clipped_ = true; | 1181 root_delegated_render_pass_is_clipped_ = true; |
1182 clip_delegated_renderer_layer_ = true; | 1182 clip_delegated_renderer_layer_ = true; |
1183 SetUpTest(); | 1183 SetUpTest(); |
1184 | 1184 |
1185 LayerTreeHostImpl::FrameData frame; | 1185 LayerTreeHostImpl::FrameData frame; |
1186 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1186 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1187 | 1187 |
1188 ASSERT_EQ(2u, frame.render_passes.size()); | 1188 ASSERT_EQ(2u, frame.render_passes.size()); |
1189 const QuadList& contrib_delegated_quad_list = | 1189 const QuadList& contrib_delegated_quad_list = |
1190 frame.render_passes[0]->quad_list; | 1190 frame.render_passes[0]->quad_list; |
1191 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1191 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1192 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1192 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1193 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1193 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1194 const SharedQuadState* root_delegated_shared_quad_state = | 1194 const SharedQuadState* root_delegated_shared_quad_state = |
1195 root_delegated_quad_list[0]->shared_quad_state; | 1195 root_delegated_quad_list[0]->shared_quad_state; |
1196 | 1196 |
(...skipping 10 matching lines...) Expand all Loading... |
1207 | 1207 |
1208 TEST_F(DelegatedRendererLayerImplTestClip, | 1208 TEST_F(DelegatedRendererLayerImplTestClip, |
1209 QuadsUnclipped_LayerUnclipped_Surface) { | 1209 QuadsUnclipped_LayerUnclipped_Surface) { |
1210 root_delegated_render_pass_is_clipped_ = false; | 1210 root_delegated_render_pass_is_clipped_ = false; |
1211 clip_delegated_renderer_layer_ = false; | 1211 clip_delegated_renderer_layer_ = false; |
1212 SetUpTest(); | 1212 SetUpTest(); |
1213 | 1213 |
1214 delegated_renderer_layer_->SetForceRenderSurface(true); | 1214 delegated_renderer_layer_->SetForceRenderSurface(true); |
1215 | 1215 |
1216 LayerTreeHostImpl::FrameData frame; | 1216 LayerTreeHostImpl::FrameData frame; |
1217 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1217 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1218 | 1218 |
1219 ASSERT_EQ(3u, frame.render_passes.size()); | 1219 ASSERT_EQ(3u, frame.render_passes.size()); |
1220 const QuadList& contrib_delegated_quad_list = | 1220 const QuadList& contrib_delegated_quad_list = |
1221 frame.render_passes[0]->quad_list; | 1221 frame.render_passes[0]->quad_list; |
1222 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1222 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1223 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1223 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1224 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1224 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1225 const SharedQuadState* root_delegated_shared_quad_state = | 1225 const SharedQuadState* root_delegated_shared_quad_state = |
1226 root_delegated_quad_list[0]->shared_quad_state; | 1226 root_delegated_quad_list[0]->shared_quad_state; |
1227 | 1227 |
1228 // When the layer owns a surface, the quads don't need to be clipped | 1228 // When the layer owns a surface, the quads don't need to be clipped |
1229 // further than they already specify. If they aren't clipped, then their | 1229 // further than they already specify. If they aren't clipped, then their |
1230 // clip rect is ignored, and they are not set as clipped. | 1230 // clip rect is ignored, and they are not set as clipped. |
1231 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1231 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1232 | 1232 |
1233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1233 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1234 host_impl_->DidDrawAllLayers(frame); | 1234 host_impl_->DidDrawAllLayers(frame); |
1235 } | 1235 } |
1236 | 1236 |
1237 TEST_F(DelegatedRendererLayerImplTestClip, | 1237 TEST_F(DelegatedRendererLayerImplTestClip, |
1238 QuadsClipped_LayerUnclipped_Surface) { | 1238 QuadsClipped_LayerUnclipped_Surface) { |
1239 root_delegated_render_pass_is_clipped_ = true; | 1239 root_delegated_render_pass_is_clipped_ = true; |
1240 clip_delegated_renderer_layer_ = false; | 1240 clip_delegated_renderer_layer_ = false; |
1241 SetUpTest(); | 1241 SetUpTest(); |
1242 | 1242 |
1243 delegated_renderer_layer_->SetForceRenderSurface(true); | 1243 delegated_renderer_layer_->SetForceRenderSurface(true); |
1244 | 1244 |
1245 LayerTreeHostImpl::FrameData frame; | 1245 LayerTreeHostImpl::FrameData frame; |
1246 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1246 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1247 | 1247 |
1248 ASSERT_EQ(3u, frame.render_passes.size()); | 1248 ASSERT_EQ(3u, frame.render_passes.size()); |
1249 const QuadList& contrib_delegated_quad_list = | 1249 const QuadList& contrib_delegated_quad_list = |
1250 frame.render_passes[0]->quad_list; | 1250 frame.render_passes[0]->quad_list; |
1251 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1251 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1252 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1252 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1253 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1253 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1254 const SharedQuadState* root_delegated_shared_quad_state = | 1254 const SharedQuadState* root_delegated_shared_quad_state = |
1255 root_delegated_quad_list[0]->shared_quad_state; | 1255 root_delegated_quad_list[0]->shared_quad_state; |
1256 | 1256 |
1257 // When the quads have a clip of their own, it is used. | 1257 // When the quads have a clip of their own, it is used. |
1258 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1258 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1259 root_delegated_shared_quad_state->clip_rect.ToString()); | 1259 root_delegated_shared_quad_state->clip_rect.ToString()); |
1260 // Quads came with a clip rect. | 1260 // Quads came with a clip rect. |
1261 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1261 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1262 | 1262 |
1263 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1263 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1264 host_impl_->DidDrawAllLayers(frame); | 1264 host_impl_->DidDrawAllLayers(frame); |
1265 } | 1265 } |
1266 | 1266 |
1267 TEST_F(DelegatedRendererLayerImplTestClip, | 1267 TEST_F(DelegatedRendererLayerImplTestClip, |
1268 QuadsUnclipped_LayerClipped_Surface) { | 1268 QuadsUnclipped_LayerClipped_Surface) { |
1269 root_delegated_render_pass_is_clipped_ = false; | 1269 root_delegated_render_pass_is_clipped_ = false; |
1270 clip_delegated_renderer_layer_ = true; | 1270 clip_delegated_renderer_layer_ = true; |
1271 SetUpTest(); | 1271 SetUpTest(); |
1272 | 1272 |
1273 delegated_renderer_layer_->SetForceRenderSurface(true); | 1273 delegated_renderer_layer_->SetForceRenderSurface(true); |
1274 | 1274 |
1275 LayerTreeHostImpl::FrameData frame; | 1275 LayerTreeHostImpl::FrameData frame; |
1276 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1276 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1277 | 1277 |
1278 ASSERT_EQ(3u, frame.render_passes.size()); | 1278 ASSERT_EQ(3u, frame.render_passes.size()); |
1279 const QuadList& contrib_delegated_quad_list = | 1279 const QuadList& contrib_delegated_quad_list = |
1280 frame.render_passes[0]->quad_list; | 1280 frame.render_passes[0]->quad_list; |
1281 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1281 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1282 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1282 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1283 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1283 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1284 const SharedQuadState* root_delegated_shared_quad_state = | 1284 const SharedQuadState* root_delegated_shared_quad_state = |
1285 root_delegated_quad_list[0]->shared_quad_state; | 1285 root_delegated_quad_list[0]->shared_quad_state; |
1286 | 1286 |
1287 // When the layer owns a surface, the quads don't need to be clipped | 1287 // When the layer owns a surface, the quads don't need to be clipped |
1288 // further than they already specify. If they aren't clipped, then their | 1288 // further than they already specify. If they aren't clipped, then their |
1289 // clip rect is ignored, and they are not set as clipped. | 1289 // clip rect is ignored, and they are not set as clipped. |
1290 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1290 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1291 | 1291 |
1292 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1292 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1293 host_impl_->DidDrawAllLayers(frame); | 1293 host_impl_->DidDrawAllLayers(frame); |
1294 } | 1294 } |
1295 | 1295 |
1296 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1296 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
1297 root_delegated_render_pass_is_clipped_ = true; | 1297 root_delegated_render_pass_is_clipped_ = true; |
1298 clip_delegated_renderer_layer_ = true; | 1298 clip_delegated_renderer_layer_ = true; |
1299 SetUpTest(); | 1299 SetUpTest(); |
1300 | 1300 |
1301 delegated_renderer_layer_->SetForceRenderSurface(true); | 1301 delegated_renderer_layer_->SetForceRenderSurface(true); |
1302 | 1302 |
1303 LayerTreeHostImpl::FrameData frame; | 1303 LayerTreeHostImpl::FrameData frame; |
1304 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1304 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1305 | 1305 |
1306 ASSERT_EQ(3u, frame.render_passes.size()); | 1306 ASSERT_EQ(3u, frame.render_passes.size()); |
1307 const QuadList& contrib_delegated_quad_list = | 1307 const QuadList& contrib_delegated_quad_list = |
1308 frame.render_passes[0]->quad_list; | 1308 frame.render_passes[0]->quad_list; |
1309 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1309 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1310 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1310 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1311 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1311 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1312 const SharedQuadState* root_delegated_shared_quad_state = | 1312 const SharedQuadState* root_delegated_shared_quad_state = |
1313 root_delegated_quad_list[0]->shared_quad_state; | 1313 root_delegated_quad_list[0]->shared_quad_state; |
1314 | 1314 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1358 delegated_renderer_layer->SetFrameDataForRenderPasses( | 1358 delegated_renderer_layer->SetFrameDataForRenderPasses( |
1359 &delegated_render_passes); | 1359 &delegated_render_passes); |
1360 | 1360 |
1361 // The RenderPasses should be taken by the layer. | 1361 // The RenderPasses should be taken by the layer. |
1362 EXPECT_EQ(0u, delegated_render_passes.size()); | 1362 EXPECT_EQ(0u, delegated_render_passes.size()); |
1363 | 1363 |
1364 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 1364 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
1365 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 1365 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
1366 | 1366 |
1367 LayerTreeHostImpl::FrameData frame; | 1367 LayerTreeHostImpl::FrameData frame; |
1368 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame, gfx::Rect())); | 1368 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1369 | 1369 |
1370 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1370 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
1371 ASSERT_EQ(1u, frame.render_passes.size()); | 1371 ASSERT_EQ(1u, frame.render_passes.size()); |
1372 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1372 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
1373 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1373 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
1374 frame.render_passes[0]->quad_list[0]->material); | 1374 frame.render_passes[0]->quad_list[0]->material); |
1375 | 1375 |
1376 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1376 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1377 host_impl_->DidDrawAllLayers(frame); | 1377 host_impl_->DidDrawAllLayers(frame); |
1378 } | 1378 } |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1506 // The occlusion extends to 500 in the x-axis, pushing the left of the | 1506 // The occlusion extends to 500 in the x-axis, pushing the left of the |
1507 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. | 1507 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. |
1508 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), | 1508 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), |
1509 impl.quad_list()[0]->visible_rect.ToString()); | 1509 impl.quad_list()[0]->visible_rect.ToString()); |
1510 } | 1510 } |
1511 } | 1511 } |
1512 } | 1512 } |
1513 | 1513 |
1514 } // namespace | 1514 } // namespace |
1515 } // namespace cc | 1515 } // namespace cc |
OLD | NEW |