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

Side by Side Diff: src/gpu/GrBatchAtlas.cpp

Issue 1050113004: Adding bulk plot reffer to cached textblobs (Closed) Base URL: https://skia.googlesource.com/skia.git@atlastext
Patch Set: Created 5 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrBatchAtlas.h" 8 #include "GrBatchAtlas.h"
9 #include "GrBatchTarget.h" 9 #include "GrBatchTarget.h"
10 #include "GrGpu.h" 10 #include "GrGpu.h"
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 222
223 /////////////////////////////////////////////////////////////////////////////// 223 ///////////////////////////////////////////////////////////////////////////////
224 224
225 GrBatchAtlas::GrBatchAtlas(GrTexture* texture, int numPlotsX, int numPlotsY) 225 GrBatchAtlas::GrBatchAtlas(GrTexture* texture, int numPlotsX, int numPlotsY)
226 : fTexture(texture) 226 : fTexture(texture)
227 , fNumPlotsX(numPlotsX) 227 , fNumPlotsX(numPlotsX)
228 , fNumPlotsY(numPlotsY) 228 , fNumPlotsY(numPlotsY)
229 , fPlotWidth(texture->width() / numPlotsX) 229 , fPlotWidth(texture->width() / numPlotsX)
230 , fPlotHeight(texture->height() / numPlotsY) 230 , fPlotHeight(texture->height() / numPlotsY)
231 , fAtlasGeneration(kInvalidAtlasGeneration + 1) { 231 , fAtlasGeneration(kInvalidAtlasGeneration + 1) {
232 SkASSERT(fNumPlotsX * fNumPlotsY <= BulkTokenReffer::kMaxPlots);
232 SkASSERT(fPlotWidth * fNumPlotsX == texture->width()); 233 SkASSERT(fPlotWidth * fNumPlotsX == texture->width());
233 SkASSERT(fPlotHeight * fNumPlotsY == texture->height()); 234 SkASSERT(fPlotHeight * fNumPlotsY == texture->height());
234 235
235 // We currently do not support compressed atlases... 236 // We currently do not support compressed atlases...
236 SkASSERT(!GrPixelConfigIsCompressed(texture->desc().fConfig)); 237 SkASSERT(!GrPixelConfigIsCompressed(texture->desc().fConfig));
237 238
238 // set up allocated plots 239 // set up allocated plots
239 fBPP = GrBytesPerPixel(texture->desc().fConfig); 240 fBPP = GrBytesPerPixel(texture->desc().fConfig);
240 fPlotArray = SkNEW_ARRAY(SkAutoTUnref<BatchPlot>, (fNumPlotsX * fNumPlotsY)) ; 241 fPlotArray = SkNEW_ARRAY(SkAutoTUnref<BatchPlot>, (fNumPlotsX * fNumPlotsY)) ;
241 242
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 newPlot->setLastUploadToken(batchTarget->currentToken()); 353 newPlot->setLastUploadToken(batchTarget->currentToken());
353 SkAutoTUnref<GrPlotUploader> uploader(SkNEW_ARGS(GrPlotUploader, (newPlot))) ; 354 SkAutoTUnref<GrPlotUploader> uploader(SkNEW_ARGS(GrPlotUploader, (newPlot))) ;
354 batchTarget->upload(uploader); 355 batchTarget->upload(uploader);
355 *id = newPlot->id(); 356 *id = newPlot->id();
356 plot->unref(); 357 plot->unref();
357 fAtlasGeneration++; 358 fAtlasGeneration++;
358 return true; 359 return true;
359 } 360 }
360 361
361 bool GrBatchAtlas::hasID(AtlasID id) { 362 bool GrBatchAtlas::hasID(AtlasID id) {
362 int index = this->getIndexFromID(id); 363 int index = this->GetIndexFromID(id);
363 SkASSERT(index < fNumPlotsX * fNumPlotsY); 364 SkASSERT(index < fNumPlotsX * fNumPlotsY);
364 return fPlotArray[index]->genID() == this->getGenerationFromID(id); 365 return fPlotArray[index]->genID() == this->GetGenerationFromID(id);
365 } 366 }
366 367
367 void GrBatchAtlas::setLastRefToken(AtlasID id, BatchToken batchToken) { 368 void GrBatchAtlas::setLastRefToken(AtlasID id, BatchToken batchToken) {
368 SkASSERT(this->hasID(id)); 369 SkASSERT(this->hasID(id));
369 int index = this->getIndexFromID(id); 370 int index = this->GetIndexFromID(id);
370 this->makeMRU(fPlotArray[index]); 371 this->makeMRU(fPlotArray[index]);
bsalomon 2015/04/01 20:21:31 Call setLastRefTokenInternal() here?
371 fPlotArray[index]->setLastRefToken(batchToken); 372 fPlotArray[index]->setLastRefToken(batchToken);
372 } 373 }
374
375 void GrBatchAtlas::setLastRefTokenInternal(int index, BatchToken batchToken) {
bsalomon 2015/04/01 20:21:31 tiny nit, I think we more often say "internalSetLa
376 SkASSERT(index < fNumPlotsX * fNumPlotsY);
377 this->makeMRU(fPlotArray[index]);
378 fPlotArray[index]->setLastRefToken(batchToken);
379 }
380
381 void GrBatchAtlas::setLastRefTokenBulk(const BulkTokenReffer& reffer) {
382 int plotsToUpdateCount = reffer.fPlotsToUpdate.count();
383 for (int i = 0; i < plotsToUpdateCount; i++) {
384 BatchPlot* plot = fPlotArray[reffer.fPlotsToUpdate[i]];
385 this->makeMRU(plot);
386 plot->setLastRefToken(reffer.fBatchToken);
387 }
388 }
OLDNEW
« src/gpu/GrBatchAtlas.h ('K') | « src/gpu/GrBatchAtlas.h ('k') | src/gpu/GrBatchFontCache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698