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

Side by Side Diff: cc/CCTextureUpdateControllerTest.cpp

Issue 10917251: Move TextureCopier and TextureUploader from CCRenderer to CCResourceProvider (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix rebase merge issues Created 8 years, 3 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
« no previous file with comments | « cc/CCTextureUpdateController.cpp ('k') | cc/CCThreadProxy.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "config.h" 5 #include "config.h"
6 6
7 #include "CCTextureUpdateController.h" 7 #include "CCTextureUpdateController.h"
8 8
9 #include "CCSchedulerTestCommon.h" 9 #include "CCSchedulerTestCommon.h"
10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread 10 #include "CCSingleThreadProxy.h" // For DebugScopedSetImplThread
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 147 }
148 148
149 m_numEndUploads++; 149 m_numEndUploads++;
150 } 150 }
151 151
152 protected: 152 protected:
153 virtual void SetUp() 153 virtual void SetUp()
154 { 154 {
155 m_context = FakeWebCompositorOutputSurface::create(adoptPtr(new WebGraph icsContext3DForUploadTest(this))); 155 m_context = FakeWebCompositorOutputSurface::create(adoptPtr(new WebGraph icsContext3DForUploadTest(this)));
156 DebugScopedSetImplThread implThread; 156 DebugScopedSetImplThread implThread;
157 m_resourceProvider = CCResourceProvider::create(m_context.get()); 157 m_resourceProvider = CCResourceProvider::create(m_context.get(), Unthrot tledUploader);
158 } 158 }
159 159
160 void appendFullUploadsToUpdateQueue(int count) 160 void appendFullUploadsToUpdateQueue(int count)
161 { 161 {
162 m_fullUploadCountExpected += count; 162 m_fullUploadCountExpected += count;
163 m_totalUploadCountExpected += count; 163 m_totalUploadCountExpected += count;
164 164
165 const IntRect rect(0, 0, 300, 150); 165 const IntRect rect(0, 0, 300, 150);
166 const TextureUploader::Parameters upload = { &m_texture, rect, IntSize() }; 166 const TextureUploader::Parameters upload = { &m_texture, rect, IntSize() };
167 for (int i = 0; i < count; i++) 167 for (int i = 0; i < count; i++)
(...skipping 15 matching lines...) Expand all
183 { 183 {
184 m_maxUploadCountPerUpdate = count; 184 m_maxUploadCountPerUpdate = count;
185 } 185 }
186 186
187 protected: 187 protected:
188 // Classes required to interact and test the CCTextureUpdateController 188 // Classes required to interact and test the CCTextureUpdateController
189 OwnPtr<CCGraphicsContext> m_context; 189 OwnPtr<CCGraphicsContext> m_context;
190 OwnPtr<CCResourceProvider> m_resourceProvider; 190 OwnPtr<CCResourceProvider> m_resourceProvider;
191 OwnPtr<CCTextureUpdateQueue> m_queue; 191 OwnPtr<CCTextureUpdateQueue> m_queue;
192 TextureForUploadTest m_texture; 192 TextureForUploadTest m_texture;
193 FakeTextureCopier m_copier;
194 TextureUploaderForUploadTest m_uploader; 193 TextureUploaderForUploadTest m_uploader;
195 OwnPtr<WebThread> m_thread; 194 OwnPtr<WebThread> m_thread;
196 WebCompositorInitializer m_compositorInitializer; 195 WebCompositorInitializer m_compositorInitializer;
197 196
198 197
199 // Properties / expectations of this test 198 // Properties / expectations of this test
200 int m_fullUploadCountExpected; 199 int m_fullUploadCountExpected;
201 int m_partialCountExpected; 200 int m_partialCountExpected;
202 int m_totalUploadCountExpected; 201 int m_totalUploadCountExpected;
203 int m_maxUploadCountPerUpdate; 202 int m_maxUploadCountPerUpdate;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 { 236 {
238 m_test->onUpload(); 237 m_test->onUpload();
239 } 238 }
240 239
241 240
242 // ZERO UPLOADS TESTS 241 // ZERO UPLOADS TESTS
243 TEST_F(CCTextureUpdateControllerTest, ZeroUploads) 242 TEST_F(CCTextureUpdateControllerTest, ZeroUploads)
244 { 243 {
245 appendFullUploadsToUpdateQueue(0); 244 appendFullUploadsToUpdateQueue(0);
246 appendPartialUploadsToUpdateQueue(0); 245 appendPartialUploadsToUpdateQueue(0);
247 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 246 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
248 247
249 EXPECT_EQ(0, m_numBeginUploads); 248 EXPECT_EQ(0, m_numBeginUploads);
250 EXPECT_EQ(0, m_numEndUploads); 249 EXPECT_EQ(0, m_numEndUploads);
251 EXPECT_EQ(0, m_numPreviousFlushes); 250 EXPECT_EQ(0, m_numPreviousFlushes);
252 EXPECT_EQ(0, m_numPreviousUploads); 251 EXPECT_EQ(0, m_numPreviousUploads);
253 } 252 }
254 253
255 254
256 // ONE UPLOAD TESTS 255 // ONE UPLOAD TESTS
257 TEST_F(CCTextureUpdateControllerTest, OneFullUpload) 256 TEST_F(CCTextureUpdateControllerTest, OneFullUpload)
258 { 257 {
259 appendFullUploadsToUpdateQueue(1); 258 appendFullUploadsToUpdateQueue(1);
260 appendPartialUploadsToUpdateQueue(0); 259 appendPartialUploadsToUpdateQueue(0);
261 DebugScopedSetImplThread implThread; 260 DebugScopedSetImplThread implThread;
262 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 261 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
263 262
264 EXPECT_EQ(1, m_numBeginUploads); 263 EXPECT_EQ(1, m_numBeginUploads);
265 EXPECT_EQ(1, m_numEndUploads); 264 EXPECT_EQ(1, m_numEndUploads);
266 EXPECT_EQ(1, m_numPreviousFlushes); 265 EXPECT_EQ(1, m_numPreviousFlushes);
267 EXPECT_EQ(1, m_numPreviousUploads); 266 EXPECT_EQ(1, m_numPreviousUploads);
268 } 267 }
269 268
270 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload) 269 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload)
271 { 270 {
272 appendFullUploadsToUpdateQueue(0); 271 appendFullUploadsToUpdateQueue(0);
273 appendPartialUploadsToUpdateQueue(1); 272 appendPartialUploadsToUpdateQueue(1);
274 DebugScopedSetImplThread implThread; 273 DebugScopedSetImplThread implThread;
275 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 274 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
276 275
277 EXPECT_EQ(1, m_numBeginUploads); 276 EXPECT_EQ(1, m_numBeginUploads);
278 EXPECT_EQ(1, m_numEndUploads); 277 EXPECT_EQ(1, m_numEndUploads);
279 EXPECT_EQ(1, m_numPreviousFlushes); 278 EXPECT_EQ(1, m_numPreviousFlushes);
280 EXPECT_EQ(1, m_numPreviousUploads); 279 EXPECT_EQ(1, m_numPreviousUploads);
281 } 280 }
282 281
283 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload) 282 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload)
284 { 283 {
285 appendFullUploadsToUpdateQueue(1); 284 appendFullUploadsToUpdateQueue(1);
286 appendPartialUploadsToUpdateQueue(1); 285 appendPartialUploadsToUpdateQueue(1);
287 DebugScopedSetImplThread implThread; 286 DebugScopedSetImplThread implThread;
288 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 287 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
289 288
290 // We expect the full uploads to be followed by a flush 289 // We expect the full uploads to be followed by a flush
291 // before the partial uploads begin. 290 // before the partial uploads begin.
292 EXPECT_EQ(1, m_numBeginUploads); 291 EXPECT_EQ(1, m_numBeginUploads);
293 EXPECT_EQ(1, m_numEndUploads); 292 EXPECT_EQ(1, m_numEndUploads);
294 EXPECT_EQ(2, m_numPreviousFlushes); 293 EXPECT_EQ(2, m_numPreviousFlushes);
295 EXPECT_EQ(2, m_numPreviousUploads); 294 EXPECT_EQ(2, m_numPreviousUploads);
296 } 295 }
297 296
298 297
299 // NO REMAINDER TESTS 298 // NO REMAINDER TESTS
300 // This class of tests upload a number of textures that is a multiple of the flu sh period. 299 // This class of tests upload a number of textures that is a multiple of the flu sh period.
301 const int fullUploadFlushMultipler = 7; 300 const int fullUploadFlushMultipler = 7;
302 const int fullNoRemainderCount = fullUploadFlushMultipler * kFlushPeriodFull; 301 const int fullNoRemainderCount = fullUploadFlushMultipler * kFlushPeriodFull;
303 302
304 const int partialUploadFlushMultipler = 11; 303 const int partialUploadFlushMultipler = 11;
305 const int partialNoRemainderCount = partialUploadFlushMultipler * kFlushPeriodPa rtial; 304 const int partialNoRemainderCount = partialUploadFlushMultipler * kFlushPeriodPa rtial;
306 305
307 TEST_F(CCTextureUpdateControllerTest, ManyFullUploadsNoRemainder) 306 TEST_F(CCTextureUpdateControllerTest, ManyFullUploadsNoRemainder)
308 { 307 {
309 appendFullUploadsToUpdateQueue(fullNoRemainderCount); 308 appendFullUploadsToUpdateQueue(fullNoRemainderCount);
310 appendPartialUploadsToUpdateQueue(0); 309 appendPartialUploadsToUpdateQueue(0);
311 DebugScopedSetImplThread implThread; 310 DebugScopedSetImplThread implThread;
312 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 311 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
313 312
314 EXPECT_EQ(1, m_numBeginUploads); 313 EXPECT_EQ(1, m_numBeginUploads);
315 EXPECT_EQ(1, m_numEndUploads); 314 EXPECT_EQ(1, m_numEndUploads);
316 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes); 315 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes);
317 EXPECT_EQ(fullNoRemainderCount, m_numPreviousUploads); 316 EXPECT_EQ(fullNoRemainderCount, m_numPreviousUploads);
318 } 317 }
319 318
320 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploadsNoRemainder) 319 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploadsNoRemainder)
321 { 320 {
322 appendFullUploadsToUpdateQueue(0); 321 appendFullUploadsToUpdateQueue(0);
323 appendPartialUploadsToUpdateQueue(partialNoRemainderCount); 322 appendPartialUploadsToUpdateQueue(partialNoRemainderCount);
324 DebugScopedSetImplThread implThread; 323 DebugScopedSetImplThread implThread;
325 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 324 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
326 325
327 EXPECT_EQ(1, m_numBeginUploads); 326 EXPECT_EQ(1, m_numBeginUploads);
328 EXPECT_EQ(1, m_numEndUploads); 327 EXPECT_EQ(1, m_numEndUploads);
329 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes); 328 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes);
330 EXPECT_EQ(partialNoRemainderCount, m_numPreviousUploads); 329 EXPECT_EQ(partialNoRemainderCount, m_numPreviousUploads);
331 } 330 }
332 331
333 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploadsNoRemainder) 332 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploadsNoRemainder)
334 { 333 {
335 appendFullUploadsToUpdateQueue(fullNoRemainderCount); 334 appendFullUploadsToUpdateQueue(fullNoRemainderCount);
336 appendPartialUploadsToUpdateQueue(partialNoRemainderCount); 335 appendPartialUploadsToUpdateQueue(partialNoRemainderCount);
337 DebugScopedSetImplThread implThread; 336 DebugScopedSetImplThread implThread;
338 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 337 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
339 338
340 EXPECT_EQ(1, m_numBeginUploads); 339 EXPECT_EQ(1, m_numBeginUploads);
341 EXPECT_EQ(1, m_numEndUploads); 340 EXPECT_EQ(1, m_numEndUploads);
342 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes); 341 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes);
343 EXPECT_EQ(fullNoRemainderCount + partialNoRemainderCount, m_numPreviousUploa ds); 342 EXPECT_EQ(fullNoRemainderCount + partialNoRemainderCount, m_numPreviousUploa ds);
344 } 343 }
345 344
346 345
347 // MIN/MAX REMAINDER TESTS 346 // MIN/MAX REMAINDER TESTS
348 // This class of tests mix and match uploading 1 more and 1 less texture 347 // This class of tests mix and match uploading 1 more and 1 less texture
349 // than a multiple of the flush period. 348 // than a multiple of the flush period.
350 349
351 const int fullMinRemainderCount = fullNoRemainderCount + 1; 350 const int fullMinRemainderCount = fullNoRemainderCount + 1;
352 const int fullMaxRemainderCount = fullNoRemainderCount - 1; 351 const int fullMaxRemainderCount = fullNoRemainderCount - 1;
353 const int partialMinRemainderCount = partialNoRemainderCount + 1; 352 const int partialMinRemainderCount = partialNoRemainderCount + 1;
354 const int partialMaxRemainderCount = partialNoRemainderCount - 1; 353 const int partialMaxRemainderCount = partialNoRemainderCount - 1;
355 354
356 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialMinRemainder) 355 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialMinRemainder)
357 { 356 {
358 appendFullUploadsToUpdateQueue(fullMinRemainderCount); 357 appendFullUploadsToUpdateQueue(fullMinRemainderCount);
359 appendPartialUploadsToUpdateQueue(partialMinRemainderCount); 358 appendPartialUploadsToUpdateQueue(partialMinRemainderCount);
360 DebugScopedSetImplThread implThread; 359 DebugScopedSetImplThread implThread;
361 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 360 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
362 361
363 EXPECT_EQ(1, m_numBeginUploads); 362 EXPECT_EQ(1, m_numBeginUploads);
364 EXPECT_EQ(1, m_numEndUploads); 363 EXPECT_EQ(1, m_numEndUploads);
365 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler + 2, m_numP reviousFlushes); 364 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler + 2, m_numP reviousFlushes);
366 EXPECT_EQ(fullMinRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads); 365 EXPECT_EQ(fullMinRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads);
367 } 366 }
368 367
369 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialUploadsMaxRemainder) 368 TEST_F(CCTextureUpdateControllerTest, ManyFullAndPartialUploadsMaxRemainder)
370 { 369 {
371 appendFullUploadsToUpdateQueue(fullMaxRemainderCount); 370 appendFullUploadsToUpdateQueue(fullMaxRemainderCount);
372 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount); 371 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount);
373 DebugScopedSetImplThread implThread; 372 DebugScopedSetImplThread implThread;
374 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 373 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
375 374
376 EXPECT_EQ(1, m_numBeginUploads); 375 EXPECT_EQ(1, m_numBeginUploads);
377 EXPECT_EQ(1, m_numEndUploads); 376 EXPECT_EQ(1, m_numEndUploads);
378 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes); 377 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi ousFlushes);
379 EXPECT_EQ(fullMaxRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads); 378 EXPECT_EQ(fullMaxRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads);
380 } 379 }
381 380
382 TEST_F(CCTextureUpdateControllerTest, ManyFullMinRemainderManyPartialMaxRemainde r) 381 TEST_F(CCTextureUpdateControllerTest, ManyFullMinRemainderManyPartialMaxRemainde r)
383 { 382 {
384 appendFullUploadsToUpdateQueue(fullMinRemainderCount); 383 appendFullUploadsToUpdateQueue(fullMinRemainderCount);
385 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount); 384 appendPartialUploadsToUpdateQueue(partialMaxRemainderCount);
386 DebugScopedSetImplThread implThread; 385 DebugScopedSetImplThread implThread;
387 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 386 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
388 387
389 EXPECT_EQ(1, m_numBeginUploads); 388 EXPECT_EQ(1, m_numBeginUploads);
390 EXPECT_EQ(1, m_numEndUploads); 389 EXPECT_EQ(1, m_numEndUploads);
391 EXPECT_EQ((fullUploadFlushMultipler+1) + partialUploadFlushMultipler, m_numP reviousFlushes); 390 EXPECT_EQ((fullUploadFlushMultipler+1) + partialUploadFlushMultipler, m_numP reviousFlushes);
392 EXPECT_EQ(fullMinRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads); 391 EXPECT_EQ(fullMinRemainderCount + partialMaxRemainderCount, m_numPreviousUpl oads);
393 } 392 }
394 393
395 TEST_F(CCTextureUpdateControllerTest, ManyFullMaxRemainderManyPartialMinRemainde r) 394 TEST_F(CCTextureUpdateControllerTest, ManyFullMaxRemainderManyPartialMinRemainde r)
396 { 395 {
397 appendFullUploadsToUpdateQueue(fullMaxRemainderCount); 396 appendFullUploadsToUpdateQueue(fullMaxRemainderCount);
398 appendPartialUploadsToUpdateQueue(partialMinRemainderCount); 397 appendPartialUploadsToUpdateQueue(partialMinRemainderCount);
399 DebugScopedSetImplThread implThread; 398 DebugScopedSetImplThread implThread;
400 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), m_totalUploadCountExpected); 399 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), m_totalUploadCountExpected);
401 400
402 EXPECT_EQ(1, m_numBeginUploads); 401 EXPECT_EQ(1, m_numBeginUploads);
403 EXPECT_EQ(1, m_numEndUploads); 402 EXPECT_EQ(1, m_numEndUploads);
404 EXPECT_EQ(fullUploadFlushMultipler + (partialUploadFlushMultipler+1), m_numP reviousFlushes); 403 EXPECT_EQ(fullUploadFlushMultipler + (partialUploadFlushMultipler+1), m_numP reviousFlushes);
405 EXPECT_EQ(fullMaxRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads); 404 EXPECT_EQ(fullMaxRemainderCount + partialMinRemainderCount, m_numPreviousUpl oads);
406 } 405 }
407 406
408 407
409 // MULTIPLE UPDATE TESTS 408 // MULTIPLE UPDATE TESTS
410 // These tests attempt to upload too many textures at once, requiring 409 // These tests attempt to upload too many textures at once, requiring
(...skipping 12 matching lines...) Expand all
423 422
424 int expectedPreviousFlushes = 0; 423 int expectedPreviousFlushes = 0;
425 int expectedPreviousUploads = 0; 424 int expectedPreviousUploads = 0;
426 425
427 setMaxUploadCountPerUpdate(kMaxUploadsPerUpdate); 426 setMaxUploadCountPerUpdate(kMaxUploadsPerUpdate);
428 appendFullUploadsToUpdateQueue(kFullUploads); 427 appendFullUploadsToUpdateQueue(kFullUploads);
429 appendPartialUploadsToUpdateQueue(kPartialUploads); 428 appendPartialUploadsToUpdateQueue(kPartialUploads);
430 429
431 // First update (40 full) 430 // First update (40 full)
432 DebugScopedSetImplThread implThread; 431 DebugScopedSetImplThread implThread;
433 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); 432 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), kMaxUploadsPerUpdate);
434 433
435 EXPECT_EQ(1, m_numBeginUploads); 434 EXPECT_EQ(1, m_numBeginUploads);
436 EXPECT_EQ(1, m_numEndUploads); 435 EXPECT_EQ(1, m_numEndUploads);
437 436
438 expectedPreviousFlushes = expectedFlushes(kMaxUploadsPerUpdate, kFlushPeriod Full); 437 expectedPreviousFlushes = expectedFlushes(kMaxUploadsPerUpdate, kFlushPeriod Full);
439 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes); 438 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes);
440 439
441 expectedPreviousUploads = kMaxUploadsPerUpdate; 440 expectedPreviousUploads = kMaxUploadsPerUpdate;
442 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads); 441 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads);
443 442
444 // Second update (40 full) 443 // Second update (40 full)
445 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); 444 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), kMaxUploadsPerUpdate);
446 445
447 EXPECT_EQ(2, m_numBeginUploads); 446 EXPECT_EQ(2, m_numBeginUploads);
448 EXPECT_EQ(2, m_numEndUploads); 447 EXPECT_EQ(2, m_numEndUploads);
449 448
450 expectedPreviousFlushes = expectedFlushes(kMaxUploadsPerUpdate, kFlushPeriod Full); 449 expectedPreviousFlushes = expectedFlushes(kMaxUploadsPerUpdate, kFlushPeriod Full);
451 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes); 450 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes);
452 451
453 expectedPreviousUploads = kMaxUploadsPerUpdate; 452 expectedPreviousUploads = kMaxUploadsPerUpdate;
454 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads); 453 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads);
455 454
456 // Third update (20 full, 20 partial) 455 // Third update (20 full, 20 partial)
457 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); 456 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), kMaxUploadsPerUpdate);
458 457
459 EXPECT_EQ(3, m_numBeginUploads); 458 EXPECT_EQ(3, m_numBeginUploads);
460 EXPECT_EQ(3, m_numEndUploads); 459 EXPECT_EQ(3, m_numEndUploads);
461 460
462 expectedPreviousFlushes = expectedFlushes(kFullUploads-kMaxUploadsPerUpdate* 2, kFlushPeriodFull) + 461 expectedPreviousFlushes = expectedFlushes(kFullUploads-kMaxUploadsPerUpdate* 2, kFlushPeriodFull) +
463 expectedFlushes(kPartialUploads, kFlushPeriodParti al); 462 expectedFlushes(kPartialUploads, kFlushPeriodParti al);
464 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes); 463 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes);
465 464
466 expectedPreviousUploads = (kFullUploads-kMaxUploadsPerUpdate*2)+kPartialUplo ads; 465 expectedPreviousUploads = (kFullUploads-kMaxUploadsPerUpdate*2)+kPartialUplo ads;
467 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads); 466 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads);
(...skipping 10 matching lines...) Expand all
478 477
479 int expectedPreviousFlushes = 0; 478 int expectedPreviousFlushes = 0;
480 int expectedPreviousUploads = 0; 479 int expectedPreviousUploads = 0;
481 480
482 setMaxUploadCountPerUpdate(kMaxUploadsPerUpdate); 481 setMaxUploadCountPerUpdate(kMaxUploadsPerUpdate);
483 appendFullUploadsToUpdateQueue(kFullUploads); 482 appendFullUploadsToUpdateQueue(kFullUploads);
484 appendPartialUploadsToUpdateQueue(kPartialUploads); 483 appendPartialUploadsToUpdateQueue(kPartialUploads);
485 484
486 // First update (40 full) 485 // First update (40 full)
487 DebugScopedSetImplThread implThread; 486 DebugScopedSetImplThread implThread;
488 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); 487 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), kMaxUploadsPerUpdate);
489 488
490 EXPECT_EQ(1, m_numBeginUploads); 489 EXPECT_EQ(1, m_numBeginUploads);
491 EXPECT_EQ(1, m_numEndUploads); 490 EXPECT_EQ(1, m_numEndUploads);
492 491
493 expectedPreviousFlushes = expectedFlushes(kMaxUploadsPerUpdate, kFlushPeriod Full); 492 expectedPreviousFlushes = expectedFlushes(kMaxUploadsPerUpdate, kFlushPeriod Full);
494 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes); 493 EXPECT_EQ(expectedPreviousFlushes, m_numPreviousFlushes);
495 494
496 expectedPreviousUploads = kMaxUploadsPerUpdate; 495 expectedPreviousUploads = kMaxUploadsPerUpdate;
497 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads); 496 EXPECT_EQ(expectedPreviousUploads, m_numPreviousUploads);
498 497
499 // Second update (30 full, optionally 10 partial) 498 // Second update (30 full, optionally 10 partial)
500 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); 499 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), kMaxUploadsPerUpdate);
501 500
502 EXPECT_EQ(2, m_numBeginUploads); 501 EXPECT_EQ(2, m_numBeginUploads);
503 EXPECT_EQ(2, m_numEndUploads); 502 EXPECT_EQ(2, m_numEndUploads);
504 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate); 503 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate);
505 // Be lenient on the exact number of flushes here, as the number of flushes 504 // Be lenient on the exact number of flushes here, as the number of flushes
506 // will depend on whether some partial uploads were performed. 505 // will depend on whether some partial uploads were performed.
507 // onFlush(), onUpload(), and onEndUpload() will do basic flush checks for u s anyway. 506 // onFlush(), onUpload(), and onEndUpload() will do basic flush checks for u s anyway.
508 507
509 // Third update (30 partial OR 20 partial if 10 partial uploaded in second u pdate) 508 // Third update (30 partial OR 20 partial if 10 partial uploaded in second u pdate)
510 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_copie r, &m_uploader, m_queue.get(), kMaxUploadsPerUpdate); 509 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa der, m_queue.get(), kMaxUploadsPerUpdate);
511 510
512 EXPECT_EQ(3, m_numBeginUploads); 511 EXPECT_EQ(3, m_numBeginUploads);
513 EXPECT_EQ(3, m_numEndUploads); 512 EXPECT_EQ(3, m_numEndUploads);
514 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate); 513 EXPECT_LE(m_numPreviousUploads, kMaxUploadsPerUpdate);
515 // Be lenient on the exact number of flushes here as well. 514 // Be lenient on the exact number of flushes here as well.
516 515
517 // Final sanity checks 516 // Final sanity checks
518 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads); 517 EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads);
519 } 518 }
520 519
521 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController Client { 520 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController Client {
522 public: 521 public:
523 FakeCCTextureUpdateControllerClient() { reset(); } 522 FakeCCTextureUpdateControllerClient() { reset(); }
524 void reset() { m_readyToFinalizeCalled = false; } 523 void reset() { m_readyToFinalizeCalled = false; }
525 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; } 524 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; }
526 525
527 virtual void readyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal led = true; } 526 virtual void readyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal led = true; }
528 527
529 protected: 528 protected:
530 bool m_readyToFinalizeCalled; 529 bool m_readyToFinalizeCalled;
531 }; 530 };
532 531
533 class FakeCCTextureUpdateController : public cc::CCTextureUpdateController { 532 class FakeCCTextureUpdateController : public cc::CCTextureUpdateController {
534 public: 533 public:
535 static PassOwnPtr<FakeCCTextureUpdateController> create(cc::CCTextureUpdateC ontrollerClient* client, cc::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploa der* uploader) 534 static PassOwnPtr<FakeCCTextureUpdateController> create(cc::CCTextureUpdateC ontrollerClient* client, cc::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureUploader* uploader)
536 { 535 {
537 return adoptPtr(new FakeCCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader)); 536 return adoptPtr(new FakeCCTextureUpdateController(client, thread, queue, resourceProvider, uploader));
538 } 537 }
539 538
540 void setMonotonicTimeNow(double time) { m_monotonicTimeNow = time; } 539 void setMonotonicTimeNow(double time) { m_monotonicTimeNow = time; }
541 virtual double monotonicTimeNow() const OVERRIDE { return m_monotonicTimeNow ; } 540 virtual double monotonicTimeNow() const OVERRIDE { return m_monotonicTimeNow ; }
542 void setUpdateMoreTexturesTime(double time) { m_updateMoreTexturesTime = tim e; } 541 void setUpdateMoreTexturesTime(double time) { m_updateMoreTexturesTime = tim e; }
543 virtual double updateMoreTexturesTime() const OVERRIDE { return m_updateMore TexturesTime; } 542 virtual double updateMoreTexturesTime() const OVERRIDE { return m_updateMore TexturesTime; }
544 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz e; } 543 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz e; }
545 virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMore TexturesSize; } 544 virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMore TexturesSize; }
546 545
547 protected: 546 protected:
548 FakeCCTextureUpdateController(cc::CCTextureUpdateControllerClient* client, c c::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) 547 FakeCCTextureUpdateController(cc::CCTextureUpdateControllerClient* client, c c::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureUploader* uploader)
549 : cc::CCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader) 548 : cc::CCTextureUpdateController(client, thread, queue, resourceProvider, uploader)
550 , m_monotonicTimeNow(0) 549 , m_monotonicTimeNow(0)
551 , m_updateMoreTexturesTime(0) 550 , m_updateMoreTexturesTime(0)
552 , m_updateMoreTexturesSize(0) { } 551 , m_updateMoreTexturesSize(0) { }
553 552
554 double m_monotonicTimeNow; 553 double m_monotonicTimeNow;
555 double m_updateMoreTexturesTime; 554 double m_updateMoreTexturesTime;
556 size_t m_updateMoreTexturesSize; 555 size_t m_updateMoreTexturesSize;
557 }; 556 };
558 557
559 static void runPendingTask(FakeCCThread* thread, FakeCCTextureUpdateController* controller) 558 static void runPendingTask(FakeCCThread* thread, FakeCCTextureUpdateController* controller)
560 { 559 {
561 EXPECT_TRUE(thread->hasPendingTask()); 560 EXPECT_TRUE(thread->hasPendingTask());
562 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread->pen dingDelayMs() / 1000.0); 561 controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread->pen dingDelayMs() / 1000.0);
563 thread->runPendingTask(); 562 thread->runPendingTask();
564 } 563 }
565 564
566 TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures) 565 TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures)
567 { 566 {
568 FakeCCTextureUpdateControllerClient client; 567 FakeCCTextureUpdateControllerClient client;
569 FakeCCThread thread; 568 FakeCCThread thread;
570 569
571 setMaxUploadCountPerUpdate(1); 570 setMaxUploadCountPerUpdate(1);
572 appendFullUploadsToUpdateQueue(3); 571 appendFullUploadsToUpdateQueue(3);
573 appendPartialUploadsToUpdateQueue(0); 572 appendPartialUploadsToUpdateQueue(0);
574 573
575 DebugScopedSetImplThread implThread; 574 DebugScopedSetImplThread implThread;
576 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); 575 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_upl oader));
577 576
578 controller->setMonotonicTimeNow(0); 577 controller->setMonotonicTimeNow(0);
579 controller->setUpdateMoreTexturesTime(0.1); 578 controller->setUpdateMoreTexturesTime(0.1);
580 controller->setUpdateMoreTexturesSize(1); 579 controller->setUpdateMoreTexturesSize(1);
581 // Not enough time for any updates. 580 // Not enough time for any updates.
582 controller->performMoreUpdates(0.09); 581 controller->performMoreUpdates(0.09);
583 EXPECT_FALSE(thread.hasPendingTask()); 582 EXPECT_FALSE(thread.hasPendingTask());
584 EXPECT_EQ(0, m_numBeginUploads); 583 EXPECT_EQ(0, m_numBeginUploads);
585 EXPECT_EQ(0, m_numEndUploads); 584 EXPECT_EQ(0, m_numEndUploads);
586 585
(...skipping 25 matching lines...) Expand all
612 TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates) 611 TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates)
613 { 612 {
614 FakeCCTextureUpdateControllerClient client; 613 FakeCCTextureUpdateControllerClient client;
615 FakeCCThread thread; 614 FakeCCThread thread;
616 615
617 setMaxUploadCountPerUpdate(1); 616 setMaxUploadCountPerUpdate(1);
618 appendFullUploadsToUpdateQueue(2); 617 appendFullUploadsToUpdateQueue(2);
619 appendPartialUploadsToUpdateQueue(0); 618 appendPartialUploadsToUpdateQueue(0);
620 619
621 DebugScopedSetImplThread implThread; 620 DebugScopedSetImplThread implThread;
622 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); 621 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_upl oader));
623 622
624 controller->setMonotonicTimeNow(0); 623 controller->setMonotonicTimeNow(0);
625 controller->setUpdateMoreTexturesTime(0.1); 624 controller->setUpdateMoreTexturesTime(0.1);
626 controller->setUpdateMoreTexturesSize(1); 625 controller->setUpdateMoreTexturesSize(1);
627 // Enough time for 3 updates but only 2 necessary. 626 // Enough time for 3 updates but only 2 necessary.
628 controller->performMoreUpdates(0.31); 627 controller->performMoreUpdates(0.31);
629 runPendingTask(&thread, controller.get()); 628 runPendingTask(&thread, controller.get());
630 runPendingTask(&thread, controller.get()); 629 runPendingTask(&thread, controller.get());
631 EXPECT_FALSE(thread.hasPendingTask()); 630 EXPECT_FALSE(thread.hasPendingTask());
632 EXPECT_TRUE(client.readyToFinalizeCalled()); 631 EXPECT_TRUE(client.readyToFinalizeCalled());
(...skipping 18 matching lines...) Expand all
651 TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime) 650 TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime)
652 { 651 {
653 FakeCCTextureUpdateControllerClient client; 652 FakeCCTextureUpdateControllerClient client;
654 FakeCCThread thread; 653 FakeCCThread thread;
655 654
656 setMaxUploadCountPerUpdate(1); 655 setMaxUploadCountPerUpdate(1);
657 appendFullUploadsToUpdateQueue(2); 656 appendFullUploadsToUpdateQueue(2);
658 appendPartialUploadsToUpdateQueue(0); 657 appendPartialUploadsToUpdateQueue(0);
659 658
660 DebugScopedSetImplThread implThread; 659 DebugScopedSetImplThread implThread;
661 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_cop ier, &m_uploader)); 660 OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateControll er::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_upl oader));
662 661
663 controller->setMonotonicTimeNow(0); 662 controller->setMonotonicTimeNow(0);
664 controller->setUpdateMoreTexturesTime(0.5); 663 controller->setUpdateMoreTexturesTime(0.5);
665 controller->setUpdateMoreTexturesSize(1); 664 controller->setUpdateMoreTexturesSize(1);
666 665
667 for (int i = 0; i < 100; i++) { 666 for (int i = 0; i < 100; i++) {
668 if (client.readyToFinalizeCalled()) 667 if (client.readyToFinalizeCalled())
669 break; 668 break;
670 669
671 // Not enough time for any updates. 670 // Not enough time for any updates.
672 controller->performMoreUpdates(0.4); 671 controller->performMoreUpdates(0.4);
673 672
674 if (thread.hasPendingTask()) 673 if (thread.hasPendingTask())
675 runPendingTask(&thread, controller.get()); 674 runPendingTask(&thread, controller.get());
676 } 675 }
677 676
678 EXPECT_FALSE(thread.hasPendingTask()); 677 EXPECT_FALSE(thread.hasPendingTask());
679 EXPECT_TRUE(client.readyToFinalizeCalled()); 678 EXPECT_TRUE(client.readyToFinalizeCalled());
680 EXPECT_EQ(2, m_numBeginUploads); 679 EXPECT_EQ(2, m_numBeginUploads);
681 EXPECT_EQ(2, m_numEndUploads); 680 EXPECT_EQ(2, m_numEndUploads);
682 EXPECT_EQ(2, m_numTotalUploads); 681 EXPECT_EQ(2, m_numTotalUploads);
683 } 682 }
684 683
685 } // namespace 684 } // namespace
OLDNEW
« no previous file with comments | « cc/CCTextureUpdateController.cpp ('k') | cc/CCThreadProxy.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698