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

Side by Side Diff: cc/trees/layer_tree_host_unittest.cc

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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
OLDNEW
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/synchronization/lock.h" 10 #include "base/synchronization/lock.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 using testing::_; 60 using testing::_;
61 using testing::AnyNumber; 61 using testing::AnyNumber;
62 using testing::AtLeast; 62 using testing::AtLeast;
63 using testing::Mock; 63 using testing::Mock;
64 64
65 namespace cc { 65 namespace cc {
66 namespace { 66 namespace {
67 67
68 class LayerTreeHostTest : public LayerTreeTest {}; 68 class LayerTreeHostTest : public LayerTreeTest {};
69 69
70 // Test if the LTHI receives ReadyToActivate notifications from the TileManager
71 // when no raster tasks get scheduled.
72 class LayerTreeHostTestReadyToActivateEmpty : public LayerTreeHostTest {
73 public:
74 LayerTreeHostTestReadyToActivateEmpty()
75 : did_notify_ready_to_activate_(false),
76 all_tiles_required_for_activation_are_ready_to_draw_(false),
77 required_for_activation_count_(0) {}
78
79 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
80
81 void CommitCompleteOnThread(LayerTreeHostImpl* impl) override {
82 const std::vector<PictureLayerImpl*>& layers = impl->GetPictureLayers();
83 required_for_activation_count_ = 0;
84 for (const auto& layer : layers) {
85 FakePictureLayerImpl* fake_layer =
86 static_cast<FakePictureLayerImpl*>(layer);
87 required_for_activation_count_ +=
88 fake_layer->CountTilesRequiredForActivation();
89 }
90 }
91
92 void NotifyReadyToActivateOnThread(LayerTreeHostImpl* impl) override {
93 did_notify_ready_to_activate_ = true;
94 const std::vector<PictureLayerImpl*>& layers = impl->GetPictureLayers();
95 all_tiles_required_for_activation_are_ready_to_draw_ = true;
96 for (const auto& layer : layers) {
97 if (!layer->AllTilesRequiredForActivationAreReadyToDraw())
98 all_tiles_required_for_activation_are_ready_to_draw_ = false;
99 }
100 EndTest();
101 }
102
103 void AfterTest() override {
104 EXPECT_TRUE(did_notify_ready_to_activate_);
105 EXPECT_TRUE(all_tiles_required_for_activation_are_ready_to_draw_);
106 EXPECT_EQ(size_t(0), required_for_activation_count_);
107 }
108
109 protected:
110 bool did_notify_ready_to_activate_;
111 bool all_tiles_required_for_activation_are_ready_to_draw_;
112 size_t required_for_activation_count_;
113 };
114
115 SINGLE_AND_MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestReadyToActivateEmpty);
116
117 // Test if the LTHI receives ReadyToActivate notifications from the TileManager
118 // when some raster tasks flagged as REQUIRED_FOR_ACTIVATION got scheduled.
119 class LayerTreeHostTestReadyToActivateNonEmpty
120 : public LayerTreeHostTestReadyToActivateEmpty {
121 public:
122 void SetupTree() override {
123 client_.set_fill_with_nonsolid_color(true);
124 scoped_refptr<FakePictureLayer> root_layer =
125 FakePictureLayer::Create(&client_);
126 root_layer->SetBounds(gfx::Size(1024, 1024));
127 root_layer->SetIsDrawable(true);
128
129 layer_tree_host()->SetRootLayer(root_layer);
130 LayerTreeHostTest::SetupTree();
131 }
132
133 void AfterTest() override {
134 EXPECT_TRUE(did_notify_ready_to_activate_);
135 EXPECT_TRUE(all_tiles_required_for_activation_are_ready_to_draw_);
136 EXPECT_LE(size_t(1), required_for_activation_count_);
137 }
138
139 private:
140 FakeContentLayerClient client_;
141 };
142
143 SINGLE_AND_MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestReadyToActivateNonEmpty);
144
145 // Test if the LTHI receives ReadyToDraw notifications from the TileManager when
146 // no raster tasks get scheduled.
147 class LayerTreeHostTestReadyToDrawEmpty : public LayerTreeHostTest {
148 public:
149 LayerTreeHostTestReadyToDrawEmpty()
150 : did_notify_ready_to_draw_(false),
151 all_tiles_required_for_draw_are_ready_to_draw_(false),
152 required_for_draw_count_(0) {}
153
154 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
155
156 void NotifyReadyToDrawOnThread(LayerTreeHostImpl* impl) override {
157 did_notify_ready_to_draw_ = true;
158 const std::vector<PictureLayerImpl*>& layers = impl->GetPictureLayers();
159 all_tiles_required_for_draw_are_ready_to_draw_ = true;
160 for (const auto& layer : layers) {
161 if (!layer->AllTilesRequiredForDrawAreReadyToDraw())
162 all_tiles_required_for_draw_are_ready_to_draw_ = false;
163 FakePictureLayerImpl* fake_layer =
164 static_cast<FakePictureLayerImpl*>(layer);
165 required_for_draw_count_ += fake_layer->CountTilesRequiredForDraw();
166 }
167
168 EndTest();
169 }
170
171 void AfterTest() override {
172 EXPECT_TRUE(did_notify_ready_to_draw_);
173 EXPECT_TRUE(all_tiles_required_for_draw_are_ready_to_draw_);
174 EXPECT_EQ(size_t(0), required_for_draw_count_);
175 }
176
177 protected:
178 bool did_notify_ready_to_draw_;
179 bool all_tiles_required_for_draw_are_ready_to_draw_;
180 size_t required_for_draw_count_;
181 };
182
183 SINGLE_AND_MULTI_THREAD_IMPL_TEST_F(LayerTreeHostTestReadyToDrawEmpty);
184
185 // Test if the LTHI receives ReadyToDraw notifications from the TileManager when
186 // some raster tasks flagged as REQUIRED_FOR_DRAW got scheduled.
187 class LayerTreeHostTestReadyToDrawNonEmpty
188 : public LayerTreeHostTestReadyToDrawEmpty {
189 public:
190 void SetupTree() override {
191 client_.set_fill_with_nonsolid_color(true);
192 scoped_refptr<FakePictureLayer> root_layer =
193 FakePictureLayer::Create(&client_);
194 root_layer->SetBounds(gfx::Size(1024, 1024));
195 root_layer->SetIsDrawable(true);
196
197 layer_tree_host()->SetRootLayer(root_layer);
198 LayerTreeHostTest::SetupTree();
199 }
200
201 void AfterTest() override {
202 EXPECT_TRUE(did_notify_ready_to_draw_);
203 EXPECT_TRUE(all_tiles_required_for_draw_are_ready_to_draw_);
204 EXPECT_LE(size_t(1), required_for_draw_count_);
205 }
206
207 private:
208 FakeContentLayerClient client_;
209 };
210
211 // Note: With this test setup, we only get tiles flagged as REQUIRED_FOR_DRAW in
212 // single threaded mode.
213 SINGLE_THREAD_IMPL_TEST_F(LayerTreeHostTestReadyToDrawNonEmpty);
214
70 // Two setNeedsCommits in a row should lead to at least 1 commit and at least 1 215 // Two setNeedsCommits in a row should lead to at least 1 commit and at least 1
71 // draw with frame 0. 216 // draw with frame 0.
72 class LayerTreeHostTestSetNeedsCommit1 : public LayerTreeHostTest { 217 class LayerTreeHostTestSetNeedsCommit1 : public LayerTreeHostTest {
73 public: 218 public:
74 LayerTreeHostTestSetNeedsCommit1() : num_commits_(0), num_draws_(0) {} 219 LayerTreeHostTestSetNeedsCommit1() : num_commits_(0), num_draws_(0) {}
75 220
76 void BeginTest() override { 221 void BeginTest() override {
77 PostSetNeedsCommitToMainThread(); 222 PostSetNeedsCommitToMainThread();
78 PostSetNeedsCommitToMainThread(); 223 PostSetNeedsCommitToMainThread();
79 } 224 }
(...skipping 1882 matching lines...) Expand 10 before | Expand all | Expand 10 after
1962 settings.single_thread_proxy_scheduler = false; 2107 settings.single_thread_proxy_scheduler = false;
1963 2108
1964 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 2109 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
1965 new TestSharedBitmapManager()); 2110 new TestSharedBitmapManager());
1966 scoped_ptr<LayerTreeHost> host = 2111 scoped_ptr<LayerTreeHost> host =
1967 LayerTreeHost::CreateSingleThreaded(&client, 2112 LayerTreeHost::CreateSingleThreaded(&client,
1968 &client, 2113 &client,
1969 shared_bitmap_manager.get(), 2114 shared_bitmap_manager.get(),
1970 NULL, 2115 NULL,
1971 settings, 2116 settings,
1972 base::MessageLoopProxy::current()); 2117 base::MessageLoopProxy::current(),
2118 nullptr);
1973 client.SetLayerTreeHost(host.get()); 2119 client.SetLayerTreeHost(host.get());
1974 host->Composite(base::TimeTicks::Now()); 2120 host->Composite(base::TimeTicks::Now());
1975 2121
1976 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); 2122 EXPECT_EQ(4u, host->settings().max_partial_texture_updates);
1977 } 2123 }
1978 2124
1979 TEST(LayerTreeHostTest, PartialUpdatesWithSoftwareRenderer) { 2125 TEST(LayerTreeHostTest, PartialUpdatesWithSoftwareRenderer) {
1980 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_SOFTWARE); 2126 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_SOFTWARE);
1981 2127
1982 LayerTreeSettings settings; 2128 LayerTreeSettings settings;
1983 settings.max_partial_texture_updates = 4; 2129 settings.max_partial_texture_updates = 4;
1984 settings.single_thread_proxy_scheduler = false; 2130 settings.single_thread_proxy_scheduler = false;
1985 2131
1986 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 2132 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
1987 new TestSharedBitmapManager()); 2133 new TestSharedBitmapManager());
1988 scoped_ptr<LayerTreeHost> host = 2134 scoped_ptr<LayerTreeHost> host =
1989 LayerTreeHost::CreateSingleThreaded(&client, 2135 LayerTreeHost::CreateSingleThreaded(&client,
1990 &client, 2136 &client,
1991 shared_bitmap_manager.get(), 2137 shared_bitmap_manager.get(),
1992 NULL, 2138 NULL,
1993 settings, 2139 settings,
1994 base::MessageLoopProxy::current()); 2140 base::MessageLoopProxy::current(),
2141 nullptr);
1995 client.SetLayerTreeHost(host.get()); 2142 client.SetLayerTreeHost(host.get());
1996 host->Composite(base::TimeTicks::Now()); 2143 host->Composite(base::TimeTicks::Now());
1997 2144
1998 EXPECT_EQ(4u, host->settings().max_partial_texture_updates); 2145 EXPECT_EQ(4u, host->settings().max_partial_texture_updates);
1999 } 2146 }
2000 2147
2001 TEST(LayerTreeHostTest, PartialUpdatesWithDelegatingRendererAndGLContent) { 2148 TEST(LayerTreeHostTest, PartialUpdatesWithDelegatingRendererAndGLContent) {
2002 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_3D); 2149 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_3D);
2003 2150
2004 LayerTreeSettings settings; 2151 LayerTreeSettings settings;
2005 settings.max_partial_texture_updates = 4; 2152 settings.max_partial_texture_updates = 4;
2006 settings.single_thread_proxy_scheduler = false; 2153 settings.single_thread_proxy_scheduler = false;
2007 2154
2008 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 2155 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
2009 new TestSharedBitmapManager()); 2156 new TestSharedBitmapManager());
2010 scoped_ptr<LayerTreeHost> host = 2157 scoped_ptr<LayerTreeHost> host =
2011 LayerTreeHost::CreateSingleThreaded(&client, 2158 LayerTreeHost::CreateSingleThreaded(&client,
2012 &client, 2159 &client,
2013 shared_bitmap_manager.get(), 2160 shared_bitmap_manager.get(),
2014 NULL, 2161 NULL,
2015 settings, 2162 settings,
2016 base::MessageLoopProxy::current()); 2163 base::MessageLoopProxy::current(),
2164 nullptr);
2017 client.SetLayerTreeHost(host.get()); 2165 client.SetLayerTreeHost(host.get());
2018 host->Composite(base::TimeTicks::Now()); 2166 host->Composite(base::TimeTicks::Now());
2019 2167
2020 EXPECT_EQ(0u, host->MaxPartialTextureUpdates()); 2168 EXPECT_EQ(0u, host->MaxPartialTextureUpdates());
2021 } 2169 }
2022 2170
2023 TEST(LayerTreeHostTest, 2171 TEST(LayerTreeHostTest,
2024 PartialUpdatesWithDelegatingRendererAndSoftwareContent) { 2172 PartialUpdatesWithDelegatingRendererAndSoftwareContent) {
2025 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_SOFTWARE); 2173 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DELEGATED_SOFTWARE);
2026 2174
2027 LayerTreeSettings settings; 2175 LayerTreeSettings settings;
2028 settings.max_partial_texture_updates = 4; 2176 settings.max_partial_texture_updates = 4;
2029 settings.single_thread_proxy_scheduler = false; 2177 settings.single_thread_proxy_scheduler = false;
2030 2178
2031 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( 2179 scoped_ptr<SharedBitmapManager> shared_bitmap_manager(
2032 new TestSharedBitmapManager()); 2180 new TestSharedBitmapManager());
2033 scoped_ptr<LayerTreeHost> host = 2181 scoped_ptr<LayerTreeHost> host =
2034 LayerTreeHost::CreateSingleThreaded(&client, 2182 LayerTreeHost::CreateSingleThreaded(&client,
2035 &client, 2183 &client,
2036 shared_bitmap_manager.get(), 2184 shared_bitmap_manager.get(),
2037 NULL, 2185 NULL,
2038 settings, 2186 settings,
2039 base::MessageLoopProxy::current()); 2187 base::MessageLoopProxy::current(),
2188 nullptr);
2040 client.SetLayerTreeHost(host.get()); 2189 client.SetLayerTreeHost(host.get());
2041 host->Composite(base::TimeTicks::Now()); 2190 host->Composite(base::TimeTicks::Now());
2042 2191
2043 EXPECT_EQ(0u, host->MaxPartialTextureUpdates()); 2192 EXPECT_EQ(0u, host->MaxPartialTextureUpdates());
2044 } 2193 }
2045 2194
2046 class LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted 2195 class LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted
2047 : public LayerTreeHostTest { 2196 : public LayerTreeHostTest {
2048 public: 2197 public:
2049 LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted() 2198 LayerTreeHostTestShutdownWithOnlySomeResourcesEvicted()
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
2218 private: 2367 private:
2219 NotificationClient client_; 2368 NotificationClient client_;
2220 }; 2369 };
2221 2370
2222 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestLCDNotification); 2371 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestLCDNotification);
2223 2372
2224 // Verify that the BeginFrame notification is used to initiate rendering. 2373 // Verify that the BeginFrame notification is used to initiate rendering.
2225 class LayerTreeHostTestBeginFrameNotification : public LayerTreeHostTest { 2374 class LayerTreeHostTestBeginFrameNotification : public LayerTreeHostTest {
2226 public: 2375 public:
2227 void InitializeSettings(LayerTreeSettings* settings) override { 2376 void InitializeSettings(LayerTreeSettings* settings) override {
2228 settings->begin_frame_scheduling_enabled = true; 2377 settings->use_external_begin_frame_source = true;
2229 } 2378 }
2230 2379
2231 void BeginTest() override { 2380 void BeginTest() override {
2232 // This will trigger a SetNeedsBeginFrame which will trigger a 2381 // This will trigger a SetNeedsBeginFrame which will trigger a
2233 // BeginFrame. 2382 // BeginFrame.
2234 PostSetNeedsCommitToMainThread(); 2383 PostSetNeedsCommitToMainThread();
2235 } 2384 }
2236 2385
2237 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, 2386 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl,
2238 LayerTreeHostImpl::FrameData* frame, 2387 LayerTreeHostImpl::FrameData* frame,
2239 DrawResult draw_result) override { 2388 DrawResult draw_result) override {
2240 EndTest(); 2389 EndTest();
2241 return DRAW_SUCCESS; 2390 return DRAW_SUCCESS;
2242 } 2391 }
2243 2392
2244 void AfterTest() override {} 2393 void AfterTest() override {}
2245 2394
2246 private: 2395 private:
2247 base::TimeTicks frame_time_; 2396 base::TimeTicks frame_time_;
2248 }; 2397 };
2249 2398
2250 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginFrameNotification); 2399 MULTI_THREAD_TEST_F(LayerTreeHostTestBeginFrameNotification);
2251 2400
2252 class LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled 2401 class LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled
2253 : public LayerTreeHostTest { 2402 : public LayerTreeHostTest {
2254 public: 2403 public:
2255 void InitializeSettings(LayerTreeSettings* settings) override { 2404 void InitializeSettings(LayerTreeSettings* settings) override {
2256 settings->begin_frame_scheduling_enabled = true; 2405 settings->use_external_begin_frame_source = true;
2257 settings->using_synchronous_renderer_compositor = true; 2406 settings->using_synchronous_renderer_compositor = true;
2258 } 2407 }
2259 2408
2260 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 2409 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
2261 2410
2262 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { 2411 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
2263 // The BeginFrame notification is turned off now but will get enabled 2412 // The BeginFrame notification is turned off now but will get enabled
2264 // once we return. End test while it's enabled. 2413 // once we return. End test while it's enabled.
2265 ImplThreadTaskRunner()->PostTask( 2414 ImplThreadTaskRunner()->PostTask(
2266 FROM_HERE, 2415 FROM_HERE,
2267 base::Bind(&LayerTreeHostTestBeginFrameNotification::EndTest, 2416 base::Bind(&LayerTreeHostTestBeginFrameNotification::EndTest,
2268 base::Unretained(this))); 2417 base::Unretained(this)));
2269 } 2418 }
2270 2419
2271 void AfterTest() override {} 2420 void AfterTest() override {}
2272 }; 2421 };
2273 2422
2274 MULTI_THREAD_TEST_F( 2423 MULTI_THREAD_TEST_F(
2275 LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled); 2424 LayerTreeHostTestBeginFrameNotificationShutdownWhileEnabled);
2276 2425
2277 class LayerTreeHostTestAbortedCommitDoesntStall : public LayerTreeHostTest { 2426 class LayerTreeHostTestAbortedCommitDoesntStall : public LayerTreeHostTest {
2278 protected: 2427 protected:
2279 LayerTreeHostTestAbortedCommitDoesntStall() 2428 LayerTreeHostTestAbortedCommitDoesntStall()
2280 : commit_count_(0), commit_abort_count_(0), commit_complete_count_(0) {} 2429 : commit_count_(0), commit_abort_count_(0), commit_complete_count_(0) {}
2281 2430
2282 void InitializeSettings(LayerTreeSettings* settings) override { 2431 void InitializeSettings(LayerTreeSettings* settings) override {
2283 settings->begin_frame_scheduling_enabled = true; 2432 settings->use_external_begin_frame_source = true;
2284 } 2433 }
2285 2434
2286 void BeginTest() override { PostSetNeedsCommitToMainThread(); } 2435 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
2287 2436
2288 void DidCommit() override { 2437 void DidCommit() override {
2289 commit_count_++; 2438 commit_count_++;
2290 if (commit_count_ == 4) { 2439 if (commit_count_ == 4) {
2291 // After two aborted commits, request a real commit now to make sure a 2440 // After two aborted commits, request a real commit now to make sure a
2292 // real commit following an aborted commit will still complete and 2441 // real commit following an aborted commit will still complete and
2293 // end the test even when the Impl thread is idle. 2442 // end the test even when the Impl thread is idle.
(...skipping 2438 matching lines...) Expand 10 before | Expand all | Expand 10 after
4732 4881
4733 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&layer_client_); 4882 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&layer_client_);
4734 layer->SetBounds(gfx::Size(10, 10)); 4883 layer->SetBounds(gfx::Size(10, 10));
4735 layer->SetIsDrawable(true); 4884 layer->SetIsDrawable(true);
4736 layer_tree_host()->root_layer()->AddChild(layer); 4885 layer_tree_host()->root_layer()->AddChild(layer);
4737 } 4886 }
4738 4887
4739 void BeginTest() override { 4888 void BeginTest() override {
4740 Layer* root = layer_tree_host()->root_layer(); 4889 Layer* root = layer_tree_host()->root_layer();
4741 PictureLayer* layer = static_cast<PictureLayer*>(root->child_at(0)); 4890 PictureLayer* layer = static_cast<PictureLayer*>(root->child_at(0));
4742 PicturePile* pile = layer->GetPicturePileForTesting(); 4891 RecordingSource* recording_source = layer->GetRecordingSourceForTesting();
4743 4892
4744 // Verify default values. 4893 // Verify default values.
4745 EXPECT_TRUE(root->IsSuitableForGpuRasterization()); 4894 EXPECT_TRUE(root->IsSuitableForGpuRasterization());
4746 EXPECT_TRUE(layer->IsSuitableForGpuRasterization()); 4895 EXPECT_TRUE(layer->IsSuitableForGpuRasterization());
4747 EXPECT_TRUE(pile->is_suitable_for_gpu_rasterization()); 4896 EXPECT_TRUE(recording_source->IsSuitableForGpuRasterization());
4748 EXPECT_FALSE(layer_tree_host()->has_gpu_rasterization_trigger()); 4897 EXPECT_FALSE(layer_tree_host()->has_gpu_rasterization_trigger());
4749 EXPECT_FALSE(layer_tree_host()->UseGpuRasterization()); 4898 EXPECT_FALSE(layer_tree_host()->UseGpuRasterization());
4750 4899
4751 // Setting gpu rasterization trigger does not enable gpu rasterization. 4900 // Setting gpu rasterization trigger does not enable gpu rasterization.
4752 layer_tree_host()->SetHasGpuRasterizationTrigger(true); 4901 layer_tree_host()->SetHasGpuRasterizationTrigger(true);
4753 EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger()); 4902 EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger());
4754 EXPECT_FALSE(layer_tree_host()->UseGpuRasterization()); 4903 EXPECT_FALSE(layer_tree_host()->UseGpuRasterization());
4755 4904
4756 PostSetNeedsCommitToMainThread(); 4905 PostSetNeedsCommitToMainThread();
4757 } 4906 }
(...skipping 30 matching lines...) Expand all
4788 4937
4789 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&layer_client_); 4938 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&layer_client_);
4790 layer->SetBounds(gfx::Size(10, 10)); 4939 layer->SetBounds(gfx::Size(10, 10));
4791 layer->SetIsDrawable(true); 4940 layer->SetIsDrawable(true);
4792 layer_tree_host()->root_layer()->AddChild(layer); 4941 layer_tree_host()->root_layer()->AddChild(layer);
4793 } 4942 }
4794 4943
4795 void BeginTest() override { 4944 void BeginTest() override {
4796 Layer* root = layer_tree_host()->root_layer(); 4945 Layer* root = layer_tree_host()->root_layer();
4797 PictureLayer* layer = static_cast<PictureLayer*>(root->child_at(0)); 4946 PictureLayer* layer = static_cast<PictureLayer*>(root->child_at(0));
4798 PicturePile* pile = layer->GetPicturePileForTesting(); 4947 RecordingSource* recording_source = layer->GetRecordingSourceForTesting();
4799 4948
4800 // Verify default values. 4949 // Verify default values.
4801 EXPECT_TRUE(root->IsSuitableForGpuRasterization()); 4950 EXPECT_TRUE(root->IsSuitableForGpuRasterization());
4802 EXPECT_TRUE(layer->IsSuitableForGpuRasterization()); 4951 EXPECT_TRUE(layer->IsSuitableForGpuRasterization());
4803 EXPECT_TRUE(pile->is_suitable_for_gpu_rasterization()); 4952 EXPECT_TRUE(recording_source->IsSuitableForGpuRasterization());
4804 EXPECT_FALSE(layer_tree_host()->has_gpu_rasterization_trigger()); 4953 EXPECT_FALSE(layer_tree_host()->has_gpu_rasterization_trigger());
4805 EXPECT_FALSE(layer_tree_host()->UseGpuRasterization()); 4954 EXPECT_FALSE(layer_tree_host()->UseGpuRasterization());
4806 4955
4807 // Gpu rasterization trigger is relevant. 4956 // Gpu rasterization trigger is relevant.
4808 layer_tree_host()->SetHasGpuRasterizationTrigger(true); 4957 layer_tree_host()->SetHasGpuRasterizationTrigger(true);
4809 EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger()); 4958 EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger());
4810 EXPECT_TRUE(layer_tree_host()->UseGpuRasterization()); 4959 EXPECT_TRUE(layer_tree_host()->UseGpuRasterization());
4811 4960
4812 // Content-based veto is relevant as well. 4961 // Content-based veto is relevant as well.
4813 pile->SetUnsuitableForGpuRasterizationForTesting(); 4962 recording_source->SetUnsuitableForGpuRasterizationForTesting();
4814 EXPECT_FALSE(pile->is_suitable_for_gpu_rasterization()); 4963 EXPECT_FALSE(recording_source->IsSuitableForGpuRasterization());
4815 EXPECT_FALSE(layer->IsSuitableForGpuRasterization()); 4964 EXPECT_FALSE(layer->IsSuitableForGpuRasterization());
4816 // Veto will take effect when layers are updated. 4965 // Veto will take effect when layers are updated.
4817 // The results will be verified after commit is completed below. 4966 // The results will be verified after commit is completed below.
4818 // Since we are manually marking picture pile as unsuitable, 4967 // Since we are manually marking picture pile as unsuitable,
4819 // make sure that the layer gets a chance to update. 4968 // make sure that the layer gets a chance to update.
4820 layer->SetNeedsDisplay(); 4969 layer->SetNeedsDisplay();
4821 PostSetNeedsCommitToMainThread(); 4970 PostSetNeedsCommitToMainThread();
4822 } 4971 }
4823 4972
4824 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { 4973 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
(...skipping 28 matching lines...) Expand all
4853 5002
4854 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&layer_client_); 5003 scoped_refptr<PictureLayer> layer = PictureLayer::Create(&layer_client_);
4855 layer->SetBounds(gfx::Size(10, 10)); 5004 layer->SetBounds(gfx::Size(10, 10));
4856 layer->SetIsDrawable(true); 5005 layer->SetIsDrawable(true);
4857 layer_tree_host()->root_layer()->AddChild(layer); 5006 layer_tree_host()->root_layer()->AddChild(layer);
4858 } 5007 }
4859 5008
4860 void BeginTest() override { 5009 void BeginTest() override {
4861 Layer* root = layer_tree_host()->root_layer(); 5010 Layer* root = layer_tree_host()->root_layer();
4862 PictureLayer* layer = static_cast<PictureLayer*>(root->child_at(0)); 5011 PictureLayer* layer = static_cast<PictureLayer*>(root->child_at(0));
4863 PicturePile* pile = layer->GetPicturePileForTesting(); 5012 RecordingSource* recording_source = layer->GetRecordingSourceForTesting();
4864 5013
4865 // Verify default values. 5014 // Verify default values.
4866 EXPECT_TRUE(root->IsSuitableForGpuRasterization()); 5015 EXPECT_TRUE(root->IsSuitableForGpuRasterization());
4867 EXPECT_TRUE(layer->IsSuitableForGpuRasterization()); 5016 EXPECT_TRUE(layer->IsSuitableForGpuRasterization());
4868 EXPECT_TRUE(pile->is_suitable_for_gpu_rasterization()); 5017 EXPECT_TRUE(recording_source->IsSuitableForGpuRasterization());
4869 EXPECT_FALSE(layer_tree_host()->has_gpu_rasterization_trigger()); 5018 EXPECT_FALSE(layer_tree_host()->has_gpu_rasterization_trigger());
4870 5019
4871 // With gpu rasterization forced, gpu rasterization trigger is irrelevant. 5020 // With gpu rasterization forced, gpu rasterization trigger is irrelevant.
4872 EXPECT_TRUE(layer_tree_host()->UseGpuRasterization()); 5021 EXPECT_TRUE(layer_tree_host()->UseGpuRasterization());
4873 layer_tree_host()->SetHasGpuRasterizationTrigger(true); 5022 layer_tree_host()->SetHasGpuRasterizationTrigger(true);
4874 EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger()); 5023 EXPECT_TRUE(layer_tree_host()->has_gpu_rasterization_trigger());
4875 EXPECT_TRUE(layer_tree_host()->UseGpuRasterization()); 5024 EXPECT_TRUE(layer_tree_host()->UseGpuRasterization());
4876 5025
4877 // Content-based veto is irrelevant as well. 5026 // Content-based veto is irrelevant as well.
4878 pile->SetUnsuitableForGpuRasterizationForTesting(); 5027 recording_source->SetUnsuitableForGpuRasterizationForTesting();
4879 EXPECT_FALSE(pile->is_suitable_for_gpu_rasterization()); 5028 EXPECT_FALSE(recording_source->IsSuitableForGpuRasterization());
4880 EXPECT_FALSE(layer->IsSuitableForGpuRasterization()); 5029 EXPECT_FALSE(layer->IsSuitableForGpuRasterization());
4881 // Veto will take effect when layers are updated. 5030 // Veto will take effect when layers are updated.
4882 // The results will be verified after commit is completed below. 5031 // The results will be verified after commit is completed below.
4883 // Since we are manually marking picture pile as unsuitable, 5032 // Since we are manually marking picture pile as unsuitable,
4884 // make sure that the layer gets a chance to update. 5033 // make sure that the layer gets a chance to update.
4885 layer->SetNeedsDisplay(); 5034 layer->SetNeedsDisplay();
4886 PostSetNeedsCommitToMainThread(); 5035 PostSetNeedsCommitToMainThread();
4887 } 5036 }
4888 5037
4889 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override { 5038 void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) override {
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
5175 void AfterTest() override { 5324 void AfterTest() override {
5176 EXPECT_TRUE(deltas_sent_to_client_); 5325 EXPECT_TRUE(deltas_sent_to_client_);
5177 } 5326 }
5178 5327
5179 ScrollAndScaleSet info_; 5328 ScrollAndScaleSet info_;
5180 bool deltas_sent_to_client_; 5329 bool deltas_sent_to_client_;
5181 }; 5330 };
5182 5331
5183 MULTI_THREAD_TEST_F(LayerTreeHostAcceptsDeltasFromImplWithoutRootLayer); 5332 MULTI_THREAD_TEST_F(LayerTreeHostAcceptsDeltasFromImplWithoutRootLayer);
5184 } // namespace cc 5333 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_pixeltest_filters.cc ('k') | cc/trees/layer_tree_host_unittest_animation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698