Chromium Code Reviews| Index: cc/CCTextureUpdateController.cpp |
| diff --git a/cc/CCTextureUpdateController.cpp b/cc/CCTextureUpdateController.cpp |
| index 22207de75f9adf58e4094922578427d865dc25e6..65186e5b0260d04ebf3bc6d33f53ac382cb9ac9a 100644 |
| --- a/cc/CCTextureUpdateController.cpp |
| +++ b/cc/CCTextureUpdateController.cpp |
| @@ -34,65 +34,40 @@ size_t CCTextureUpdateController::maxPartialTextureUpdates() |
| return textureUpdatesPerTick; |
| } |
| -void CCTextureUpdateController::updateTextures(CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader, CCTextureUpdateQueue* queue, size_t count) |
| +void CCTextureUpdateController::updateTextures(CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader, CCTextureUpdateQueue* queue) |
| { |
| - if (queue->fullUploadSize() || queue->partialUploadSize()) { |
| - if (uploader->isBusy()) |
| - return; |
| - |
| - uploader->beginUploads(); |
| - |
| - size_t fullUploadCount = 0; |
| - while (queue->fullUploadSize() && fullUploadCount < count) { |
| - uploader->uploadTexture(resourceProvider, queue->takeFirstFullUpload()); |
| - fullUploadCount++; |
| - if (!(fullUploadCount % textureUploadFlushPeriod)) |
| - resourceProvider->shallowFlushIfSupported(); |
| - } |
| - |
| - // Make sure there are no dangling uploads without a flush. |
| - if (fullUploadCount % textureUploadFlushPeriod) |
| + size_t uploadCount = 0; |
| + while (queue->fullUploadSize()) { |
| + if (!(uploadCount % textureUploadFlushPeriod) && uploadCount) |
| resourceProvider->shallowFlushIfSupported(); |
| - bool moreUploads = queue->fullUploadSize(); |
| - |
| - ASSERT(queue->partialUploadSize() <= count); |
| - // We need another update batch if the number of updates remaining |
| - // in |count| is greater than the remaining partial entries. |
| - if ((count - fullUploadCount) < queue->partialUploadSize()) |
| - moreUploads = true; |
| - |
| - if (moreUploads) { |
| - uploader->endUploads(); |
| - return; |
| - } |
| - |
| - size_t partialUploadCount = 0; |
| - while (queue->partialUploadSize()) { |
| - uploader->uploadTexture(resourceProvider, queue->takeFirstPartialUpload()); |
| - partialUploadCount++; |
| - if (!(partialUploadCount % textureUploadFlushPeriod)) |
| - resourceProvider->shallowFlushIfSupported(); |
| - } |
| - |
| - // Make sure there are no dangling partial uploads without a flush. |
| - if (partialUploadCount % textureUploadFlushPeriod) |
| + uploader->uploadTexture( |
| + resourceProvider, queue->takeFirstFullUpload()); |
| + uploadCount++; |
| + } |
| + |
| + while (queue->partialUploadSize()) { |
| + if (!(uploadCount % textureUploadFlushPeriod) && uploadCount) |
| resourceProvider->shallowFlushIfSupported(); |
| - uploader->endUploads(); |
| + uploader->uploadTexture( |
| + resourceProvider, queue->takeFirstPartialUpload()); |
| + uploadCount++; |
| } |
| - size_t copyCount = 0; |
| - while (queue->copySize()) { |
| - copier->copyTexture(queue->takeFirstCopy()); |
| - copyCount++; |
| - } |
| + if (uploadCount) |
|
nduca
2012/09/18 06:03:58
I'm so confused, how do you even have incremental
reveman
2012/09/18 06:26:03
Incremental uploads are now done in CCTextureUpdat
|
| + resourceProvider->shallowFlushIfSupported(); |
| - // If we've performed any texture copies, we need to insert a flush here into the compositor context |
| - // before letting the main thread proceed as it may make draw calls to the source texture of one of |
| - // our copy operations. |
| - if (copyCount) |
| + if (queue->copySize()) { |
| + while (queue->copySize()) |
| + copier->copyTexture(queue->takeFirstCopy()); |
| + |
| + // If we've performed any texture copies, we need to insert a flush |
| + // here into the compositor context before letting the main thread |
| + // proceed as it may make draw calls to the source texture of one of |
| + // our copy operations. |
| copier->flush(); |
| + } |
| } |
| CCTextureUpdateController::CCTextureUpdateController(CCTextureUpdateControllerClient* client, CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) |
| @@ -137,9 +112,7 @@ void CCTextureUpdateController::performMoreUpdates( |
| void CCTextureUpdateController::finalize() |
| { |
| - while (m_queue->hasMoreUpdates()) |
| - updateTextures(m_resourceProvider, m_copier, m_uploader, m_queue.get(), |
| - updateMoreTexturesSize()); |
| + updateTextures(m_resourceProvider, m_copier, m_uploader, m_queue.get()); |
| } |
| void CCTextureUpdateController::onTimerFired() |