| OLD | NEW |
| 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 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 void appendPartialUploadsToUpdateQueue(int count) | 196 void appendPartialUploadsToUpdateQueue(int count) |
| 197 { | 197 { |
| 198 appendPartialUploadsOfIndexedTextureToUpdateQueue(count, 0); | 198 appendPartialUploadsOfIndexedTextureToUpdateQueue(count, 0); |
| 199 } | 199 } |
| 200 | 200 |
| 201 void setMaxUploadCountPerUpdate(int count) | 201 void setMaxUploadCountPerUpdate(int count) |
| 202 { | 202 { |
| 203 m_maxUploadCountPerUpdate = count; | 203 m_maxUploadCountPerUpdate = count; |
| 204 } | 204 } |
| 205 | 205 |
| 206 void updateTextures() |
| 207 { |
| 208 OwnPtr<CCTextureUpdateController> updateController = |
| 209 CCTextureUpdateController::create( |
| 210 NULL, |
| 211 CCProxy::implThread(), |
| 212 m_queue.release(), |
| 213 m_resourceProvider.get(), |
| 214 &m_uploader); |
| 215 updateController->finalize(); |
| 216 } |
| 217 |
| 206 protected: | 218 protected: |
| 207 // Classes required to interact and test the CCTextureUpdateController | 219 // Classes required to interact and test the CCTextureUpdateController |
| 208 OwnPtr<CCGraphicsContext> m_context; | 220 OwnPtr<CCGraphicsContext> m_context; |
| 209 OwnPtr<CCResourceProvider> m_resourceProvider; | 221 OwnPtr<CCResourceProvider> m_resourceProvider; |
| 210 OwnPtr<CCTextureUpdateQueue> m_queue; | 222 OwnPtr<CCTextureUpdateQueue> m_queue; |
| 211 TextureForUploadTest m_textures[4]; | 223 TextureForUploadTest m_textures[4]; |
| 212 TextureUploaderForUploadTest m_uploader; | 224 TextureUploaderForUploadTest m_uploader; |
| 213 OwnPtr<WebThread> m_thread; | 225 OwnPtr<WebThread> m_thread; |
| 214 WebCompositorInitializer m_compositorInitializer; | 226 WebCompositorInitializer m_compositorInitializer; |
| 215 | 227 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 void TextureUploaderForUploadTest::endUploads() | 261 void TextureUploaderForUploadTest::endUploads() |
| 250 { | 262 { |
| 251 m_test->onEndUploads(); | 263 m_test->onEndUploads(); |
| 252 } | 264 } |
| 253 | 265 |
| 254 void TextureUploaderForUploadTest::uploadTexture(cc::CCResourceProvider*, Parame
ters) | 266 void TextureUploaderForUploadTest::uploadTexture(cc::CCResourceProvider*, Parame
ters) |
| 255 { | 267 { |
| 256 m_test->onUpload(); | 268 m_test->onUpload(); |
| 257 } | 269 } |
| 258 | 270 |
| 259 | |
| 260 // ZERO UPLOADS TESTS | 271 // ZERO UPLOADS TESTS |
| 261 TEST_F(CCTextureUpdateControllerTest, ZeroUploads) | 272 TEST_F(CCTextureUpdateControllerTest, ZeroUploads) |
| 262 { | 273 { |
| 263 appendFullUploadsToUpdateQueue(0); | 274 appendFullUploadsToUpdateQueue(0); |
| 264 appendPartialUploadsToUpdateQueue(0); | 275 appendPartialUploadsToUpdateQueue(0); |
| 265 DebugScopedSetImplThread implThread; | 276 DebugScopedSetImplThread implThread; |
| 266 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 277 updateTextures(); |
| 267 | 278 |
| 268 EXPECT_EQ(0, m_numPreviousFlushes); | 279 EXPECT_EQ(0, m_numPreviousFlushes); |
| 269 EXPECT_EQ(0, m_numPreviousUploads); | 280 EXPECT_EQ(0, m_numPreviousUploads); |
| 270 } | 281 } |
| 271 | 282 |
| 272 | 283 |
| 273 // ONE UPLOAD TESTS | 284 // ONE UPLOAD TESTS |
| 274 TEST_F(CCTextureUpdateControllerTest, OneFullUpload) | 285 TEST_F(CCTextureUpdateControllerTest, OneFullUpload) |
| 275 { | 286 { |
| 276 appendFullUploadsToUpdateQueue(1); | 287 appendFullUploadsToUpdateQueue(1); |
| 277 appendPartialUploadsToUpdateQueue(0); | 288 appendPartialUploadsToUpdateQueue(0); |
| 278 DebugScopedSetImplThread implThread; | 289 DebugScopedSetImplThread implThread; |
| 279 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 290 updateTextures(); |
| 280 | 291 |
| 281 EXPECT_EQ(1, m_numPreviousFlushes); | 292 EXPECT_EQ(1, m_numPreviousFlushes); |
| 282 EXPECT_EQ(1, m_numPreviousUploads); | 293 EXPECT_EQ(1, m_numPreviousUploads); |
| 283 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; | 294 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 284 } | 295 } |
| 285 | 296 |
| 286 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload) | 297 TEST_F(CCTextureUpdateControllerTest, OnePartialUpload) |
| 287 { | 298 { |
| 288 appendFullUploadsToUpdateQueue(0); | 299 appendFullUploadsToUpdateQueue(0); |
| 289 appendPartialUploadsToUpdateQueue(1); | 300 appendPartialUploadsToUpdateQueue(1); |
| 290 DebugScopedSetImplThread implThread; | 301 DebugScopedSetImplThread implThread; |
| 291 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 302 updateTextures(); |
| 292 | 303 |
| 293 EXPECT_EQ(1, m_numPreviousFlushes); | 304 EXPECT_EQ(1, m_numPreviousFlushes); |
| 294 EXPECT_EQ(1, m_numPreviousUploads); | 305 EXPECT_EQ(1, m_numPreviousUploads); |
| 295 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; | 306 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 296 } | 307 } |
| 297 | 308 |
| 298 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload) | 309 TEST_F(CCTextureUpdateControllerTest, OneFullOnePartialUpload) |
| 299 { | 310 { |
| 300 appendFullUploadsToUpdateQueue(1); | 311 appendFullUploadsToUpdateQueue(1); |
| 301 appendPartialUploadsToUpdateQueue(1); | 312 appendPartialUploadsToUpdateQueue(1); |
| 302 DebugScopedSetImplThread implThread; | 313 DebugScopedSetImplThread implThread; |
| 303 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 314 updateTextures(); |
| 304 | 315 |
| 305 EXPECT_EQ(1, m_numPreviousFlushes); | 316 EXPECT_EQ(1, m_numPreviousFlushes); |
| 306 EXPECT_EQ(2, m_numPreviousUploads); | 317 EXPECT_EQ(2, m_numPreviousUploads); |
| 307 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; | 318 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 308 } | 319 } |
| 309 | 320 |
| 310 | 321 |
| 311 // This class of tests upload a number of textures that is a multiple of the flu
sh period. | 322 // This class of tests upload a number of textures that is a multiple of the flu
sh period. |
| 312 const int fullUploadFlushMultipler = 7; | 323 const int fullUploadFlushMultipler = 7; |
| 313 const int fullCount = fullUploadFlushMultipler * kFlushPeriodFull; | 324 const int fullCount = fullUploadFlushMultipler * kFlushPeriodFull; |
| 314 | 325 |
| 315 const int partialUploadFlushMultipler = 11; | 326 const int partialUploadFlushMultipler = 11; |
| 316 const int partialCount = partialUploadFlushMultipler * kFlushPeriodPartial; | 327 const int partialCount = partialUploadFlushMultipler * kFlushPeriodPartial; |
| 317 | 328 |
| 318 TEST_F(CCTextureUpdateControllerTest, ManyFullUploads) | 329 TEST_F(CCTextureUpdateControllerTest, ManyFullUploads) |
| 319 { | 330 { |
| 320 appendFullUploadsToUpdateQueue(fullCount); | 331 appendFullUploadsToUpdateQueue(fullCount); |
| 321 appendPartialUploadsToUpdateQueue(0); | 332 appendPartialUploadsToUpdateQueue(0); |
| 322 DebugScopedSetImplThread implThread; | 333 DebugScopedSetImplThread implThread; |
| 323 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 334 updateTextures(); |
| 324 | 335 |
| 325 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes); | 336 EXPECT_EQ(fullUploadFlushMultipler, m_numPreviousFlushes); |
| 326 EXPECT_EQ(fullCount, m_numPreviousUploads); | 337 EXPECT_EQ(fullCount, m_numPreviousUploads); |
| 327 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; | 338 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 328 } | 339 } |
| 329 | 340 |
| 330 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploads) | 341 TEST_F(CCTextureUpdateControllerTest, ManyPartialUploads) |
| 331 { | 342 { |
| 332 appendFullUploadsToUpdateQueue(0); | 343 appendFullUploadsToUpdateQueue(0); |
| 333 appendPartialUploadsToUpdateQueue(partialCount); | 344 appendPartialUploadsToUpdateQueue(partialCount); |
| 334 DebugScopedSetImplThread implThread; | 345 DebugScopedSetImplThread implThread; |
| 335 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 346 updateTextures(); |
| 336 | 347 |
| 337 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes); | 348 EXPECT_EQ(partialUploadFlushMultipler, m_numPreviousFlushes); |
| 338 EXPECT_EQ(partialCount, m_numPreviousUploads); | 349 EXPECT_EQ(partialCount, m_numPreviousUploads); |
| 339 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; | 350 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 340 } | 351 } |
| 341 | 352 |
| 342 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploads) | 353 TEST_F(CCTextureUpdateControllerTest, ManyFullManyPartialUploads) |
| 343 { | 354 { |
| 344 appendFullUploadsToUpdateQueue(fullCount); | 355 appendFullUploadsToUpdateQueue(fullCount); |
| 345 appendPartialUploadsToUpdateQueue(partialCount); | 356 appendPartialUploadsToUpdateQueue(partialCount); |
| 346 DebugScopedSetImplThread implThread; | 357 DebugScopedSetImplThread implThread; |
| 347 CCTextureUpdateController::updateTextures(m_resourceProvider.get(), &m_uploa
der, m_queue.get()); | 358 updateTextures(); |
| 348 | 359 |
| 349 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi
ousFlushes); | 360 EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numPrevi
ousFlushes); |
| 350 EXPECT_EQ(fullCount + partialCount, m_numPreviousUploads); | 361 EXPECT_EQ(fullCount + partialCount, m_numPreviousUploads); |
| 351 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; | 362 EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flus
h."; |
| 352 } | 363 } |
| 353 | 364 |
| 354 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController
Client { | 365 class FakeCCTextureUpdateControllerClient : public cc::CCTextureUpdateController
Client { |
| 355 public: | 366 public: |
| 356 FakeCCTextureUpdateControllerClient() { reset(); } | 367 FakeCCTextureUpdateControllerClient() { reset(); } |
| 357 void reset() { m_readyToFinalizeCalled = false; } | 368 void reset() { m_readyToFinalizeCalled = false; } |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 EXPECT_EQ(0u, m_queue->fullUploadSize()); | 553 EXPECT_EQ(0u, m_queue->fullUploadSize()); |
| 543 EXPECT_EQ(1u, m_queue->partialUploadSize()); | 554 EXPECT_EQ(1u, m_queue->partialUploadSize()); |
| 544 | 555 |
| 545 m_textures[1].evictBackingResource(); | 556 m_textures[1].evictBackingResource(); |
| 546 m_queue->clearUploadsToEvictedResources(); | 557 m_queue->clearUploadsToEvictedResources(); |
| 547 EXPECT_EQ(0u, m_queue->fullUploadSize()); | 558 EXPECT_EQ(0u, m_queue->fullUploadSize()); |
| 548 EXPECT_EQ(0u, m_queue->partialUploadSize()); | 559 EXPECT_EQ(0u, m_queue->partialUploadSize()); |
| 549 } | 560 } |
| 550 | 561 |
| 551 } // namespace | 562 } // namespace |
| OLD | NEW |