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