OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 #include <utility> | 10 #include <utility> |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
312 scoped_refptr<FakePicturePileImpl> active_pile = | 312 scoped_refptr<FakePicturePileImpl> active_pile = |
313 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 313 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
314 | 314 |
315 SetupTrees(pending_pile, active_pile); | 315 SetupTrees(pending_pile, active_pile); |
316 | 316 |
317 Region invalidation; | 317 Region invalidation; |
318 AddDefaultTilingsWithInvalidation(invalidation); | 318 AddDefaultTilingsWithInvalidation(invalidation); |
319 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 319 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
320 | 320 |
321 // UpdateTiles with valid viewport. Should update tile viewport. | 321 // UpdateTiles with valid viewport. Should update tile viewport. |
322 bool resourceless_software_draw = true; | |
danakj
2014/07/09 17:21:07
why true? i just expected false for some reason..
boliu
2014/07/09 20:59:50
Yep, this is false after valid_for_tile_management
| |
322 bool valid_for_tile_management = true; | 323 bool valid_for_tile_management = true; |
323 gfx::Rect viewport = gfx::Rect(layer_bounds); | 324 gfx::Rect viewport = gfx::Rect(layer_bounds); |
324 gfx::Transform transform; | 325 gfx::Transform transform; |
325 host_impl_.SetExternalDrawConstraints( | 326 host_impl_.SetExternalDrawConstraints(transform, |
326 transform, viewport, viewport, valid_for_tile_management); | 327 viewport, |
328 viewport, | |
329 resourceless_software_draw, | |
330 valid_for_tile_management); | |
327 active_layer_->draw_properties().visible_content_rect = viewport; | 331 active_layer_->draw_properties().visible_content_rect = viewport; |
328 active_layer_->draw_properties().screen_space_transform = transform; | 332 active_layer_->draw_properties().screen_space_transform = transform; |
329 active_layer_->UpdateTiles(NULL); | 333 active_layer_->UpdateTiles(NULL); |
330 | 334 |
331 gfx::Rect visible_rect_for_tile_priority = | 335 gfx::Rect visible_rect_for_tile_priority = |
332 active_layer_->visible_rect_for_tile_priority(); | 336 active_layer_->visible_rect_for_tile_priority(); |
333 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 337 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
334 gfx::Size viewport_size_for_tile_priority = | 338 gfx::Size viewport_size_for_tile_priority = |
335 active_layer_->viewport_size_for_tile_priority(); | 339 active_layer_->viewport_size_for_tile_priority(); |
336 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); | 340 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); |
337 gfx::Transform screen_space_transform_for_tile_priority = | 341 gfx::Transform screen_space_transform_for_tile_priority = |
338 active_layer_->screen_space_transform_for_tile_priority(); | 342 active_layer_->screen_space_transform_for_tile_priority(); |
339 | 343 |
340 // Expand viewport and set it as invalid for prioritizing tiles. | 344 // Expand viewport and set it as invalid for prioritizing tiles. |
341 // Should not update tile viewport. | 345 // Should not update tile viewport. |
342 time_ticks += base::TimeDelta::FromMilliseconds(200); | 346 time_ticks += base::TimeDelta::FromMilliseconds(200); |
343 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 347 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
344 valid_for_tile_management = false; | 348 valid_for_tile_management = false; |
345 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 349 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
346 transform.Translate(1.f, 1.f); | 350 transform.Translate(1.f, 1.f); |
347 active_layer_->draw_properties().visible_content_rect = viewport; | 351 active_layer_->draw_properties().visible_content_rect = viewport; |
348 active_layer_->draw_properties().screen_space_transform = transform; | 352 active_layer_->draw_properties().screen_space_transform = transform; |
349 host_impl_.SetExternalDrawConstraints( | 353 host_impl_.SetExternalDrawConstraints(transform, |
350 transform, viewport, viewport, valid_for_tile_management); | 354 viewport, |
355 viewport, | |
356 resourceless_software_draw, | |
357 valid_for_tile_management); | |
351 active_layer_->UpdateTiles(NULL); | 358 active_layer_->UpdateTiles(NULL); |
352 | 359 |
353 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 360 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
354 active_layer_->visible_rect_for_tile_priority()); | 361 active_layer_->visible_rect_for_tile_priority()); |
355 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, | 362 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, |
356 active_layer_->viewport_size_for_tile_priority()); | 363 active_layer_->viewport_size_for_tile_priority()); |
357 EXPECT_TRANSFORMATION_MATRIX_EQ( | 364 EXPECT_TRANSFORMATION_MATRIX_EQ( |
358 screen_space_transform_for_tile_priority, | 365 screen_space_transform_for_tile_priority, |
359 active_layer_->screen_space_transform_for_tile_priority()); | 366 active_layer_->screen_space_transform_for_tile_priority()); |
360 | 367 |
361 // Keep expanded viewport but mark it valid. Should update tile viewport. | 368 // Keep expanded viewport but mark it valid. Should update tile viewport. |
362 time_ticks += base::TimeDelta::FromMilliseconds(200); | 369 time_ticks += base::TimeDelta::FromMilliseconds(200); |
363 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 370 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
364 valid_for_tile_management = true; | 371 valid_for_tile_management = true; |
365 host_impl_.SetExternalDrawConstraints( | 372 host_impl_.SetExternalDrawConstraints(transform, |
366 transform, viewport, viewport, valid_for_tile_management); | 373 viewport, |
374 viewport, | |
375 resourceless_software_draw, | |
376 valid_for_tile_management); | |
367 active_layer_->UpdateTiles(NULL); | 377 active_layer_->UpdateTiles(NULL); |
368 | 378 |
369 EXPECT_FALSE(visible_rect_for_tile_priority == | 379 EXPECT_FALSE(visible_rect_for_tile_priority == |
370 active_layer_->visible_rect_for_tile_priority()); | 380 active_layer_->visible_rect_for_tile_priority()); |
371 EXPECT_FALSE(viewport_size_for_tile_priority == | 381 EXPECT_FALSE(viewport_size_for_tile_priority == |
372 active_layer_->viewport_size_for_tile_priority()); | 382 active_layer_->viewport_size_for_tile_priority()); |
373 EXPECT_FALSE(screen_space_transform_for_tile_priority == | 383 EXPECT_FALSE(screen_space_transform_for_tile_priority == |
374 active_layer_->screen_space_transform_for_tile_priority()); | 384 active_layer_->screen_space_transform_for_tile_priority()); |
375 } | 385 } |
376 | 386 |
377 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { | 387 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { |
378 base::TimeTicks time_ticks; | 388 base::TimeTicks time_ticks; |
379 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 389 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
380 | 390 |
381 gfx::Size tile_size(100, 100); | 391 gfx::Size tile_size(100, 100); |
382 gfx::Size layer_bounds(400, 400); | 392 gfx::Size layer_bounds(400, 400); |
383 | 393 |
384 scoped_refptr<FakePicturePileImpl> pending_pile = | 394 scoped_refptr<FakePicturePileImpl> pending_pile = |
385 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 395 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
386 scoped_refptr<FakePicturePileImpl> active_pile = | 396 scoped_refptr<FakePicturePileImpl> active_pile = |
387 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 397 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
388 | 398 |
389 SetupTrees(pending_pile, active_pile); | 399 SetupTrees(pending_pile, active_pile); |
390 | 400 |
391 Region invalidation; | 401 Region invalidation; |
392 AddDefaultTilingsWithInvalidation(invalidation); | 402 AddDefaultTilingsWithInvalidation(invalidation); |
393 | 403 |
404 bool resourceless_software_draw = false; | |
394 bool valid_for_tile_management = false; | 405 bool valid_for_tile_management = false; |
395 gfx::Rect viewport = gfx::Rect(layer_bounds); | 406 gfx::Rect viewport = gfx::Rect(layer_bounds); |
396 host_impl_.SetExternalDrawConstraints( | 407 host_impl_.SetExternalDrawConstraints(gfx::Transform(), |
397 gfx::Transform(), viewport, viewport, valid_for_tile_management); | 408 viewport, |
409 viewport, | |
410 resourceless_software_draw, | |
411 valid_for_tile_management); | |
398 ResetTilingsAndRasterScales(); | 412 ResetTilingsAndRasterScales(); |
399 host_impl_.pending_tree()->UpdateDrawProperties(); | 413 host_impl_.pending_tree()->UpdateDrawProperties(); |
400 host_impl_.active_tree()->UpdateDrawProperties(); | 414 host_impl_.active_tree()->UpdateDrawProperties(); |
401 EXPECT_TRUE(active_layer_->HighResTiling()); | 415 EXPECT_TRUE(active_layer_->HighResTiling()); |
402 | 416 |
403 size_t num_tilings = active_layer_->num_tilings(); | 417 size_t num_tilings = active_layer_->num_tilings(); |
404 active_layer_->UpdateTiles(NULL); | 418 active_layer_->UpdateTiles(NULL); |
405 pending_layer_->AddTiling(0.5f); | 419 pending_layer_->AddTiling(0.5f); |
406 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); | 420 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); |
407 } | 421 } |
(...skipping 2003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2411 scoped_refptr<FakePicturePileImpl> active_pile = | 2425 scoped_refptr<FakePicturePileImpl> active_pile = |
2412 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2426 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
2413 | 2427 |
2414 SetupTrees(pending_pile, active_pile); | 2428 SetupTrees(pending_pile, active_pile); |
2415 | 2429 |
2416 Region invalidation; | 2430 Region invalidation; |
2417 AddDefaultTilingsWithInvalidation(invalidation); | 2431 AddDefaultTilingsWithInvalidation(invalidation); |
2418 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 2432 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
2419 | 2433 |
2420 // UpdateTiles with valid viewport. Should update tile viewport. | 2434 // UpdateTiles with valid viewport. Should update tile viewport. |
2435 bool resourceless_software_draw = false; | |
2421 bool valid_for_tile_management = true; | 2436 bool valid_for_tile_management = true; |
2422 gfx::Rect viewport = gfx::Rect(layer_bounds); | 2437 gfx::Rect viewport = gfx::Rect(layer_bounds); |
2423 gfx::Transform transform; | 2438 gfx::Transform transform; |
2424 host_impl_.SetExternalDrawConstraints( | 2439 host_impl_.SetExternalDrawConstraints(transform, |
2425 transform, viewport, viewport, valid_for_tile_management); | 2440 viewport, |
2441 viewport, | |
2442 resourceless_software_draw, | |
2443 valid_for_tile_management); | |
2426 active_layer_->draw_properties().visible_content_rect = viewport; | 2444 active_layer_->draw_properties().visible_content_rect = viewport; |
2427 active_layer_->draw_properties().screen_space_transform = transform; | 2445 active_layer_->draw_properties().screen_space_transform = transform; |
2428 active_layer_->UpdateTiles(NULL); | 2446 active_layer_->UpdateTiles(NULL); |
2429 | 2447 |
2430 gfx::Rect visible_rect_for_tile_priority = | 2448 gfx::Rect visible_rect_for_tile_priority = |
2431 active_layer_->visible_rect_for_tile_priority(); | 2449 active_layer_->visible_rect_for_tile_priority(); |
2432 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 2450 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
2433 gfx::Size viewport_size_for_tile_priority = | 2451 gfx::Size viewport_size_for_tile_priority = |
2434 active_layer_->viewport_size_for_tile_priority(); | 2452 active_layer_->viewport_size_for_tile_priority(); |
2435 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); | 2453 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); |
2436 gfx::Transform screen_space_transform_for_tile_priority = | 2454 gfx::Transform screen_space_transform_for_tile_priority = |
2437 active_layer_->screen_space_transform_for_tile_priority(); | 2455 active_layer_->screen_space_transform_for_tile_priority(); |
2438 | 2456 |
2439 // Expand viewport and set it as invalid for prioritizing tiles. | 2457 // Expand viewport and set it as invalid for prioritizing tiles. |
2440 // Should not update tile viewport. | 2458 // Should not update tile viewport. |
2441 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2459 time_ticks += base::TimeDelta::FromMilliseconds(200); |
2442 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2460 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
2443 valid_for_tile_management = false; | 2461 valid_for_tile_management = false; |
2444 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 2462 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
2445 transform.Translate(1.f, 1.f); | 2463 transform.Translate(1.f, 1.f); |
2446 active_layer_->draw_properties().visible_content_rect = viewport; | 2464 active_layer_->draw_properties().visible_content_rect = viewport; |
2447 active_layer_->draw_properties().screen_space_transform = transform; | 2465 active_layer_->draw_properties().screen_space_transform = transform; |
2448 host_impl_.SetExternalDrawConstraints( | 2466 host_impl_.SetExternalDrawConstraints(transform, |
2449 transform, viewport, viewport, valid_for_tile_management); | 2467 viewport, |
2468 viewport, | |
2469 resourceless_software_draw, | |
2470 valid_for_tile_management); | |
2450 active_layer_->UpdateTiles(NULL); | 2471 active_layer_->UpdateTiles(NULL); |
2451 | 2472 |
2452 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 2473 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
2453 active_layer_->visible_rect_for_tile_priority()); | 2474 active_layer_->visible_rect_for_tile_priority()); |
2454 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, | 2475 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, |
2455 active_layer_->viewport_size_for_tile_priority()); | 2476 active_layer_->viewport_size_for_tile_priority()); |
2456 EXPECT_TRANSFORMATION_MATRIX_EQ( | 2477 EXPECT_TRANSFORMATION_MATRIX_EQ( |
2457 screen_space_transform_for_tile_priority, | 2478 screen_space_transform_for_tile_priority, |
2458 active_layer_->screen_space_transform_for_tile_priority()); | 2479 active_layer_->screen_space_transform_for_tile_priority()); |
2459 | 2480 |
2460 // Keep expanded viewport but mark it valid. Should update tile viewport. | 2481 // Keep expanded viewport but mark it valid. Should update tile viewport. |
2461 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2482 time_ticks += base::TimeDelta::FromMilliseconds(200); |
2462 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2483 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
2463 valid_for_tile_management = true; | 2484 valid_for_tile_management = true; |
2464 host_impl_.SetExternalDrawConstraints( | 2485 host_impl_.SetExternalDrawConstraints(transform, |
2465 transform, viewport, viewport, valid_for_tile_management); | 2486 viewport, |
2487 viewport, | |
2488 resourceless_software_draw, | |
2489 valid_for_tile_management); | |
2466 active_layer_->UpdateTiles(NULL); | 2490 active_layer_->UpdateTiles(NULL); |
2467 | 2491 |
2468 EXPECT_FALSE(visible_rect_for_tile_priority == | 2492 EXPECT_FALSE(visible_rect_for_tile_priority == |
2469 active_layer_->visible_rect_for_tile_priority()); | 2493 active_layer_->visible_rect_for_tile_priority()); |
2470 EXPECT_FALSE(viewport_size_for_tile_priority == | 2494 EXPECT_FALSE(viewport_size_for_tile_priority == |
2471 active_layer_->viewport_size_for_tile_priority()); | 2495 active_layer_->viewport_size_for_tile_priority()); |
2472 EXPECT_FALSE(screen_space_transform_for_tile_priority == | 2496 EXPECT_FALSE(screen_space_transform_for_tile_priority == |
2473 active_layer_->screen_space_transform_for_tile_priority()); | 2497 active_layer_->screen_space_transform_for_tile_priority()); |
2474 } | 2498 } |
2475 | 2499 |
2476 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { | 2500 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { |
2477 base::TimeTicks time_ticks; | 2501 base::TimeTicks time_ticks; |
2478 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2502 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
2479 | 2503 |
2480 gfx::Size tile_size(100, 100); | 2504 gfx::Size tile_size(100, 100); |
2481 gfx::Size layer_bounds(400, 400); | 2505 gfx::Size layer_bounds(400, 400); |
2482 | 2506 |
2483 scoped_refptr<FakePicturePileImpl> pending_pile = | 2507 scoped_refptr<FakePicturePileImpl> pending_pile = |
2484 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2508 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
2485 scoped_refptr<FakePicturePileImpl> active_pile = | 2509 scoped_refptr<FakePicturePileImpl> active_pile = |
2486 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2510 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
2487 | 2511 |
2488 SetupTrees(pending_pile, active_pile); | 2512 SetupTrees(pending_pile, active_pile); |
2489 | 2513 |
2490 Region invalidation; | 2514 Region invalidation; |
2491 AddDefaultTilingsWithInvalidation(invalidation); | 2515 AddDefaultTilingsWithInvalidation(invalidation); |
2492 | 2516 |
2517 bool resourceless_software_draw = false; | |
2493 bool valid_for_tile_management = false; | 2518 bool valid_for_tile_management = false; |
2494 gfx::Rect viewport = gfx::Rect(layer_bounds); | 2519 gfx::Rect viewport = gfx::Rect(layer_bounds); |
2495 host_impl_.SetExternalDrawConstraints( | 2520 host_impl_.SetExternalDrawConstraints(gfx::Transform(), |
2496 gfx::Transform(), viewport, viewport, valid_for_tile_management); | 2521 viewport, |
2522 viewport, | |
2523 resourceless_software_draw, | |
2524 valid_for_tile_management); | |
2497 ResetTilingsAndRasterScales(); | 2525 ResetTilingsAndRasterScales(); |
2498 host_impl_.pending_tree()->UpdateDrawProperties(); | 2526 host_impl_.pending_tree()->UpdateDrawProperties(); |
2499 host_impl_.active_tree()->UpdateDrawProperties(); | 2527 host_impl_.active_tree()->UpdateDrawProperties(); |
2500 EXPECT_TRUE(active_layer_->HighResTiling()); | 2528 EXPECT_TRUE(active_layer_->HighResTiling()); |
2501 | 2529 |
2502 size_t num_tilings = active_layer_->num_tilings(); | 2530 size_t num_tilings = active_layer_->num_tilings(); |
2503 active_layer_->UpdateTiles(NULL); | 2531 active_layer_->UpdateTiles(NULL); |
2504 pending_layer_->AddTiling(0.5f); | 2532 pending_layer_->AddTiling(0.5f); |
2505 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); | 2533 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); |
2506 } | 2534 } |
(...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3095 NOTREACHED(); | 3123 NOTREACHED(); |
3096 } | 3124 } |
3097 | 3125 |
3098 tiling_count++; | 3126 tiling_count++; |
3099 } | 3127 } |
3100 | 3128 |
3101 EXPECT_EQ(tiling_count, 5); | 3129 EXPECT_EQ(tiling_count, 5); |
3102 } | 3130 } |
3103 } // namespace | 3131 } // namespace |
3104 } // namespace cc | 3132 } // namespace cc |
OLD | NEW |