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

Unified Diff: src/gpu/GrBatchAtlas.cpp

Issue 1061713003: Revert of 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrBatchAtlas.h ('k') | src/gpu/GrBatchFontCache.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrBatchAtlas.cpp
diff --git a/src/gpu/GrBatchAtlas.cpp b/src/gpu/GrBatchAtlas.cpp
index 113025eac73a15f7e83cd2df8172054d766dceaf..3374e00a9f7080f143057c792abdca4dfe992ef6 100644
--- a/src/gpu/GrBatchAtlas.cpp
+++ b/src/gpu/GrBatchAtlas.cpp
@@ -10,6 +10,12 @@
#include "GrGpu.h"
#include "GrRectanizer.h"
#include "GrTracing.h"
+
+// for testing
+#define ATLAS_STATS 0
+#if ATLAS_STATS
+static int g_UploadCount = 0;
+#endif
static inline void adjust_for_offset(SkIPoint16* loc, const SkIPoint16& offset) {
loc->fX += offset.fX;
@@ -67,6 +73,10 @@
adjust_for_offset(loc, fOffset);
SkDEBUGCODE(fDirty = true;)
+#if ATLAS_STATS
+ ++g_UploadCount;
+#endif
+
return true;
}
@@ -76,15 +86,9 @@
// when we can evict a plot from the cache, ie if the last ref has already flushed through
// the gpu then we can reuse the plot
BatchToken lastUploadToken() const { return fLastUpload; }
- BatchToken lastUseToken() const { return fLastUse; }
- void setLastUploadToken(BatchToken batchToken) {
- SkASSERT(batchToken >= fLastUpload);
- fLastUpload = batchToken;
- }
- void setLastUseToken(BatchToken batchToken) {
- SkASSERT(batchToken >= fLastUse);
- fLastUse = batchToken;
- }
+ BatchToken lastRefToken() const { return fLastRef; }
+ void setLastUploadToken(BatchToken batchToken) { fLastUpload = batchToken; }
+ void setLastRefToken(BatchToken batchToken) { fLastRef = batchToken; }
void uploadToTexture(GrBatchTarget::TextureUploader uploader) {
// We should only be issuing uploads if we are in fact dirty
@@ -123,7 +127,7 @@
private:
BatchPlot()
: fLastUpload(0)
- , fLastUse(0)
+ , fLastRef(0)
, fIndex(-1)
, fGenID(-1)
, fID(0)
@@ -173,7 +177,7 @@
}
BatchToken fLastUpload;
- BatchToken fLastUse;
+ BatchToken fLastRef;
uint32_t fIndex;
uint32_t fGenID;
@@ -225,7 +229,6 @@
, fPlotWidth(texture->width() / numPlotsX)
, fPlotHeight(texture->height() / numPlotsY)
, fAtlasGeneration(kInvalidAtlasGeneration + 1) {
- SkASSERT(fNumPlotsX * fNumPlotsY <= BulkUseTokenUpdater::kMaxPlots);
SkASSERT(fPlotWidth * fNumPlotsX == texture->width());
SkASSERT(fPlotHeight * fNumPlotsY == texture->height());
@@ -253,6 +256,10 @@
GrBatchAtlas::~GrBatchAtlas() {
SkSafeUnref(fTexture);
SkDELETE_ARRAY(fPlotArray);
+
+#if ATLAS_STATS
+ SkDebugf("Num uploads: %d\n", g_UploadCount);
+#endif
}
void GrBatchAtlas::processEviction(AtlasID id) {
@@ -306,7 +313,7 @@
plotIter.init(fPlotList, GrBatchPlotList::Iter::kTail_IterStart);
plot = plotIter.get();
SkASSERT(plot);
- if (batchTarget->isIssued(plot->lastUseToken())) {
+ if (batchTarget->isIssued(plot->lastRefToken())) {
this->processEviction(plot->id());
plot->resetRects();
SkDEBUGCODE(bool verify = )plot->addSubImage(width, height, image, loc, fBPP * width);
@@ -322,7 +329,7 @@
// off the plot(ie let the batch target manage it) and create a new plot in its place in our
// array. If it is equal to the currentToken, then the caller has to flush draws to the batch
// target so we can spin off the plot
- if (plot->lastUseToken() == batchTarget->currentToken()) {
+ if (plot->lastRefToken() == batchTarget->currentToken()) {
return false;
}
@@ -352,24 +359,14 @@
}
bool GrBatchAtlas::hasID(AtlasID id) {
- int index = GetIndexFromID(id);
+ int index = this->getIndexFromID(id);
SkASSERT(index < fNumPlotsX * fNumPlotsY);
- return fPlotArray[index]->genID() == GetGenerationFromID(id);
-}
-
-void GrBatchAtlas::setLastUseToken(AtlasID id, BatchToken batchToken) {
+ return fPlotArray[index]->genID() == this->getGenerationFromID(id);
+}
+
+void GrBatchAtlas::setLastRefToken(AtlasID id, BatchToken batchToken) {
SkASSERT(this->hasID(id));
- int index = GetIndexFromID(id);
- SkASSERT(index < fNumPlotsX * fNumPlotsY);
+ int index = this->getIndexFromID(id);
this->makeMRU(fPlotArray[index]);
- fPlotArray[index]->setLastUseToken(batchToken);
-}
-
-void GrBatchAtlas::setLastUseTokenBulk(const BulkUseTokenUpdater& updater, BatchToken batchToken) {
- int plotsToUpdateCount = updater.fPlotsToUpdate.count();
- for (int i = 0; i < plotsToUpdateCount; i++) {
- BatchPlot* plot = fPlotArray[updater.fPlotsToUpdate[i]];
- this->makeMRU(plot);
- plot->setLastUseToken(batchToken);
- }
-}
+ fPlotArray[index]->setLastRefToken(batchToken);
+}
« no previous file with comments | « src/gpu/GrBatchAtlas.h ('k') | src/gpu/GrBatchFontCache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698