Index: src/gpu/GrBatchAtlas.cpp |
diff --git a/src/gpu/GrBatchAtlas.cpp b/src/gpu/GrBatchAtlas.cpp |
index 40ab0e6c0e09d562ecc483d6130a2a65db509a41..8cc6f6181149f3223c78e06f79255c7289fccd57 100644 |
--- a/src/gpu/GrBatchAtlas.cpp |
+++ b/src/gpu/GrBatchAtlas.cpp |
@@ -116,11 +116,11 @@ GrBatchAtlas::GrBatchAtlas(GrTexture* texture, int numPlotsX, int numPlotsY) |
: fTexture(texture) |
, fAtlasGeneration(kInvalidAtlasGeneration + 1) { |
- int plotWidth = texture->width() / numPlotsX; |
- int plotHeight = texture->height() / numPlotsY; |
+ fPlotWidth = texture->width() / numPlotsX; |
+ fPlotHeight = texture->height() / numPlotsY; |
SkASSERT(numPlotsX * numPlotsY <= BulkUseTokenUpdater::kMaxPlots); |
- SkASSERT(plotWidth * numPlotsX == texture->width()); |
- SkASSERT(plotHeight * numPlotsY == texture->height()); |
+ SkASSERT(fPlotWidth * numPlotsX == texture->width()); |
+ SkASSERT(fPlotHeight * numPlotsY == texture->height()); |
SkDEBUGCODE(fNumPlots = numPlotsX * numPlotsY;) |
@@ -134,7 +134,7 @@ GrBatchAtlas::GrBatchAtlas(GrTexture* texture, int numPlotsX, int numPlotsY) |
for (int y = numPlotsY - 1, r = 0; y >= 0; --y, ++r) { |
for (int x = numPlotsX - 1, c = 0; x >= 0; --x, ++c) { |
uint32_t index = r * numPlotsX + c; |
- currPlot->reset(new BatchPlot(index, 1, x, y, plotWidth, plotHeight, |
+ currPlot->reset(new BatchPlot(index, 1, x, y, fPlotWidth, fPlotHeight, |
texture->desc().fConfig)); |
// build LRU list |
@@ -179,6 +179,9 @@ bool GrBatchAtlas::addToAtlas(AtlasID* id, GrDrawBatch::Target* target, |
int width, int height, const void* image, SkIPoint16* loc) { |
// We should already have a texture, TODO clean this up |
SkASSERT(fTexture); |
+ if (width > fPlotWidth || height > fPlotHeight) { |
+ return false; |
+ } |
// now look through all allocated plots for one we can share, in Most Recently Refed order |
GrBatchPlotList::Iter plotIter; |