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

Unified Diff: src/gpu/GrLayerCache.cpp

Issue 643673004: Revert of Fix bug in plot locking system (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrLayerCache.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrLayerCache.cpp
diff --git a/src/gpu/GrLayerCache.cpp b/src/gpu/GrLayerCache.cpp
index 50f7abe830a2ad2140c61e28e88451451887209e..0481d144e585aa45758bfaa347446befbd2030dc 100644
--- a/src/gpu/GrLayerCache.cpp
+++ b/src/gpu/GrLayerCache.cpp
@@ -153,12 +153,14 @@
if (layer->locked()) {
// This layer is already locked
+#ifdef SK_DEBUG
if (layer->isAtlased()) {
- this->incPlotLock(layer->plot()->id());
+ // It claims to be atlased
SkASSERT(!dontAtlas);
SkASSERT(layer->rect().width() == desc.fWidth);
SkASSERT(layer->rect().height() == desc.fHeight);
}
+#endif
return false;
}
@@ -166,7 +168,7 @@
// Hooray it is still in the atlas - make sure it stays there
SkASSERT(!dontAtlas);
layer->setLocked(true);
- this->incPlotLock(layer->plot()->id());
+ fPlotLocks[layer->plot()->id()]++;
return false;
} else if (!dontAtlas && PlausiblyAtlasable(desc.fWidth, desc.fHeight)) {
// Not in the atlas - will it fit?
@@ -191,7 +193,7 @@
layer->setTexture(fAtlas->getTexture(), bounds);
layer->setPlot(plot);
layer->setLocked(true);
- this->incPlotLock(layer->plot()->id());
+ fPlotLocks[layer->plot()->id()]++;
return true;
}
@@ -217,7 +219,7 @@
void GrLayerCache::unlock(GrCachedLayer* layer) {
SkDEBUGCODE(GrAutoValidateLayer avl(fAtlas->getTexture(), layer);)
- if (NULL == layer) {
+ if (NULL == layer || !layer->locked()) {
// invalid or not locked
return;
}
@@ -225,7 +227,8 @@
if (layer->isAtlased()) {
const int plotID = layer->plot()->id();
- this->decPlotLock(plotID);
+ SkASSERT(fPlotLocks[plotID] > 0);
+ fPlotLocks[plotID]--;
// At this point we could aggressively clear out un-locked plots but
// by delaying we may be able to reuse some of the atlased layers later.
#if DISABLE_CACHING
@@ -250,6 +253,9 @@
#ifdef SK_DEBUG
void GrLayerCache::validate() const {
+ int plotLocks[kNumPlotsX * kNumPlotsY];
+ memset(plotLocks, 0, sizeof(plotLocks));
+
SkTDynamicHash<GrCachedLayer, GrCachedLayer::Key>::ConstIter iter(&fLayerHash);
for (; !iter.done(); ++iter) {
const GrCachedLayer* layer = &(*iter);
@@ -264,7 +270,7 @@
SkASSERT(!pictInfo->fPlotUsage.isEmpty());
#endif
} else {
- // If there is no picture info for this picture then all of its
+ // If there is no picture info for this layer then all of its
// layers should be non-atlased.
SkASSERT(!layer->isAtlased());
}
@@ -276,9 +282,13 @@
SkASSERT(pictInfo->fPlotUsage.contains(layer->plot()));
if (layer->locked()) {
- SkASSERT(fPlotLocks[layer->plot()->id()] > 0);
+ plotLocks[layer->plot()->id()]++;
}
}
+ }
+
+ for (int i = 0; i < kNumPlotsX*kNumPlotsY; ++i) {
+ SkASSERT(plotLocks[i] == fPlotLocks[i]);
}
}
« no previous file with comments | « src/gpu/GrLayerCache.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698