Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1389)

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 376683004: Pass resourceless software mode in BeginFrameArgs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tiny clean up Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698