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

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: comment, clang-format 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 valid_for_tile_management = true; 322 // Note viewport is considered invalid if and only if in resourceless
323 // software draw.
324 bool resourceless_software_draw = false;
323 gfx::Rect viewport = gfx::Rect(layer_bounds); 325 gfx::Rect viewport = gfx::Rect(layer_bounds);
324 gfx::Transform transform; 326 gfx::Transform transform;
325 host_impl_.SetExternalDrawConstraints( 327 host_impl_.SetExternalDrawConstraints(
326 transform, viewport, viewport, valid_for_tile_management); 328 transform, viewport, viewport, resourceless_software_draw);
327 active_layer_->draw_properties().visible_content_rect = viewport; 329 active_layer_->draw_properties().visible_content_rect = viewport;
328 active_layer_->draw_properties().screen_space_transform = transform; 330 active_layer_->draw_properties().screen_space_transform = transform;
329 active_layer_->UpdateTiles(NULL); 331 active_layer_->UpdateTiles(NULL);
330 332
331 gfx::Rect visible_rect_for_tile_priority = 333 gfx::Rect visible_rect_for_tile_priority =
332 active_layer_->visible_rect_for_tile_priority(); 334 active_layer_->visible_rect_for_tile_priority();
333 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 335 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
334 gfx::Size viewport_size_for_tile_priority = 336 gfx::Size viewport_size_for_tile_priority =
335 active_layer_->viewport_size_for_tile_priority(); 337 active_layer_->viewport_size_for_tile_priority();
336 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); 338 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty());
337 gfx::Transform screen_space_transform_for_tile_priority = 339 gfx::Transform screen_space_transform_for_tile_priority =
338 active_layer_->screen_space_transform_for_tile_priority(); 340 active_layer_->screen_space_transform_for_tile_priority();
339 341
340 // Expand viewport and set it as invalid for prioritizing tiles. 342 // Expand viewport and set it as invalid for prioritizing tiles.
341 // Should not update tile viewport. 343 // Should not update tile viewport.
342 time_ticks += base::TimeDelta::FromMilliseconds(200); 344 time_ticks += base::TimeDelta::FromMilliseconds(200);
343 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 345 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
344 valid_for_tile_management = false; 346 resourceless_software_draw = true;
345 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 347 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
346 transform.Translate(1.f, 1.f); 348 transform.Translate(1.f, 1.f);
347 active_layer_->draw_properties().visible_content_rect = viewport; 349 active_layer_->draw_properties().visible_content_rect = viewport;
348 active_layer_->draw_properties().screen_space_transform = transform; 350 active_layer_->draw_properties().screen_space_transform = transform;
349 host_impl_.SetExternalDrawConstraints( 351 host_impl_.SetExternalDrawConstraints(
350 transform, viewport, viewport, valid_for_tile_management); 352 transform, viewport, viewport, resourceless_software_draw);
351 active_layer_->UpdateTiles(NULL); 353 active_layer_->UpdateTiles(NULL);
352 354
353 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 355 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
354 active_layer_->visible_rect_for_tile_priority()); 356 active_layer_->visible_rect_for_tile_priority());
355 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, 357 EXPECT_SIZE_EQ(viewport_size_for_tile_priority,
356 active_layer_->viewport_size_for_tile_priority()); 358 active_layer_->viewport_size_for_tile_priority());
357 EXPECT_TRANSFORMATION_MATRIX_EQ( 359 EXPECT_TRANSFORMATION_MATRIX_EQ(
358 screen_space_transform_for_tile_priority, 360 screen_space_transform_for_tile_priority,
359 active_layer_->screen_space_transform_for_tile_priority()); 361 active_layer_->screen_space_transform_for_tile_priority());
360 362
361 // Keep expanded viewport but mark it valid. Should update tile viewport. 363 // Keep expanded viewport but mark it valid. Should update tile viewport.
362 time_ticks += base::TimeDelta::FromMilliseconds(200); 364 time_ticks += base::TimeDelta::FromMilliseconds(200);
363 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 365 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
364 valid_for_tile_management = true; 366 resourceless_software_draw = false;
365 host_impl_.SetExternalDrawConstraints( 367 host_impl_.SetExternalDrawConstraints(
366 transform, viewport, viewport, valid_for_tile_management); 368 transform, viewport, viewport, resourceless_software_draw);
367 active_layer_->UpdateTiles(NULL); 369 active_layer_->UpdateTiles(NULL);
368 370
369 EXPECT_FALSE(visible_rect_for_tile_priority == 371 EXPECT_FALSE(visible_rect_for_tile_priority ==
370 active_layer_->visible_rect_for_tile_priority()); 372 active_layer_->visible_rect_for_tile_priority());
371 EXPECT_FALSE(viewport_size_for_tile_priority == 373 EXPECT_FALSE(viewport_size_for_tile_priority ==
372 active_layer_->viewport_size_for_tile_priority()); 374 active_layer_->viewport_size_for_tile_priority());
373 EXPECT_FALSE(screen_space_transform_for_tile_priority == 375 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
374 active_layer_->screen_space_transform_for_tile_priority()); 376 active_layer_->screen_space_transform_for_tile_priority());
375 } 377 }
376 378
377 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { 379 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) {
378 base::TimeTicks time_ticks; 380 base::TimeTicks time_ticks;
379 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 381 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
380 382
381 gfx::Size tile_size(100, 100); 383 gfx::Size tile_size(100, 100);
382 gfx::Size layer_bounds(400, 400); 384 gfx::Size layer_bounds(400, 400);
383 385
384 scoped_refptr<FakePicturePileImpl> pending_pile = 386 scoped_refptr<FakePicturePileImpl> pending_pile =
385 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 387 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
386 scoped_refptr<FakePicturePileImpl> active_pile = 388 scoped_refptr<FakePicturePileImpl> active_pile =
387 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 389 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
388 390
389 SetupTrees(pending_pile, active_pile); 391 SetupTrees(pending_pile, active_pile);
390 392
391 Region invalidation; 393 Region invalidation;
392 AddDefaultTilingsWithInvalidation(invalidation); 394 AddDefaultTilingsWithInvalidation(invalidation);
393 395
394 bool valid_for_tile_management = false; 396 bool resourceless_software_draw = true;
395 gfx::Rect viewport = gfx::Rect(layer_bounds); 397 gfx::Rect viewport = gfx::Rect(layer_bounds);
396 host_impl_.SetExternalDrawConstraints( 398 host_impl_.SetExternalDrawConstraints(
397 gfx::Transform(), viewport, viewport, valid_for_tile_management); 399 gfx::Transform(), viewport, viewport, resourceless_software_draw);
398 ResetTilingsAndRasterScales(); 400 ResetTilingsAndRasterScales();
399 host_impl_.pending_tree()->UpdateDrawProperties(); 401 host_impl_.pending_tree()->UpdateDrawProperties();
400 host_impl_.active_tree()->UpdateDrawProperties(); 402 host_impl_.active_tree()->UpdateDrawProperties();
401 EXPECT_TRUE(active_layer_->HighResTiling()); 403 EXPECT_TRUE(active_layer_->HighResTiling());
402 404
403 size_t num_tilings = active_layer_->num_tilings(); 405 size_t num_tilings = active_layer_->num_tilings();
404 active_layer_->UpdateTiles(NULL); 406 active_layer_->UpdateTiles(NULL);
405 pending_layer_->AddTiling(0.5f); 407 pending_layer_->AddTiling(0.5f);
406 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); 408 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings());
407 } 409 }
(...skipping 2003 matching lines...) Expand 10 before | Expand all | Expand 10 after
2411 scoped_refptr<FakePicturePileImpl> active_pile = 2413 scoped_refptr<FakePicturePileImpl> active_pile =
2412 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2414 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2413 2415
2414 SetupTrees(pending_pile, active_pile); 2416 SetupTrees(pending_pile, active_pile);
2415 2417
2416 Region invalidation; 2418 Region invalidation;
2417 AddDefaultTilingsWithInvalidation(invalidation); 2419 AddDefaultTilingsWithInvalidation(invalidation);
2418 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); 2420 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false);
2419 2421
2420 // UpdateTiles with valid viewport. Should update tile viewport. 2422 // UpdateTiles with valid viewport. Should update tile viewport.
2421 bool valid_for_tile_management = true; 2423 // Note viewport is considered invalid if and only if in resourceless
2424 // software draw.
2425 bool resourceless_software_draw = false;
2422 gfx::Rect viewport = gfx::Rect(layer_bounds); 2426 gfx::Rect viewport = gfx::Rect(layer_bounds);
2423 gfx::Transform transform; 2427 gfx::Transform transform;
2424 host_impl_.SetExternalDrawConstraints( 2428 host_impl_.SetExternalDrawConstraints(
2425 transform, viewport, viewport, valid_for_tile_management); 2429 transform, viewport, viewport, resourceless_software_draw);
2426 active_layer_->draw_properties().visible_content_rect = viewport; 2430 active_layer_->draw_properties().visible_content_rect = viewport;
2427 active_layer_->draw_properties().screen_space_transform = transform; 2431 active_layer_->draw_properties().screen_space_transform = transform;
2428 active_layer_->UpdateTiles(NULL); 2432 active_layer_->UpdateTiles(NULL);
2429 2433
2430 gfx::Rect visible_rect_for_tile_priority = 2434 gfx::Rect visible_rect_for_tile_priority =
2431 active_layer_->visible_rect_for_tile_priority(); 2435 active_layer_->visible_rect_for_tile_priority();
2432 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 2436 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
2433 gfx::Size viewport_size_for_tile_priority = 2437 gfx::Size viewport_size_for_tile_priority =
2434 active_layer_->viewport_size_for_tile_priority(); 2438 active_layer_->viewport_size_for_tile_priority();
2435 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); 2439 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty());
2436 gfx::Transform screen_space_transform_for_tile_priority = 2440 gfx::Transform screen_space_transform_for_tile_priority =
2437 active_layer_->screen_space_transform_for_tile_priority(); 2441 active_layer_->screen_space_transform_for_tile_priority();
2438 2442
2439 // Expand viewport and set it as invalid for prioritizing tiles. 2443 // Expand viewport and set it as invalid for prioritizing tiles.
2440 // Should not update tile viewport. 2444 // Should not update tile viewport.
2441 time_ticks += base::TimeDelta::FromMilliseconds(200); 2445 time_ticks += base::TimeDelta::FromMilliseconds(200);
2442 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2446 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2443 valid_for_tile_management = false; 2447 resourceless_software_draw = true;
2444 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 2448 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
2445 transform.Translate(1.f, 1.f); 2449 transform.Translate(1.f, 1.f);
2446 active_layer_->draw_properties().visible_content_rect = viewport; 2450 active_layer_->draw_properties().visible_content_rect = viewport;
2447 active_layer_->draw_properties().screen_space_transform = transform; 2451 active_layer_->draw_properties().screen_space_transform = transform;
2448 host_impl_.SetExternalDrawConstraints( 2452 host_impl_.SetExternalDrawConstraints(
2449 transform, viewport, viewport, valid_for_tile_management); 2453 transform, viewport, viewport, resourceless_software_draw);
2450 active_layer_->UpdateTiles(NULL); 2454 active_layer_->UpdateTiles(NULL);
2451 2455
2452 EXPECT_RECT_EQ(visible_rect_for_tile_priority, 2456 EXPECT_RECT_EQ(visible_rect_for_tile_priority,
2453 active_layer_->visible_rect_for_tile_priority()); 2457 active_layer_->visible_rect_for_tile_priority());
2454 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, 2458 EXPECT_SIZE_EQ(viewport_size_for_tile_priority,
2455 active_layer_->viewport_size_for_tile_priority()); 2459 active_layer_->viewport_size_for_tile_priority());
2456 EXPECT_TRANSFORMATION_MATRIX_EQ( 2460 EXPECT_TRANSFORMATION_MATRIX_EQ(
2457 screen_space_transform_for_tile_priority, 2461 screen_space_transform_for_tile_priority,
2458 active_layer_->screen_space_transform_for_tile_priority()); 2462 active_layer_->screen_space_transform_for_tile_priority());
2459 2463
2460 // Keep expanded viewport but mark it valid. Should update tile viewport. 2464 // Keep expanded viewport but mark it valid. Should update tile viewport.
2461 time_ticks += base::TimeDelta::FromMilliseconds(200); 2465 time_ticks += base::TimeDelta::FromMilliseconds(200);
2462 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2466 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2463 valid_for_tile_management = true; 2467 resourceless_software_draw = false;
2464 host_impl_.SetExternalDrawConstraints( 2468 host_impl_.SetExternalDrawConstraints(
2465 transform, viewport, viewport, valid_for_tile_management); 2469 transform, viewport, viewport, resourceless_software_draw);
2466 active_layer_->UpdateTiles(NULL); 2470 active_layer_->UpdateTiles(NULL);
2467 2471
2468 EXPECT_FALSE(visible_rect_for_tile_priority == 2472 EXPECT_FALSE(visible_rect_for_tile_priority ==
2469 active_layer_->visible_rect_for_tile_priority()); 2473 active_layer_->visible_rect_for_tile_priority());
2470 EXPECT_FALSE(viewport_size_for_tile_priority == 2474 EXPECT_FALSE(viewport_size_for_tile_priority ==
2471 active_layer_->viewport_size_for_tile_priority()); 2475 active_layer_->viewport_size_for_tile_priority());
2472 EXPECT_FALSE(screen_space_transform_for_tile_priority == 2476 EXPECT_FALSE(screen_space_transform_for_tile_priority ==
2473 active_layer_->screen_space_transform_for_tile_priority()); 2477 active_layer_->screen_space_transform_for_tile_priority());
2474 } 2478 }
2475 2479
2476 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { 2480 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) {
2477 base::TimeTicks time_ticks; 2481 base::TimeTicks time_ticks;
2478 host_impl_.SetCurrentFrameTimeTicks(time_ticks); 2482 host_impl_.SetCurrentFrameTimeTicks(time_ticks);
2479 2483
2480 gfx::Size tile_size(100, 100); 2484 gfx::Size tile_size(100, 100);
2481 gfx::Size layer_bounds(400, 400); 2485 gfx::Size layer_bounds(400, 400);
2482 2486
2483 scoped_refptr<FakePicturePileImpl> pending_pile = 2487 scoped_refptr<FakePicturePileImpl> pending_pile =
2484 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2488 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2485 scoped_refptr<FakePicturePileImpl> active_pile = 2489 scoped_refptr<FakePicturePileImpl> active_pile =
2486 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); 2490 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds);
2487 2491
2488 SetupTrees(pending_pile, active_pile); 2492 SetupTrees(pending_pile, active_pile);
2489 2493
2490 Region invalidation; 2494 Region invalidation;
2491 AddDefaultTilingsWithInvalidation(invalidation); 2495 AddDefaultTilingsWithInvalidation(invalidation);
2492 2496
2493 bool valid_for_tile_management = false; 2497 bool resourceless_software_draw = true;
2494 gfx::Rect viewport = gfx::Rect(layer_bounds); 2498 gfx::Rect viewport = gfx::Rect(layer_bounds);
2495 host_impl_.SetExternalDrawConstraints( 2499 host_impl_.SetExternalDrawConstraints(
2496 gfx::Transform(), viewport, viewport, valid_for_tile_management); 2500 gfx::Transform(), viewport, viewport, resourceless_software_draw);
2497 ResetTilingsAndRasterScales(); 2501 ResetTilingsAndRasterScales();
2498 host_impl_.pending_tree()->UpdateDrawProperties(); 2502 host_impl_.pending_tree()->UpdateDrawProperties();
2499 host_impl_.active_tree()->UpdateDrawProperties(); 2503 host_impl_.active_tree()->UpdateDrawProperties();
2500 EXPECT_TRUE(active_layer_->HighResTiling()); 2504 EXPECT_TRUE(active_layer_->HighResTiling());
2501 2505
2502 size_t num_tilings = active_layer_->num_tilings(); 2506 size_t num_tilings = active_layer_->num_tilings();
2503 active_layer_->UpdateTiles(NULL); 2507 active_layer_->UpdateTiles(NULL);
2504 pending_layer_->AddTiling(0.5f); 2508 pending_layer_->AddTiling(0.5f);
2505 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); 2509 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings());
2506 } 2510 }
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
3199 // Unshared tiles are occluded on the active tree iff they lie beneath 3203 // Unshared tiles are occluded on the active tree iff they lie beneath
3200 // the occluding layer. 3204 // the occluding layer.
3201 EXPECT_EQ(tile->is_occluded(ACTIVE_TREE), 3205 EXPECT_EQ(tile->is_occluded(ACTIVE_TREE),
3202 scaled_content_rect.x() >= occluding_layer_position.x()); 3206 scaled_content_rect.x() >= occluding_layer_position.x());
3203 } 3207 }
3204 } 3208 }
3205 } 3209 }
3206 } 3210 }
3207 } // namespace 3211 } // namespace
3208 } // namespace cc 3212 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698