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

Side by Side Diff: src/gpu/GrBatchAtlas.cpp

Issue 1316123003: Style Change: SkNEW->new; SkDELETE->delete (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-26 (Wednesday) 15:59:00 EDT Created 5 years, 3 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 unified diff | Download patch
« no previous file with comments | « src/gpu/GrAtlasTextContext.cpp ('k') | src/gpu/GrBatchFontCache.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 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 "GrBatchAtlas.h" 8 #include "GrBatchAtlas.h"
9 #include "GrBatchFlushState.h" 9 #include "GrBatchFlushState.h"
10 #include "GrRectanizer.h" 10 #include "GrRectanizer.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 , fAtlasGeneration(kInvalidAtlasGeneration + 1) { 227 , fAtlasGeneration(kInvalidAtlasGeneration + 1) {
228 SkASSERT(fNumPlotsX * fNumPlotsY <= BulkUseTokenUpdater::kMaxPlots); 228 SkASSERT(fNumPlotsX * fNumPlotsY <= BulkUseTokenUpdater::kMaxPlots);
229 SkASSERT(fPlotWidth * fNumPlotsX == static_cast<uint32_t>(texture->width())) ; 229 SkASSERT(fPlotWidth * fNumPlotsX == static_cast<uint32_t>(texture->width())) ;
230 SkASSERT(fPlotHeight * fNumPlotsY == static_cast<uint32_t>(texture->height() )); 230 SkASSERT(fPlotHeight * fNumPlotsY == static_cast<uint32_t>(texture->height() ));
231 231
232 // We currently do not support compressed atlases... 232 // We currently do not support compressed atlases...
233 SkASSERT(!GrPixelConfigIsCompressed(texture->desc().fConfig)); 233 SkASSERT(!GrPixelConfigIsCompressed(texture->desc().fConfig));
234 234
235 // set up allocated plots 235 // set up allocated plots
236 fBPP = GrBytesPerPixel(texture->desc().fConfig); 236 fBPP = GrBytesPerPixel(texture->desc().fConfig);
237 fPlotArray = SkNEW_ARRAY(SkAutoTUnref<BatchPlot>, (fNumPlotsX * fNumPlotsY)) ; 237 fPlotArray = new SkAutoTUnref<BatchPlot>[(fNumPlotsX * fNumPlotsY)];
238 238
239 SkAutoTUnref<BatchPlot>* currPlot = fPlotArray; 239 SkAutoTUnref<BatchPlot>* currPlot = fPlotArray;
240 for (int y = fNumPlotsY - 1, r = 0; y >= 0; --y, ++r) { 240 for (int y = fNumPlotsY - 1, r = 0; y >= 0; --y, ++r) {
241 for (int x = fNumPlotsX - 1, c = 0; x >= 0; --x, ++c) { 241 for (int x = fNumPlotsX - 1, c = 0; x >= 0; --x, ++c) {
242 uint32_t id = r * fNumPlotsX + c; 242 uint32_t id = r * fNumPlotsX + c;
243 currPlot->reset(SkNEW(BatchPlot)); 243 currPlot->reset(new BatchPlot);
244 (*currPlot)->init(this, texture, id, 1, x, y, fPlotWidth, fPlotHeigh t, fBPP); 244 (*currPlot)->init(this, texture, id, 1, x, y, fPlotWidth, fPlotHeigh t, fBPP);
245 245
246 // build LRU list 246 // build LRU list
247 fPlotList.addToHead(currPlot->get()); 247 fPlotList.addToHead(currPlot->get());
248 ++currPlot; 248 ++currPlot;
249 } 249 }
250 } 250 }
251 } 251 }
252 252
253 GrBatchAtlas::~GrBatchAtlas() { 253 GrBatchAtlas::~GrBatchAtlas() {
254 SkSafeUnref(fTexture); 254 SkSafeUnref(fTexture);
255 SkDELETE_ARRAY(fPlotArray); 255 delete[] fPlotArray;
256 } 256 }
257 257
258 void GrBatchAtlas::processEviction(AtlasID id) { 258 void GrBatchAtlas::processEviction(AtlasID id) {
259 for (int i = 0; i < fEvictionCallbacks.count(); i++) { 259 for (int i = 0; i < fEvictionCallbacks.count(); i++) {
260 (*fEvictionCallbacks[i].fFunc)(id, fEvictionCallbacks[i].fData); 260 (*fEvictionCallbacks[i].fFunc)(id, fEvictionCallbacks[i].fData);
261 } 261 }
262 } 262 }
263 263
264 void GrBatchAtlas::makeMRU(BatchPlot* plot) { 264 void GrBatchAtlas::makeMRU(BatchPlot* plot) {
265 if (fPlotList.head() == plot) { 265 if (fPlotList.head() == plot) {
266 return; 266 return;
267 } 267 }
268 268
269 fPlotList.remove(plot); 269 fPlotList.remove(plot);
270 fPlotList.addToHead(plot); 270 fPlotList.addToHead(plot);
271 } 271 }
272 272
273 inline void GrBatchAtlas::updatePlot(GrDrawBatch::Target* target, AtlasID* id, B atchPlot* plot) { 273 inline void GrBatchAtlas::updatePlot(GrDrawBatch::Target* target, AtlasID* id, B atchPlot* plot) {
274 this->makeMRU(plot); 274 this->makeMRU(plot);
275 275
276 // If our most recent upload has already occurred then we have to insert a n ew 276 // If our most recent upload has already occurred then we have to insert a n ew
277 // upload. Otherwise, we already have a scheduled upload that hasn't yet ocu rred. 277 // upload. Otherwise, we already have a scheduled upload that hasn't yet ocu rred.
278 // This new update will piggy back on that previously scheduled update. 278 // This new update will piggy back on that previously scheduled update.
279 if (target->hasTokenBeenFlushed(plot->lastUploadToken())) { 279 if (target->hasTokenBeenFlushed(plot->lastUploadToken())) {
280 plot->setLastUploadToken(target->asapToken()); 280 plot->setLastUploadToken(target->asapToken());
281 SkAutoTUnref<GrPlotUploader> uploader(SkNEW_ARGS(GrPlotUploader, (plot)) ); 281 SkAutoTUnref<GrPlotUploader> uploader(new GrPlotUploader(plot));
282 target->upload(uploader); 282 target->upload(uploader);
283 } 283 }
284 *id = plot->id(); 284 *id = plot->id();
285 } 285 }
286 286
287 bool GrBatchAtlas::addToAtlas(AtlasID* id, GrDrawBatch::Target* batchTarget, 287 bool GrBatchAtlas::addToAtlas(AtlasID* id, GrDrawBatch::Target* batchTarget,
288 int width, int height, const void* image, SkIPoint 16* loc) { 288 int width, int height, const void* image, SkIPoint 16* loc) {
289 // We should already have a texture, TODO clean this up 289 // We should already have a texture, TODO clean this up
290 SkASSERT(fTexture && 290 SkASSERT(fTexture &&
291 static_cast<uint32_t>(width) <= fPlotWidth && 291 static_cast<uint32_t>(width) <= fPlotWidth &&
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 // We take an extra ref here so our plot isn't deleted when we reset its ind ex in the array. 331 // We take an extra ref here so our plot isn't deleted when we reset its ind ex in the array.
332 plot->ref(); 332 plot->ref();
333 int index = plot->index(); 333 int index = plot->index();
334 int x = plot->x(); 334 int x = plot->x();
335 int y = plot->y(); 335 int y = plot->y();
336 uint64_t generation = plot->genID(); 336 uint64_t generation = plot->genID();
337 337
338 this->processEviction(plot->id()); 338 this->processEviction(plot->id());
339 fPlotList.remove(plot); 339 fPlotList.remove(plot);
340 SkAutoTUnref<BatchPlot>& newPlot = fPlotArray[plot->index()]; 340 SkAutoTUnref<BatchPlot>& newPlot = fPlotArray[plot->index()];
341 newPlot.reset(SkNEW(BatchPlot)); 341 newPlot.reset(new BatchPlot);
342 newPlot->init(this, fTexture, index, ++generation, x, y, fPlotWidth, fPlotHe ight, fBPP); 342 newPlot->init(this, fTexture, index, ++generation, x, y, fPlotWidth, fPlotHe ight, fBPP);
343 343
344 fPlotList.addToHead(newPlot.get()); 344 fPlotList.addToHead(newPlot.get());
345 SkDEBUGCODE(bool verify = )newPlot->addSubImage(width, height, image, loc, f BPP * width); 345 SkDEBUGCODE(bool verify = )newPlot->addSubImage(width, height, image, loc, f BPP * width);
346 SkASSERT(verify); 346 SkASSERT(verify);
347 newPlot->setLastUploadToken(batchTarget->currentToken()); 347 newPlot->setLastUploadToken(batchTarget->currentToken());
348 SkAutoTUnref<GrPlotUploader> uploader(SkNEW_ARGS(GrPlotUploader, (newPlot))) ; 348 SkAutoTUnref<GrPlotUploader> uploader(new GrPlotUploader(newPlot));
349 batchTarget->upload(uploader); 349 batchTarget->upload(uploader);
350 *id = newPlot->id(); 350 *id = newPlot->id();
351 plot->unref(); 351 plot->unref();
352 fAtlasGeneration++; 352 fAtlasGeneration++;
353 return true; 353 return true;
354 } 354 }
355 355
356 bool GrBatchAtlas::hasID(AtlasID id) { 356 bool GrBatchAtlas::hasID(AtlasID id) {
357 uint32_t index = GetIndexFromID(id); 357 uint32_t index = GetIndexFromID(id);
358 SkASSERT(index < fNumPlotsX * fNumPlotsY); 358 SkASSERT(index < fNumPlotsX * fNumPlotsY);
(...skipping 10 matching lines...) Expand all
369 369
370 void GrBatchAtlas::setLastUseTokenBulk(const BulkUseTokenUpdater& updater, 370 void GrBatchAtlas::setLastUseTokenBulk(const BulkUseTokenUpdater& updater,
371 GrBatchToken batchToken) { 371 GrBatchToken batchToken) {
372 int count = updater.fPlotsToUpdate.count(); 372 int count = updater.fPlotsToUpdate.count();
373 for (int i = 0; i < count; i++) { 373 for (int i = 0; i < count; i++) {
374 BatchPlot* plot = fPlotArray[updater.fPlotsToUpdate[i]]; 374 BatchPlot* plot = fPlotArray[updater.fPlotsToUpdate[i]];
375 this->makeMRU(plot); 375 this->makeMRU(plot);
376 plot->setLastUseToken(batchToken); 376 plot->setLastUseToken(batchToken);
377 } 377 }
378 } 378 }
OLDNEW
« no previous file with comments | « src/gpu/GrAtlasTextContext.cpp ('k') | src/gpu/GrBatchFontCache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698