OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "cc/output/delegating_renderer.h" | |
6 | |
7 #include <stdint.h> | |
8 | |
9 #include "cc/test/fake_output_surface.h" | |
10 #include "cc/test/layer_tree_test.h" | |
11 #include "cc/test/render_pass_test_utils.h" | |
12 #include "testing/gtest/include/gtest/gtest.h" | |
13 | |
14 namespace cc { | |
15 | |
16 class DelegatingRendererTest : public LayerTreeTest {}; | |
17 | |
18 class DelegatingRendererTestDraw : public DelegatingRendererTest { | |
19 public: | |
20 void BeginTest() override { | |
21 layer_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); | |
22 PostSetNeedsCommitToMainThread(); | |
23 } | |
24 | |
25 void AfterTest() override {} | |
26 | |
27 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | |
28 LayerTreeHostImpl::FrameData* frame_data, | |
29 DrawResult draw_result) override { | |
30 EXPECT_EQ(DRAW_SUCCESS, draw_result); | |
31 EXPECT_EQ(0, num_swaps_); | |
32 drawn_viewport_ = host_impl->DeviceViewport(); | |
33 return draw_result; | |
34 } | |
35 | |
36 void DisplayReceivedCompositorFrameOnThread( | |
37 const CompositorFrame& frame) override { | |
38 EXPECT_EQ(1, ++num_swaps_); | |
39 | |
40 DelegatedFrameData* last_frame_data = frame.delegated_frame_data.get(); | |
41 ASSERT_TRUE(frame.delegated_frame_data); | |
42 EXPECT_FALSE(frame.gl_frame_data); | |
43 EXPECT_EQ(drawn_viewport_, | |
44 last_frame_data->render_pass_list.back()->output_rect); | |
45 EXPECT_EQ(0.5f, frame.metadata.min_page_scale_factor); | |
46 EXPECT_EQ(4.f, frame.metadata.max_page_scale_factor); | |
47 | |
48 EXPECT_EQ(0u, frame.delegated_frame_data->resource_list.size()); | |
49 EXPECT_EQ(1u, frame.delegated_frame_data->render_pass_list.size()); | |
50 | |
51 EndTest(); | |
52 } | |
53 | |
54 int num_swaps_ = 0; | |
55 gfx::Rect drawn_viewport_; | |
56 }; | |
57 | |
58 SINGLE_AND_MULTI_THREAD_TEST_F(DelegatingRendererTestDraw); | |
59 | |
60 class DelegatingRendererTestResources : public DelegatingRendererTest { | |
61 public: | |
62 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | |
63 | |
64 void AfterTest() override {} | |
65 | |
66 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | |
67 LayerTreeHostImpl::FrameData* frame, | |
68 DrawResult draw_result) override { | |
69 frame->render_passes.clear(); | |
70 | |
71 RenderPass* child_pass = | |
72 AddRenderPass(&frame->render_passes, RenderPassId(2, 1), | |
73 gfx::Rect(3, 3, 10, 10), gfx::Transform()); | |
74 gpu::SyncToken mailbox_sync_token; | |
75 AddOneOfEveryQuadType(child_pass, host_impl->resource_provider(), | |
76 RenderPassId(0, 0), &mailbox_sync_token); | |
77 | |
78 RenderPass* pass = AddRenderPass(&frame->render_passes, RenderPassId(1, 1), | |
79 gfx::Rect(3, 3, 10, 10), gfx::Transform()); | |
80 AddOneOfEveryQuadType(pass, host_impl->resource_provider(), child_pass->id, | |
81 &mailbox_sync_token); | |
82 return draw_result; | |
83 } | |
84 | |
85 void DisplayReceivedCompositorFrameOnThread( | |
86 const CompositorFrame& frame) override { | |
87 ASSERT_TRUE(frame.delegated_frame_data); | |
88 | |
89 EXPECT_EQ(2u, frame.delegated_frame_data->render_pass_list.size()); | |
90 // Each render pass has 10 resources in it. And the root render pass has a | |
91 // mask resource used when drawing the child render pass, as well as its | |
92 // replica (it's added twice). The number 10 may change if | |
93 // AppendOneOfEveryQuadType() is updated, and the value here should be | |
94 // updated accordingly. | |
95 EXPECT_EQ(22u, frame.delegated_frame_data->resource_list.size()); | |
96 | |
97 EndTest(); | |
98 } | |
99 }; | |
100 | |
101 SINGLE_AND_MULTI_THREAD_TEST_F(DelegatingRendererTestResources); | |
102 | |
103 } // namespace cc | |
OLD | NEW |