| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 2318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2329 private: | 2329 private: |
| 2330 int num_will_begin_impl_frame_; | 2330 int num_will_begin_impl_frame_; |
| 2331 int num_send_begin_main_frame_; | 2331 int num_send_begin_main_frame_; |
| 2332 }; | 2332 }; |
| 2333 | 2333 |
| 2334 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits); | 2334 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits); |
| 2335 | 2335 |
| 2336 class LayerTreeHostWithProxy : public LayerTreeHost { | 2336 class LayerTreeHostWithProxy : public LayerTreeHost { |
| 2337 public: | 2337 public: |
| 2338 LayerTreeHostWithProxy(FakeLayerTreeHostClient* client, | 2338 LayerTreeHostWithProxy(FakeLayerTreeHostClient* client, |
| 2339 const LayerTreeSettings& settings, | 2339 scoped_ptr<FakeProxy> proxy, |
| 2340 scoped_ptr<FakeProxy> proxy) | 2340 LayerTreeHost::InitParams* params) |
| 2341 : LayerTreeHost(client, NULL, NULL, NULL, settings) { | 2341 : LayerTreeHost(params) { |
| 2342 proxy->SetLayerTreeHost(this); | 2342 proxy->SetLayerTreeHost(this); |
| 2343 client->SetLayerTreeHost(this); | 2343 client->SetLayerTreeHost(this); |
| 2344 InitializeForTesting(proxy.Pass()); | 2344 InitializeForTesting(proxy.Pass()); |
| 2345 } | 2345 } |
| 2346 }; | 2346 }; |
| 2347 | 2347 |
| 2348 TEST(LayerTreeHostTest, LimitPartialUpdates) { | 2348 TEST(LayerTreeHostTest, LimitPartialUpdates) { |
| 2349 // When partial updates are not allowed, max updates should be 0. | 2349 // When partial updates are not allowed, max updates should be 0. |
| 2350 { | 2350 { |
| 2351 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); | 2351 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); |
| 2352 | 2352 |
| 2353 scoped_ptr<FakeProxy> proxy(new FakeProxy); | 2353 scoped_ptr<FakeProxy> proxy(new FakeProxy); |
| 2354 proxy->GetRendererCapabilities().allow_partial_texture_updates = false; | 2354 proxy->GetRendererCapabilities().allow_partial_texture_updates = false; |
| 2355 proxy->SetMaxPartialTextureUpdates(5); | 2355 proxy->SetMaxPartialTextureUpdates(5); |
| 2356 | 2356 |
| 2357 LayerTreeSettings settings; | 2357 LayerTreeSettings settings; |
| 2358 settings.impl_side_painting = false; | 2358 settings.impl_side_painting = false; |
| 2359 settings.max_partial_texture_updates = 10; | 2359 settings.max_partial_texture_updates = 10; |
| 2360 | 2360 |
| 2361 LayerTreeHostWithProxy host(&client, settings, proxy.Pass()); | 2361 LayerTreeHost::InitParams params; |
| 2362 params.client = &client; |
| 2363 params.settings = &settings; |
| 2364 LayerTreeHostWithProxy host(&client, proxy.Pass(), ¶ms); |
| 2362 | 2365 |
| 2363 EXPECT_EQ(0u, host.MaxPartialTextureUpdates()); | 2366 EXPECT_EQ(0u, host.MaxPartialTextureUpdates()); |
| 2364 } | 2367 } |
| 2365 | 2368 |
| 2366 // When partial updates are allowed, | 2369 // When partial updates are allowed, |
| 2367 // max updates should be limited by the proxy. | 2370 // max updates should be limited by the proxy. |
| 2368 { | 2371 { |
| 2369 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); | 2372 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); |
| 2370 | 2373 |
| 2371 scoped_ptr<FakeProxy> proxy(new FakeProxy); | 2374 scoped_ptr<FakeProxy> proxy(new FakeProxy); |
| 2372 proxy->GetRendererCapabilities().allow_partial_texture_updates = true; | 2375 proxy->GetRendererCapabilities().allow_partial_texture_updates = true; |
| 2373 proxy->SetMaxPartialTextureUpdates(5); | 2376 proxy->SetMaxPartialTextureUpdates(5); |
| 2374 | 2377 |
| 2375 LayerTreeSettings settings; | 2378 LayerTreeSettings settings; |
| 2376 settings.impl_side_painting = false; | 2379 settings.impl_side_painting = false; |
| 2377 settings.max_partial_texture_updates = 10; | 2380 settings.max_partial_texture_updates = 10; |
| 2378 | 2381 |
| 2379 LayerTreeHostWithProxy host(&client, settings, proxy.Pass()); | 2382 LayerTreeHost::InitParams params; |
| 2383 params.client = &client; |
| 2384 params.settings = &settings; |
| 2385 LayerTreeHostWithProxy host(&client, proxy.Pass(), ¶ms); |
| 2380 | 2386 |
| 2381 EXPECT_EQ(5u, host.MaxPartialTextureUpdates()); | 2387 EXPECT_EQ(5u, host.MaxPartialTextureUpdates()); |
| 2382 } | 2388 } |
| 2383 | 2389 |
| 2384 // When partial updates are allowed, | 2390 // When partial updates are allowed, |
| 2385 // max updates should also be limited by the settings. | 2391 // max updates should also be limited by the settings. |
| 2386 { | 2392 { |
| 2387 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); | 2393 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); |
| 2388 | 2394 |
| 2389 scoped_ptr<FakeProxy> proxy(new FakeProxy); | 2395 scoped_ptr<FakeProxy> proxy(new FakeProxy); |
| 2390 proxy->GetRendererCapabilities().allow_partial_texture_updates = true; | 2396 proxy->GetRendererCapabilities().allow_partial_texture_updates = true; |
| 2391 proxy->SetMaxPartialTextureUpdates(20); | 2397 proxy->SetMaxPartialTextureUpdates(20); |
| 2392 | 2398 |
| 2393 LayerTreeSettings settings; | 2399 LayerTreeSettings settings; |
| 2394 settings.impl_side_painting = false; | 2400 settings.impl_side_painting = false; |
| 2395 settings.max_partial_texture_updates = 10; | 2401 settings.max_partial_texture_updates = 10; |
| 2396 | 2402 |
| 2397 LayerTreeHostWithProxy host(&client, settings, proxy.Pass()); | 2403 LayerTreeHost::InitParams params; |
| 2404 params.client = &client; |
| 2405 params.settings = &settings; |
| 2406 LayerTreeHostWithProxy host(&client, proxy.Pass(), ¶ms); |
| 2398 | 2407 |
| 2399 EXPECT_EQ(10u, host.MaxPartialTextureUpdates()); | 2408 EXPECT_EQ(10u, host.MaxPartialTextureUpdates()); |
| 2400 } | 2409 } |
| 2401 } | 2410 } |
| 2402 | 2411 |
| 2403 TEST(LayerTreeHostTest, PartialUpdatesWithGLRenderer) { | 2412 TEST(LayerTreeHostTest, PartialUpdatesWithGLRenderer) { |
| 2404 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); | 2413 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); |
| 2405 | 2414 |
| 2406 LayerTreeSettings settings; | 2415 LayerTreeSettings settings; |
| 2407 settings.max_partial_texture_updates = 4; | 2416 settings.max_partial_texture_updates = 4; |
| 2408 settings.single_thread_proxy_scheduler = false; | 2417 settings.single_thread_proxy_scheduler = false; |
| 2409 settings.impl_side_painting = false; | 2418 settings.impl_side_painting = false; |
| 2410 | 2419 |
| 2411 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 2420 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 2412 new TestSharedBitmapManager()); | 2421 new TestSharedBitmapManager()); |
| 2413 scoped_ptr<LayerTreeHost> host = LayerTreeHost::CreateSingleThreaded( | 2422 LayerTreeHost::InitParams params; |
| 2414 &client, &client, shared_bitmap_manager.get(), NULL, NULL, settings, | 2423 params.client = &client; |
| 2415 base::ThreadTaskRunnerHandle::Get(), nullptr); | 2424 params.shared_bitmap_manager = shared_bitmap_manager.get(); |
| 2425 params.settings = &settings; |
| 2426 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); |
| 2427 scoped_ptr<LayerTreeHost> host = |
| 2428 LayerTreeHost::CreateSingleThreaded(&client, ¶ms); |
| 2416 client.SetLayerTreeHost(host.get()); | 2429 client.SetLayerTreeHost(host.get()); |
| 2417 host->Composite(base::TimeTicks::Now()); | 2430 host->Composite(base::TimeTicks::Now()); |
| 2418 | 2431 |
| 2419 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); | 2432 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); |
| 2420 } | 2433 } |
| 2421 | 2434 |
| 2422 TEST(LayerTreeHostTest, PartialUpdatesWithSoftwareRenderer) { | 2435 TEST(LayerTreeHostTest, PartialUpdatesWithSoftwareRenderer) { |
| 2423 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_SOFTWARE); | 2436 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_SOFTWARE); |
| 2424 | 2437 |
| 2425 LayerTreeSettings settings; | 2438 LayerTreeSettings settings; |
| 2426 settings.max_partial_texture_updates = 4; | 2439 settings.max_partial_texture_updates = 4; |
| 2427 settings.single_thread_proxy_scheduler = false; | 2440 settings.single_thread_proxy_scheduler = false; |
| 2428 settings.impl_side_painting = false; | 2441 settings.impl_side_painting = false; |
| 2429 | 2442 |
| 2430 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 2443 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 2431 new TestSharedBitmapManager()); | 2444 new TestSharedBitmapManager()); |
| 2432 scoped_ptr<LayerTreeHost> host = LayerTreeHost::CreateSingleThreaded( | 2445 LayerTreeHost::InitParams params; |
| 2433 &client, &client, shared_bitmap_manager.get(), NULL, NULL, settings, | 2446 params.client = &client; |
| 2434 base::ThreadTaskRunnerHandle::Get(), nullptr); | 2447 params.shared_bitmap_manager = shared_bitmap_manager.get(); |
| 2448 params.settings = &settings; |
| 2449 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); |
| 2450 scoped_ptr<LayerTreeHost> host = |
| 2451 LayerTreeHost::CreateSingleThreaded(&client, ¶ms); |
| 2435 client.SetLayerTreeHost(host.get()); | 2452 client.SetLayerTreeHost(host.get()); |
| 2436 host->Composite(base::TimeTicks::Now()); | 2453 host->Composite(base::TimeTicks::Now()); |
| 2437 | 2454 |
| 2438 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); | 2455 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); |
| 2439 } | 2456 } |
| 2440 | 2457 |
| 2441 TEST(LayerTreeHostTest, PartialUpdatesWithDelegatingRendererAndGLContent) { | 2458 TEST(LayerTreeHostTest, PartialUpdatesWithDelegatingRendererAndGLContent) { |
| 2442 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_3D); | 2459 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_3D); |
| 2443 | 2460 |
| 2444 LayerTreeSettings settings; | 2461 LayerTreeSettings settings; |
| 2445 settings.max_partial_texture_updates = 4; | 2462 settings.max_partial_texture_updates = 4; |
| 2446 settings.single_thread_proxy_scheduler = false; | 2463 settings.single_thread_proxy_scheduler = false; |
| 2447 settings.impl_side_painting = false; | 2464 settings.impl_side_painting = false; |
| 2448 | 2465 |
| 2449 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 2466 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 2450 new TestSharedBitmapManager()); | 2467 new TestSharedBitmapManager()); |
| 2451 scoped_ptr<LayerTreeHost> host = LayerTreeHost::CreateSingleThreaded( | 2468 LayerTreeHost::InitParams params; |
| 2452 &client, &client, shared_bitmap_manager.get(), NULL, NULL, settings, | 2469 params.client = &client; |
| 2453 base::ThreadTaskRunnerHandle::Get(), nullptr); | 2470 params.shared_bitmap_manager = shared_bitmap_manager.get(); |
| 2471 params.settings = &settings; |
| 2472 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); |
| 2473 scoped_ptr<LayerTreeHost> host = |
| 2474 LayerTreeHost::CreateSingleThreaded(&client, ¶ms); |
| 2454 client.SetLayerTreeHost(host.get()); | 2475 client.SetLayerTreeHost(host.get()); |
| 2455 host->Composite(base::TimeTicks::Now()); | 2476 host->Composite(base::TimeTicks::Now()); |
| 2456 | 2477 |
| 2457 EXPECT_EQ(0u, host->MaxPartialTextureUpdates()); | 2478 EXPECT_EQ(0u, host->MaxPartialTextureUpdates()); |
| 2458 } | 2479 } |
| 2459 | 2480 |
| 2460 TEST(LayerTreeHostTest, | 2481 TEST(LayerTreeHostTest, |
| 2461 PartialUpdatesWithDelegatingRendererAndSoftwareContent) { | 2482 PartialUpdatesWithDelegatingRendererAndSoftwareContent) { |
| 2462 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_SOFTWARE); | 2483 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_SOFTWARE); |
| 2463 | 2484 |
| 2464 LayerTreeSettings settings; | 2485 LayerTreeSettings settings; |
| 2465 settings.max_partial_texture_updates = 4; | 2486 settings.max_partial_texture_updates = 4; |
| 2466 settings.single_thread_proxy_scheduler = false; | 2487 settings.single_thread_proxy_scheduler = false; |
| 2467 settings.impl_side_painting = false; | 2488 settings.impl_side_painting = false; |
| 2468 | 2489 |
| 2469 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 2490 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
| 2470 new TestSharedBitmapManager()); | 2491 new TestSharedBitmapManager()); |
| 2471 scoped_ptr<LayerTreeHost> host = LayerTreeHost::CreateSingleThreaded( | 2492 LayerTreeHost::InitParams params; |
| 2472 &client, &client, shared_bitmap_manager.get(), NULL, NULL, settings, | 2493 params.client = &client; |
| 2473 base::ThreadTaskRunnerHandle::Get(), nullptr); | 2494 params.shared_bitmap_manager = shared_bitmap_manager.get(); |
| 2495 params.settings = &settings; |
| 2496 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); |
| 2497 scoped_ptr<LayerTreeHost> host = |
| 2498 LayerTreeHost::CreateSingleThreaded(&client, ¶ms); |
| 2474 client.SetLayerTreeHost(host.get()); | 2499 client.SetLayerTreeHost(host.get()); |
| 2475 host->Composite(base::TimeTicks::Now()); | 2500 host->Composite(base::TimeTicks::Now()); |
| 2476 | 2501 |
| 2477 EXPECT_EQ(0u, host->MaxPartialTextureUpdates()); | 2502 EXPECT_EQ(0u, host->MaxPartialTextureUpdates()); |
| 2478 } | 2503 } |
| 2479 | 2504 |
| 2480 // TODO(sohanjg) : Remove it once impl-side painting ships everywhere. | 2505 // TODO(sohanjg) : Remove it once impl-side painting ships everywhere. |
| 2481 class LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted | 2506 class LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted |
| 2482 : public LayerTreeHostTest { | 2507 : public LayerTreeHostTest { |
| 2483 public: | 2508 public: |
| (...skipping 4541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7025 void AfterTest() override {} | 7050 void AfterTest() override {} |
| 7026 | 7051 |
| 7027 scoped_refptr<FakePictureLayer> content_child_layer_; | 7052 scoped_refptr<FakePictureLayer> content_child_layer_; |
| 7028 FakeContentLayerClient client_; | 7053 FakeContentLayerClient client_; |
| 7029 }; | 7054 }; |
| 7030 | 7055 |
| 7031 SINGLE_AND_MULTI_THREAD_TEST_F( | 7056 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 7032 LayerTreeTestReflectionMaskLayerForSurfaceWithUnclippedChild); | 7057 LayerTreeTestReflectionMaskLayerForSurfaceWithUnclippedChild); |
| 7033 | 7058 |
| 7034 } // namespace cc | 7059 } // namespace cc |
| OLD | NEW |