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

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

Issue 606113003: Revert of Make cc output surface creation async (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 2 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "cc/layers/content_layer.h" 8 #include "cc/layers/content_layer.h"
9 #include "cc/layers/delegated_frame_provider.h" 9 #include "cc/layers/delegated_frame_provider.h"
10 #include "cc/layers/delegated_frame_resource_collection.h" 10 #include "cc/layers/delegated_frame_resource_collection.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 : LayerTreeTest(), 56 : LayerTreeTest(),
57 context3d_(NULL), 57 context3d_(NULL),
58 times_to_fail_create_(0), 58 times_to_fail_create_(0),
59 times_to_lose_during_commit_(0), 59 times_to_lose_during_commit_(0),
60 times_to_lose_during_draw_(0), 60 times_to_lose_during_draw_(0),
61 times_to_fail_recreate_(0), 61 times_to_fail_recreate_(0),
62 times_to_expect_create_failed_(0), 62 times_to_expect_create_failed_(0),
63 times_create_failed_(0), 63 times_create_failed_(0),
64 committed_at_least_once_(false), 64 committed_at_least_once_(false),
65 context_should_support_io_surface_(false), 65 context_should_support_io_surface_(false),
66 fallback_context_works_(false), 66 fallback_context_works_(false) {
67 async_output_surface_creation_(false) {
68 media::InitializeMediaLibraryForTesting(); 67 media::InitializeMediaLibraryForTesting();
69 } 68 }
70 69
71 void LoseContext() { 70 void LoseContext() {
72 // For sanity-checking tests, they should only call this when the 71 // For sanity-checking tests, they should only call this when the
73 // context is not lost. 72 // context is not lost.
74 CHECK(context3d_); 73 CHECK(context3d_);
75 context3d_->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB, 74 context3d_->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
76 GL_INNOCENT_CONTEXT_RESET_ARB); 75 GL_INNOCENT_CONTEXT_RESET_ARB);
77 context3d_ = NULL; 76 context3d_ = NULL;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 TestWebGraphicsContext3D* context3d_; 146 TestWebGraphicsContext3D* context3d_;
148 int times_to_fail_create_; 147 int times_to_fail_create_;
149 int times_to_lose_during_commit_; 148 int times_to_lose_during_commit_;
150 int times_to_lose_during_draw_; 149 int times_to_lose_during_draw_;
151 int times_to_fail_recreate_; 150 int times_to_fail_recreate_;
152 int times_to_expect_create_failed_; 151 int times_to_expect_create_failed_;
153 int times_create_failed_; 152 int times_create_failed_;
154 bool committed_at_least_once_; 153 bool committed_at_least_once_;
155 bool context_should_support_io_surface_; 154 bool context_should_support_io_surface_;
156 bool fallback_context_works_; 155 bool fallback_context_works_;
157 bool async_output_surface_creation_;
158 }; 156 };
159 157
160 class LayerTreeHostContextTestLostContextSucceeds 158 class LayerTreeHostContextTestLostContextSucceeds
161 : public LayerTreeHostContextTest { 159 : public LayerTreeHostContextTest {
162 public: 160 public:
163 LayerTreeHostContextTestLostContextSucceeds() 161 LayerTreeHostContextTestLostContextSucceeds()
164 : LayerTreeHostContextTest(), 162 : LayerTreeHostContextTest(),
165 test_case_(0), 163 test_case_(0),
166 num_losses_(0), 164 num_losses_(0),
167 num_losses_last_test_case_(-1), 165 num_losses_last_test_case_(-1),
168 recovered_context_(true), 166 recovered_context_(true),
169 first_initialized_(false) {} 167 first_initialized_(false) {}
170 168
171 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 169 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
172 170
173 virtual void RequestNewOutputSurface(bool fallback) OVERRIDE {
174 if (async_output_surface_creation_) {
175 MainThreadTaskRunner()->PostTask(
176 FROM_HERE,
177 base::Bind(&LayerTreeHostContextTestLostContextSucceeds::
178 CreateAndSetOutputSurface,
179 base::Unretained(this),
180 fallback));
181 } else {
182 CreateAndSetOutputSurface(fallback);
183 }
184 }
185
186 void CreateAndSetOutputSurface(bool fallback) {
187 layer_tree_host()->SetOutputSurface(
188 LayerTreeHostContextTest::CreateOutputSurface(fallback));
189 }
190
191 virtual void DidInitializeOutputSurface() OVERRIDE { 171 virtual void DidInitializeOutputSurface() OVERRIDE {
192 if (first_initialized_) 172 if (first_initialized_)
193 ++num_losses_; 173 ++num_losses_;
194 else 174 else
195 first_initialized_ = true; 175 first_initialized_ = true;
196 176
197 recovered_context_ = true; 177 recovered_context_ = true;
198 } 178 }
199 179
200 virtual void AfterTest() OVERRIDE { EXPECT_EQ(11u, test_case_); } 180 virtual void AfterTest() OVERRIDE { EXPECT_EQ(7u, test_case_); }
201 181
202 virtual void DidCommitAndDrawFrame() OVERRIDE { 182 virtual void DidCommitAndDrawFrame() OVERRIDE {
203 // If the last frame had a context loss, then we'll commit again to 183 // If the last frame had a context loss, then we'll commit again to
204 // recover. 184 // recover.
205 if (!recovered_context_) 185 if (!recovered_context_)
206 return; 186 return;
207 if (times_to_lose_during_commit_) 187 if (times_to_lose_during_commit_)
208 return; 188 return;
209 if (times_to_lose_during_draw_) 189 if (times_to_lose_during_draw_)
210 return; 190 return;
(...skipping 13 matching lines...) Expand all
224 204
225 bool NextTestCase() { 205 bool NextTestCase() {
226 static const TestCase kTests[] = { 206 static const TestCase kTests[] = {
227 // Losing the context and failing to recreate it (or losing it again 207 // Losing the context and failing to recreate it (or losing it again
228 // immediately) a small number of times should succeed. 208 // immediately) a small number of times should succeed.
229 { 209 {
230 1, // times_to_lose_during_commit 210 1, // times_to_lose_during_commit
231 0, // times_to_lose_during_draw 211 0, // times_to_lose_during_draw
232 0, // times_to_fail_recreate 212 0, // times_to_fail_recreate
233 false, // fallback_context_works 213 false, // fallback_context_works
234 false, // async_output_surface_creation
235 }, 214 },
236 { 215 {
237 0, // times_to_lose_during_commit 216 0, // times_to_lose_during_commit
238 1, // times_to_lose_during_draw 217 1, // times_to_lose_during_draw
239 0, // times_to_fail_recreate 218 0, // times_to_fail_recreate
240 false, // fallback_context_works 219 false, // fallback_context_works
241 false, // async_output_surface_creation
242 }, 220 },
243 { 221 {
244 1, // times_to_lose_during_commit 222 1, // times_to_lose_during_commit
245 0, // times_to_lose_during_draw 223 0, // times_to_lose_during_draw
246 3, // times_to_fail_recreate 224 3, // times_to_fail_recreate
247 false, // fallback_context_works 225 false, // fallback_context_works
248 false, // async_output_surface_creation
249 }, 226 },
250 { 227 {
251 0, // times_to_lose_during_commit 228 0, // times_to_lose_during_commit
252 1, // times_to_lose_during_draw 229 1, // times_to_lose_during_draw
253 3, // times_to_fail_recreate 230 3, // times_to_fail_recreate
254 false, // fallback_context_works 231 false, // fallback_context_works
255 false, // async_output_surface_creation
256 },
257 {
258 0, // times_to_lose_during_commit
259 1, // times_to_lose_during_draw
260 3, // times_to_fail_recreate
261 false, // fallback_context_works
262 true, // async_output_surface_creation
263 }, 232 },
264 // Losing the context and recreating it any number of times should 233 // Losing the context and recreating it any number of times should
265 // succeed. 234 // succeed.
266 { 235 {
267 10, // times_to_lose_during_commit 236 10, // times_to_lose_during_commit
268 0, // times_to_lose_during_draw 237 0, // times_to_lose_during_draw
269 0, // times_to_fail_recreate 238 0, // times_to_fail_recreate
270 false, // fallback_context_works 239 false, // fallback_context_works
271 false, // async_output_surface_creation
272 }, 240 },
273 { 241 {
274 0, // times_to_lose_during_commit 242 0, // times_to_lose_during_commit
275 10, // times_to_lose_during_draw 243 10, // times_to_lose_during_draw
276 0, // times_to_fail_recreate 244 0, // times_to_fail_recreate
277 false, // fallback_context_works 245 false, // fallback_context_works
278 false, // async_output_surface_creation
279 },
280 {
281 10, // times_to_lose_during_commit
282 0, // times_to_lose_during_draw
283 0, // times_to_fail_recreate
284 false, // fallback_context_works
285 true, // async_output_surface_creation
286 },
287 {
288 0, // times_to_lose_during_commit
289 10, // times_to_lose_during_draw
290 0, // times_to_fail_recreate
291 false, // fallback_context_works
292 true, // async_output_surface_creation
293 }, 246 },
294 // Losing the context, failing to reinitialize it, and making a fallback 247 // Losing the context, failing to reinitialize it, and making a fallback
295 // context should work. 248 // context should work.
296 { 249 {
297 0, // times_to_lose_during_commit
298 1, // times_to_lose_during_draw
299 0, // times_to_fail_recreate
300 true, // fallback_context_works
301 false, // async_output_surface_creation
302 },
303 {
304 0, // times_to_lose_during_commit 250 0, // times_to_lose_during_commit
305 1, // times_to_lose_during_draw 251 1, // times_to_lose_during_draw
306 0, // times_to_fail_recreate 252 0, // times_to_fail_recreate
307 true, // fallback_context_works 253 true, // fallback_context_works
308 true, // async_output_surface_creation
309 }, 254 },
310 }; 255 };
311 256
312 if (test_case_ >= arraysize(kTests)) 257 if (test_case_ >= arraysize(kTests))
313 return false; 258 return false;
314 // Make sure that we lost our context at least once in the last test run so 259 // Make sure that we lost our context at least once in the last test run so
315 // the test did something. 260 // the test did something.
316 EXPECT_GT(num_losses_, num_losses_last_test_case_); 261 EXPECT_GT(num_losses_, num_losses_last_test_case_);
317 num_losses_last_test_case_ = num_losses_; 262 num_losses_last_test_case_ = num_losses_;
318 263
319 times_to_lose_during_commit_ = 264 times_to_lose_during_commit_ =
320 kTests[test_case_].times_to_lose_during_commit; 265 kTests[test_case_].times_to_lose_during_commit;
321 times_to_lose_during_draw_ = kTests[test_case_].times_to_lose_during_draw; 266 times_to_lose_during_draw_ = kTests[test_case_].times_to_lose_during_draw;
322 times_to_fail_recreate_ = kTests[test_case_].times_to_fail_recreate; 267 times_to_fail_recreate_ = kTests[test_case_].times_to_fail_recreate;
323 fallback_context_works_ = kTests[test_case_].fallback_context_works; 268 fallback_context_works_ = kTests[test_case_].fallback_context_works;
324 async_output_surface_creation_ =
325 kTests[test_case_].async_output_surface_creation;
326 ++test_case_; 269 ++test_case_;
327 return true; 270 return true;
328 } 271 }
329 272
330 struct TestCase { 273 struct TestCase {
331 int times_to_lose_during_commit; 274 int times_to_lose_during_commit;
332 int times_to_lose_during_draw; 275 int times_to_lose_during_draw;
333 int times_to_fail_recreate; 276 int times_to_fail_recreate;
334 bool fallback_context_works; 277 bool fallback_context_works;
335 bool async_output_surface_creation;
336 }; 278 };
337 279
338 protected: 280 protected:
339 size_t test_case_; 281 size_t test_case_;
340 int num_losses_; 282 int num_losses_;
341 int num_losses_last_test_case_; 283 int num_losses_last_test_case_;
342 bool recovered_context_; 284 bool recovered_context_;
343 bool first_initialized_; 285 bool first_initialized_;
344 }; 286 };
345 287
(...skipping 1360 matching lines...) Expand 10 before | Expand all | Expand 10 after
1706 virtual void AfterTest() OVERRIDE {} 1648 virtual void AfterTest() OVERRIDE {}
1707 1649
1708 bool deferred_; 1650 bool deferred_;
1709 }; 1651 };
1710 1652
1711 SINGLE_AND_MULTI_THREAD_TEST_F( 1653 SINGLE_AND_MULTI_THREAD_TEST_F(
1712 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame); 1654 LayerTreeHostContextTestLoseAfterSendingBeginMainFrame);
1713 1655
1714 } // namespace 1656 } // namespace
1715 } // namespace cc 1657 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | cc/trees/layer_tree_host_unittest_no_message_loop.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698