| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "GrAtlas.h" | 8 #include "GrAtlas.h" |
| 9 #include "GrContext.h" | 9 #include "GrContext.h" |
| 10 #include "GrDrawContext.h" | 10 #include "GrDrawContext.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 | 121 |
| 122 // The atlas only lets go of its texture when the atlas is deleted. | 122 // The atlas only lets go of its texture when the atlas is deleted. |
| 123 fAtlas.free(); | 123 fAtlas.free(); |
| 124 } | 124 } |
| 125 | 125 |
| 126 GrCachedLayer* GrLayerCache::createLayer(uint32_t pictureID, | 126 GrCachedLayer* GrLayerCache::createLayer(uint32_t pictureID, |
| 127 int start, int stop, | 127 int start, int stop, |
| 128 const SkIRect& srcIR, | 128 const SkIRect& srcIR, |
| 129 const SkIRect& dstIR, | 129 const SkIRect& dstIR, |
| 130 const SkMatrix& initialMat, | 130 const SkMatrix& initialMat, |
| 131 const unsigned* key, | 131 const int* key, |
| 132 int keySize, | 132 int keySize, |
| 133 const SkPaint* paint) { | 133 const SkPaint* paint) { |
| 134 SkASSERT(pictureID != SK_InvalidGenID && start >= 0 && stop > 0); | 134 SkASSERT(pictureID != SK_InvalidGenID && start >= 0 && stop > 0); |
| 135 | 135 |
| 136 GrCachedLayer* layer = SkNEW_ARGS(GrCachedLayer, (pictureID, start, stop, | 136 GrCachedLayer* layer = SkNEW_ARGS(GrCachedLayer, (pictureID, start, stop, |
| 137 srcIR, dstIR, initialMat, | 137 srcIR, dstIR, initialMat, |
| 138 key, keySize, paint)); | 138 key, keySize, paint)); |
| 139 fLayerHash.add(layer); | 139 fLayerHash.add(layer); |
| 140 return layer; | 140 return layer; |
| 141 } | 141 } |
| 142 | 142 |
| 143 GrCachedLayer* GrLayerCache::findLayer(uint32_t pictureID, const SkMatrix& initi
alMat, | 143 GrCachedLayer* GrLayerCache::findLayer(uint32_t pictureID, const SkMatrix& initi
alMat, |
| 144 const unsigned* key, int keySize) { | 144 const int* key, int keySize) { |
| 145 SkASSERT(pictureID != SK_InvalidGenID); | 145 SkASSERT(pictureID != SK_InvalidGenID); |
| 146 return fLayerHash.find(GrCachedLayer::Key(pictureID, initialMat, key, keySiz
e)); | 146 return fLayerHash.find(GrCachedLayer::Key(pictureID, initialMat, key, keySiz
e)); |
| 147 } | 147 } |
| 148 | 148 |
| 149 GrCachedLayer* GrLayerCache::findLayerOrCreate(uint32_t pictureID, | 149 GrCachedLayer* GrLayerCache::findLayerOrCreate(uint32_t pictureID, |
| 150 int start, int stop, | 150 int start, int stop, |
| 151 const SkIRect& srcIR, | 151 const SkIRect& srcIR, |
| 152 const SkIRect& dstIR, | 152 const SkIRect& dstIR, |
| 153 const SkMatrix& initialMat, | 153 const SkMatrix& initialMat, |
| 154 const unsigned* key, | 154 const int* key, |
| 155 int keySize, | 155 int keySize, |
| 156 const SkPaint* paint) { | 156 const SkPaint* paint) { |
| 157 SkASSERT(pictureID != SK_InvalidGenID && start >= 0 && stop > 0); | 157 SkASSERT(pictureID != SK_InvalidGenID && start >= 0 && stop > 0); |
| 158 GrCachedLayer* layer = fLayerHash.find(GrCachedLayer::Key(pictureID, initial
Mat, key, keySize)); | 158 GrCachedLayer* layer = fLayerHash.find(GrCachedLayer::Key(pictureID, initial
Mat, key, keySize)); |
| 159 if (NULL == layer) { | 159 if (NULL == layer) { |
| 160 layer = this->createLayer(pictureID, start, stop, | 160 layer = this->createLayer(pictureID, start, stop, |
| 161 srcIR, dstIR, initialMat, | 161 srcIR, dstIR, initialMat, |
| 162 key, keySize, paint); | 162 key, keySize, paint); |
| 163 } | 163 } |
| 164 | 164 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 GrPlot* plot = fAtlas->addToAtlas(&pictInfo->fPlotUsage, | 209 GrPlot* plot = fAtlas->addToAtlas(&pictInfo->fPlotUsage, |
| 210 desc.fWidth, desc.fHeight, | 210 desc.fWidth, desc.fHeight, |
| 211 NULL, &loc); | 211 NULL, &loc); |
| 212 // addToAtlas can allocate the backing texture | 212 // addToAtlas can allocate the backing texture |
| 213 SkDEBUGCODE(avl.setBackingTexture(fAtlas->getTexture())); | 213 SkDEBUGCODE(avl.setBackingTexture(fAtlas->getTexture())); |
| 214 if (plot) { | 214 if (plot) { |
| 215 #if !GR_CACHE_HOISTED_LAYERS | 215 #if !GR_CACHE_HOISTED_LAYERS |
| 216 pictInfo->incPlotUsage(plot->id()); | 216 pictInfo->incPlotUsage(plot->id()); |
| 217 #endif | 217 #endif |
| 218 // The layer was successfully added to the atlas | 218 // The layer was successfully added to the atlas |
| 219 const SkIRect bounds = SkIRect::MakeXYWH(loc.fX, loc.fY, | 219 const SkIRect bounds = SkIRect::MakeXYWH(loc.fX, loc.fY, |
| 220 desc.fWidth, desc.fHeig
ht); | 220 desc.fWidth, desc.fHeig
ht); |
| 221 layer->setTexture(fAtlas->getTexture(), bounds); | 221 layer->setTexture(fAtlas->getTexture(), bounds); |
| 222 layer->setPlot(plot); | 222 layer->setPlot(plot); |
| 223 layer->setLocked(true); | 223 layer->setLocked(true); |
| 224 this->incPlotLock(layer->plot()->id()); | 224 this->incPlotLock(layer->plot()->id()); |
| 225 *needsRendering = true; | 225 *needsRendering = true; |
| 226 return true; | 226 return true; |
| 227 } | 227 } |
| 228 | 228 |
| 229 // The layer was rejected by the atlas (even though we know it is | 229 // The layer was rejected by the atlas (even though we know it is |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 fileName.appendf("\\%d", layer->fKey.pictureID()); | 510 fileName.appendf("\\%d", layer->fKey.pictureID()); |
| 511 for (int i = 0; i < layer->fKey.keySize(); ++i) { | 511 for (int i = 0; i < layer->fKey.keySize(); ++i) { |
| 512 fileName.appendf("-%d", layer->fKey.key()[i]); | 512 fileName.appendf("-%d", layer->fKey.key()[i]); |
| 513 } | 513 } |
| 514 fileName.appendf(".png"); | 514 fileName.appendf(".png"); |
| 515 | 515 |
| 516 layer->texture()->surfacePriv().savePixels(fileName.c_str()); | 516 layer->texture()->surfacePriv().savePixels(fileName.c_str()); |
| 517 } | 517 } |
| 518 } | 518 } |
| 519 #endif | 519 #endif |
| OLD | NEW |