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 2102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2113 FROM_HERE, | 2113 FROM_HERE, |
2114 base::Bind( | 2114 base::Bind( |
2115 &LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor:: | 2115 &LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor:: |
2116 CallOnDraw, | 2116 CallOnDraw, |
2117 base::Unretained(this))); | 2117 base::Unretained(this))); |
2118 } | 2118 } |
2119 | 2119 |
2120 void CallOnDraw() { | 2120 void CallOnDraw() { |
2121 // Synchronous compositor does not draw unless told to do so by the output | 2121 // Synchronous compositor does not draw unless told to do so by the output |
2122 // surface. | 2122 // surface. |
2123 output_surface()->client()->OnDraw(); | 2123 gfx::Transform identity; |
| 2124 gfx::Rect empty_rect; |
| 2125 bool resourceless_software_draw = false; |
| 2126 output_surface()->client()->OnDraw(identity, empty_rect, empty_rect, |
| 2127 resourceless_software_draw); |
2124 } | 2128 } |
2125 }; | 2129 }; |
2126 | 2130 |
2127 MULTI_THREAD_TEST_F( | 2131 MULTI_THREAD_TEST_F( |
2128 LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor); | 2132 LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor); |
2129 | 2133 |
2130 class LayerTreeHostTestAbortedCommitDoesntStallDisabledVsync | 2134 class LayerTreeHostTestAbortedCommitDoesntStallDisabledVsync |
2131 : public LayerTreeHostTestAbortedCommitDoesntStall { | 2135 : public LayerTreeHostTestAbortedCommitDoesntStall { |
2132 void InitializeSettings(LayerTreeSettings* settings) override { | 2136 void InitializeSettings(LayerTreeSettings* settings) override { |
2133 LayerTreeHostTestAbortedCommitDoesntStall::InitializeSettings(settings); | 2137 LayerTreeHostTestAbortedCommitDoesntStall::InitializeSettings(settings); |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2415 void AfterTest() override {} | 2419 void AfterTest() override {} |
2416 | 2420 |
2417 protected: | 2421 protected: |
2418 int frame_; | 2422 int frame_; |
2419 }; | 2423 }; |
2420 | 2424 |
2421 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNumFramesPending); | 2425 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestNumFramesPending); |
2422 | 2426 |
2423 class LayerTreeHostTestResourcelessSoftwareDraw : public LayerTreeHostTest { | 2427 class LayerTreeHostTestResourcelessSoftwareDraw : public LayerTreeHostTest { |
2424 public: | 2428 public: |
| 2429 void InitializeSettings(LayerTreeSettings* settings) override { |
| 2430 settings->using_synchronous_renderer_compositor = true; |
| 2431 } |
| 2432 |
2425 void SetupTree() override { | 2433 void SetupTree() override { |
2426 root_layer_ = FakePictureLayer::Create(layer_settings(), &client_); | 2434 root_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
2427 root_layer_->SetIsDrawable(true); | 2435 root_layer_->SetIsDrawable(true); |
2428 root_layer_->SetBounds(gfx::Size(50, 50)); | 2436 root_layer_->SetBounds(gfx::Size(50, 50)); |
2429 | 2437 |
2430 parent_layer_ = FakePictureLayer::Create(layer_settings(), &client_); | 2438 parent_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
2431 parent_layer_->SetIsDrawable(true); | 2439 parent_layer_->SetIsDrawable(true); |
2432 parent_layer_->SetBounds(gfx::Size(50, 50)); | 2440 parent_layer_->SetBounds(gfx::Size(50, 50)); |
2433 parent_layer_->SetForceRenderSurface(true); | 2441 parent_layer_->SetForceRenderSurface(true); |
2434 | 2442 |
(...skipping 17 matching lines...) Expand all Loading... |
2452 return FakeOutputSurface::CreateSoftware( | 2460 return FakeOutputSurface::CreateSoftware( |
2453 make_scoped_ptr(new SoftwareOutputDevice)); | 2461 make_scoped_ptr(new SoftwareOutputDevice)); |
2454 } | 2462 } |
2455 } | 2463 } |
2456 | 2464 |
2457 void BeginTest() override { | 2465 void BeginTest() override { |
2458 PostSetNeedsCommitToMainThread(); | 2466 PostSetNeedsCommitToMainThread(); |
2459 swap_count_ = 0; | 2467 swap_count_ = 0; |
2460 } | 2468 } |
2461 | 2469 |
| 2470 void ScheduledActionInvalidateOutputSurface() override { |
| 2471 if (TestEnded()) |
| 2472 return; |
| 2473 |
| 2474 ImplThreadTaskRunner()->PostTask( |
| 2475 FROM_HERE, |
| 2476 base::Bind(&LayerTreeHostTestResourcelessSoftwareDraw::CallOnDraw, |
| 2477 base::Unretained(this))); |
| 2478 } |
| 2479 |
| 2480 void CallOnDraw() { |
| 2481 gfx::Transform identity; |
| 2482 gfx::Rect empty_rect; |
| 2483 bool resourceless_software_draw = true; |
| 2484 output_surface()->client()->OnDraw(identity, empty_rect, empty_rect, |
| 2485 resourceless_software_draw); |
| 2486 } |
| 2487 |
2462 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 2488 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
2463 LayerTreeHostImpl::FrameData* frame_data, | 2489 LayerTreeHostImpl::FrameData* frame_data, |
2464 DrawResult draw_result) override { | 2490 DrawResult draw_result) override { |
2465 if (host_impl->GetDrawMode() == DRAW_MODE_RESOURCELESS_SOFTWARE) { | 2491 if (host_impl->GetDrawMode() == DRAW_MODE_RESOURCELESS_SOFTWARE) { |
2466 EXPECT_EQ(1u, frame_data->render_passes.size()); | 2492 EXPECT_EQ(1u, frame_data->render_passes.size()); |
2467 // Has at least 3 quads for each layer. | 2493 // Has at least 3 quads for each layer. |
2468 RenderPass* render_pass = frame_data->render_passes[0].get(); | 2494 RenderPass* render_pass = frame_data->render_passes[0].get(); |
2469 EXPECT_GE(render_pass->quad_list.size(), 3u); | 2495 EXPECT_GE(render_pass->quad_list.size(), 3u); |
2470 } else { | 2496 } else { |
2471 EXPECT_EQ(2u, frame_data->render_passes.size()); | 2497 EXPECT_EQ(2u, frame_data->render_passes.size()); |
2472 | 2498 |
2473 // At least root layer quad in root render pass. | 2499 // At least root layer quad in root render pass. |
2474 EXPECT_GE(frame_data->render_passes[0]->quad_list.size(), 1u); | 2500 EXPECT_GE(frame_data->render_passes[0]->quad_list.size(), 1u); |
2475 // At least parent and child layer quads in parent render pass. | 2501 // At least parent and child layer quads in parent render pass. |
2476 EXPECT_GE(frame_data->render_passes[1]->quad_list.size(), 2u); | 2502 EXPECT_GE(frame_data->render_passes[1]->quad_list.size(), 2u); |
2477 } | 2503 } |
2478 return draw_result; | 2504 return draw_result; |
2479 } | 2505 } |
2480 | 2506 |
2481 void SwapBuffersCompleteOnThread(LayerTreeHostImpl* host_impl) override { | 2507 void SwapBuffersCompleteOnThread(LayerTreeHostImpl* host_impl) override { |
2482 swap_count_++; | 2508 swap_count_++; |
2483 switch (swap_count_) { | 2509 switch (swap_count_) { |
2484 case 1: { | 2510 case 1: |
2485 gfx::Transform identity; | |
2486 gfx::Rect empty_rect; | |
2487 bool resourceless_software_draw = true; | |
2488 host_impl->SetExternalDrawConstraints(identity, empty_rect, empty_rect, | |
2489 empty_rect, identity, | |
2490 resourceless_software_draw); | |
2491 host_impl->SetFullRootLayerDamage(); | |
2492 host_impl->SetNeedsRedraw(); | 2511 host_impl->SetNeedsRedraw(); |
2493 break; | 2512 break; |
2494 } | |
2495 case 2: | 2513 case 2: |
2496 EndTest(); | 2514 EndTest(); |
2497 break; | 2515 break; |
2498 default: | 2516 default: |
2499 NOTREACHED(); | 2517 NOTREACHED(); |
2500 } | 2518 } |
2501 } | 2519 } |
2502 | 2520 |
2503 void AfterTest() override {} | 2521 void AfterTest() override {} |
2504 | 2522 |
(...skipping 4040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6545 EndTest(); | 6563 EndTest(); |
6546 } | 6564 } |
6547 | 6565 |
6548 void AfterTest() override {} | 6566 void AfterTest() override {} |
6549 }; | 6567 }; |
6550 | 6568 |
6551 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestPaintedDeviceScaleFactor); | 6569 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestPaintedDeviceScaleFactor); |
6552 | 6570 |
6553 } // namespace | 6571 } // namespace |
6554 } // namespace cc | 6572 } // namespace cc |
OLD | NEW |