| Index: src/gpu/GrBatchAtlas.cpp
|
| diff --git a/src/gpu/GrBatchAtlas.cpp b/src/gpu/GrBatchAtlas.cpp
|
| index c11c32b38db334072e821b4007e0e4687581f24b..8ffa7f295e5e74bedbe691220b66b556e8cc5fbe 100644
|
| --- a/src/gpu/GrBatchAtlas.cpp
|
| +++ b/src/gpu/GrBatchAtlas.cpp
|
| @@ -17,9 +17,9 @@ static inline void adjust_for_offset(SkIPoint16* loc, const SkIPoint16& offset)
|
| loc->fY += offset.fY;
|
| }
|
|
|
| -static GrBatchAtlas::AtlasID create_id(int index, int generation) {
|
| - // Generation ID can roll over because we only check for equality
|
| +static GrBatchAtlas::AtlasID create_id(uint32_t index, uint64_t generation) {
|
| SkASSERT(index < (1 << 16));
|
| + SkASSERT(generation < ((uint64_t)1 << 48));
|
| return generation << 16 | index;
|
| }
|
|
|
| @@ -40,8 +40,8 @@ public:
|
| // monotonically incrementing number which is bumped every time the cpu backing store is
|
| // wiped, or when the plot itself is evicted from the atlas(ie, there is continuity in genID()
|
| // across atlas spills)
|
| - int index() const { return fIndex; }
|
| - int genID() const { return fGenID; }
|
| + uint32_t index() const { return fIndex; }
|
| + uint64_t genID() const { return fGenID; }
|
| GrBatchAtlas::AtlasID id() { return fID; }
|
|
|
| GrTexture* texture() const { return fTexture; }
|
| @@ -121,8 +121,8 @@ public:
|
| SkDEBUGCODE(fDirty = false;)
|
| }
|
|
|
| - int x() const { return fX; }
|
| - int y() const { return fY; }
|
| + uint32_t x() const { return fX; }
|
| + uint32_t y() const { return fY; }
|
|
|
| private:
|
| BatchPlot()
|
| @@ -153,7 +153,7 @@ private:
|
| delete fRects;
|
| }
|
|
|
| - void init(GrBatchAtlas* atlas, GrTexture* texture, int index, uint32_t generation,
|
| + void init(GrBatchAtlas* atlas, GrTexture* texture, int index, uint64_t generation,
|
| int offX, int offY, int width, int height, size_t bpp) {
|
| fIndex = index;
|
| fGenID = generation;
|
| @@ -176,13 +176,13 @@ private:
|
| BatchToken fLastUse;
|
|
|
| uint32_t fIndex;
|
| - uint32_t fGenID;
|
| + uint64_t fGenID;
|
| GrBatchAtlas::AtlasID fID;
|
| unsigned char* fData;
|
| - int fWidth;
|
| - int fHeight;
|
| - int fX;
|
| - int fY;
|
| + uint32_t fWidth;
|
| + uint32_t fHeight;
|
| + uint32_t fX;
|
| + uint32_t fY;
|
| GrTexture* fTexture;
|
| GrRectanizer* fRects;
|
| GrBatchAtlas* fAtlas;
|
| @@ -226,8 +226,8 @@ GrBatchAtlas::GrBatchAtlas(GrTexture* texture, int numPlotsX, int numPlotsY)
|
| , fPlotHeight(texture->height() / numPlotsY)
|
| , fAtlasGeneration(kInvalidAtlasGeneration + 1) {
|
| SkASSERT(fNumPlotsX * fNumPlotsY <= BulkUseTokenUpdater::kMaxPlots);
|
| - SkASSERT(fPlotWidth * fNumPlotsX == texture->width());
|
| - SkASSERT(fPlotHeight * fNumPlotsY == texture->height());
|
| + SkASSERT(fPlotWidth * fNumPlotsX == static_cast<uint32_t>(texture->width()));
|
| + SkASSERT(fPlotHeight * fNumPlotsY == static_cast<uint32_t>(texture->height()));
|
|
|
| // We currently do not support compressed atlases...
|
| SkASSERT(!GrPixelConfigIsCompressed(texture->desc().fConfig));
|
| @@ -239,7 +239,7 @@ GrBatchAtlas::GrBatchAtlas(GrTexture* texture, int numPlotsX, int numPlotsY)
|
| SkAutoTUnref<BatchPlot>* currPlot = fPlotArray;
|
| for (int y = fNumPlotsY - 1, r = 0; y >= 0; --y, ++r) {
|
| for (int x = fNumPlotsX - 1, c = 0; x >= 0; --x, ++c) {
|
| - int id = r * fNumPlotsX + c;
|
| + uint32_t id = r * fNumPlotsX + c;
|
| currPlot->reset(SkNEW(BatchPlot));
|
| (*currPlot)->init(this, texture, id, 1, x, y, fPlotWidth, fPlotHeight, fBPP);
|
|
|
| @@ -287,7 +287,9 @@ inline void GrBatchAtlas::updatePlot(GrBatchTarget* batchTarget, AtlasID* id, Ba
|
| bool GrBatchAtlas::addToAtlas(AtlasID* id, GrBatchTarget* batchTarget,
|
| int width, int height, const void* image, SkIPoint16* loc) {
|
| // We should already have a texture, TODO clean this up
|
| - SkASSERT(fTexture && width <= fPlotWidth && height <= fPlotHeight);
|
| + SkASSERT(fTexture &&
|
| + static_cast<uint32_t>(width) <= fPlotWidth &&
|
| + static_cast<uint32_t>(height) <= fPlotHeight);
|
|
|
| // now look through all allocated plots for one we can share, in Most Recently Refed order
|
| GrBatchPlotList::Iter plotIter;
|
| @@ -331,7 +333,7 @@ bool GrBatchAtlas::addToAtlas(AtlasID* id, GrBatchTarget* batchTarget,
|
| int index = plot->index();
|
| int x = plot->x();
|
| int y = plot->y();
|
| - int generation = plot->genID();
|
| + uint64_t generation = plot->genID();
|
|
|
| this->processEviction(plot->id());
|
| fPlotList.remove(plot);
|
| @@ -352,14 +354,14 @@ bool GrBatchAtlas::addToAtlas(AtlasID* id, GrBatchTarget* batchTarget,
|
| }
|
|
|
| bool GrBatchAtlas::hasID(AtlasID id) {
|
| - int index = GetIndexFromID(id);
|
| + uint32_t index = GetIndexFromID(id);
|
| SkASSERT(index < fNumPlotsX * fNumPlotsY);
|
| return fPlotArray[index]->genID() == GetGenerationFromID(id);
|
| }
|
|
|
| void GrBatchAtlas::setLastUseToken(AtlasID id, BatchToken batchToken) {
|
| SkASSERT(this->hasID(id));
|
| - int index = GetIndexFromID(id);
|
| + uint32_t index = GetIndexFromID(id);
|
| SkASSERT(index < fNumPlotsX * fNumPlotsY);
|
| this->makeMRU(fPlotArray[index]);
|
| fPlotArray[index]->setLastUseToken(batchToken);
|
|
|