| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2010 Google Inc. | 3 * Copyright 2010 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 | 10 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 | 158 |
| 159 return true; | 159 return true; |
| 160 } | 160 } |
| 161 | 161 |
| 162 /////////////////////////////////////////////////////////////////////////////// | 162 /////////////////////////////////////////////////////////////////////////////// |
| 163 | 163 |
| 164 GrAtlasMgr::GrAtlasMgr(GrGpu* gpu) { | 164 GrAtlasMgr::GrAtlasMgr(GrGpu* gpu) { |
| 165 fGpu = gpu; | 165 fGpu = gpu; |
| 166 gpu->ref(); | 166 gpu->ref(); |
| 167 Gr_bzero(fTexture, sizeof(fTexture)); | 167 Gr_bzero(fTexture, sizeof(fTexture)); |
| 168 fPlotMgr = SkNEW_ARGS(GrPlotMgr, (GR_PLOT_WIDTH, GR_PLOT_HEIGHT)); | 168 for (int i = 0; i < kCount_GrMaskFormats; ++i) { |
| 169 fPlotMgr[i] = SkNEW_ARGS(GrPlotMgr, (GR_PLOT_WIDTH, GR_PLOT_HEIGHT)); |
| 170 } |
| 169 } | 171 } |
| 170 | 172 |
| 171 GrAtlasMgr::~GrAtlasMgr() { | 173 GrAtlasMgr::~GrAtlasMgr() { |
| 172 for (size_t i = 0; i < GR_ARRAY_COUNT(fTexture); i++) { | 174 for (size_t i = 0; i < GR_ARRAY_COUNT(fTexture); i++) { |
| 173 SkSafeUnref(fTexture[i]); | 175 SkSafeUnref(fTexture[i]); |
| 174 } | 176 } |
| 175 delete fPlotMgr; | 177 for (int i = 0; i < kCount_GrMaskFormats; ++i) { |
| 178 delete fPlotMgr[i]; |
| 179 } |
| 176 | 180 |
| 177 fGpu->unref(); | 181 fGpu->unref(); |
| 178 #if FONT_CACHE_STATS | 182 #if FONT_CACHE_STATS |
| 179 GrPrintf("Num uploads: %d\n", g_UploadCount); | 183 GrPrintf("Num uploads: %d\n", g_UploadCount); |
| 180 #endif | 184 #endif |
| 181 } | 185 } |
| 182 | 186 |
| 183 static GrPixelConfig maskformat2pixelconfig(GrMaskFormat format) { | 187 static GrPixelConfig maskformat2pixelconfig(GrMaskFormat format) { |
| 184 switch (format) { | 188 switch (format) { |
| 185 case kA8_GrMaskFormat: | 189 case kA8_GrMaskFormat: |
| (...skipping 20 matching lines...) Expand all Loading... |
| 206 if (atlasIter->addSubImage(width, height, image, loc)) { | 210 if (atlasIter->addSubImage(width, height, image, loc)) { |
| 207 return atlasIter; | 211 return atlasIter; |
| 208 } | 212 } |
| 209 atlasIter = atlasIter->fNext; | 213 atlasIter = atlasIter->fNext; |
| 210 } | 214 } |
| 211 | 215 |
| 212 // If the above fails, then either we have no starting atlas, or the current | 216 // If the above fails, then either we have no starting atlas, or the current |
| 213 // atlas list is full. Either way we need to allocate a new atlas | 217 // atlas list is full. Either way we need to allocate a new atlas |
| 214 | 218 |
| 215 GrIPoint16 plot; | 219 GrIPoint16 plot; |
| 216 if (!fPlotMgr->newPlot(&plot)) { | 220 if (!fPlotMgr[format]->newPlot(&plot)) { |
| 217 return NULL; | 221 return NULL; |
| 218 } | 222 } |
| 219 | 223 |
| 220 SkASSERT(0 == kA8_GrMaskFormat); | 224 SkASSERT(0 == kA8_GrMaskFormat); |
| 221 SkASSERT(1 == kA565_GrMaskFormat); | 225 SkASSERT(1 == kA565_GrMaskFormat); |
| 222 if (NULL == fTexture[format]) { | 226 if (NULL == fTexture[format]) { |
| 223 // TODO: Update this to use the cache rather than directly creating a te
xture. | 227 // TODO: Update this to use the cache rather than directly creating a te
xture. |
| 224 GrTextureDesc desc; | 228 GrTextureDesc desc; |
| 225 desc.fFlags = kDynamicUpdate_GrTextureFlagBit; | 229 desc.fFlags = kDynamicUpdate_GrTextureFlagBit; |
| 226 desc.fWidth = GR_ATLAS_TEXTURE_WIDTH; | 230 desc.fWidth = GR_ATLAS_TEXTURE_WIDTH; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 240 } | 244 } |
| 241 | 245 |
| 242 // new atlas, put at head | 246 // new atlas, put at head |
| 243 newAtlas->fNext = *atlas; | 247 newAtlas->fNext = *atlas; |
| 244 *atlas = newAtlas; | 248 *atlas = newAtlas; |
| 245 | 249 |
| 246 return newAtlas; | 250 return newAtlas; |
| 247 } | 251 } |
| 248 | 252 |
| 249 void GrAtlasMgr::freePlot(GrMaskFormat format, int x, int y) { | 253 void GrAtlasMgr::freePlot(GrMaskFormat format, int x, int y) { |
| 250 SkASSERT(fPlotMgr->isBusy(x, y)); | 254 SkASSERT(fPlotMgr[format]->isBusy(x, y)); |
| 251 fPlotMgr->freePlot(x, y); | 255 fPlotMgr[format]->freePlot(x, y); |
| 252 } | 256 } |
| OLD | NEW |