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

Unified Diff: src/gpu/GrLayerCache.h

Issue 1413483004: Revert of Update Layer Hoisting to store its atlas texture in the resource cache (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 1 month 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/GrLayerAtlas.cpp ('k') | src/gpu/GrLayerCache.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrLayerCache.h
diff --git a/src/gpu/GrLayerCache.h b/src/gpu/GrLayerCache.h
index a606681896621f935147cb85dbbc7561699d57a7..914d0d5a58c408206529a5b88e47f5f73a2019c1 100644
--- a/src/gpu/GrLayerCache.h
+++ b/src/gpu/GrLayerCache.h
@@ -165,7 +165,6 @@
, fPaint(paint ? new SkPaint(*paint) : nullptr)
, fFilter(nullptr)
, fTexture(nullptr)
- , fAtlased(false)
, fRect(SkIRect::MakeEmpty())
, fPlot(nullptr)
, fUses(0)
@@ -181,9 +180,7 @@
}
~GrCachedLayer() {
- if (!fAtlased) {
- SkSafeUnref(fTexture);
- }
+ SkSafeUnref(fTexture);
SkSafeUnref(fFilter);
delete fPaint;
}
@@ -198,15 +195,8 @@
const SkIRect& srcIR() const { return fSrcIR; }
const SkIRect& dstIR() const { return fDstIR; }
int stop() const { return fStop; }
- void setTexture(GrTexture* texture, const SkIRect& rect, bool atlased) {
- if (texture && !atlased) {
- texture->ref(); // non-atlased textures carry a ref
- }
- if (fTexture && !fAtlased) {
- fTexture->unref(); // non-atlased textures carry a ref
- }
- fTexture = texture;
- fAtlased = atlased;
+ void setTexture(GrTexture* texture, const SkIRect& rect) {
+ SkRefCnt_SafeAssign(fTexture, texture);
fRect = rect;
if (!fTexture) {
fLocked = false;
@@ -226,7 +216,7 @@
}
GrLayerAtlas::Plot* plot() { return fPlot; }
- bool isAtlased() const { SkASSERT(fAtlased == SkToBool(fPlot)); return fAtlased; }
+ bool isAtlased() const { return SkToBool(fPlot); }
void setLocked(bool locked) { fLocked = locked; }
bool locked() const { return fLocked; }
@@ -262,10 +252,6 @@
// ref on a GrTexture for non-atlased textures.
GrTexture* fTexture;
- // true if this layer is in the atlas (and 'fTexture' doesn't carry a ref)
- // and false if the layer is a free floater (and carries a ref).
- bool fAtlased;
-
// For both atlased and non-atlased layers 'fRect' contains the bound of
// the layer in whichever texture it resides. It is empty when 'fTexture'
// is nullptr.
@@ -299,9 +285,10 @@
// The GrLayerCache caches pre-computed saveLayers for later rendering.
// Non-atlased layers are stored in their own GrTexture while the atlased
// layers share a single GrTexture.
-// Unlike the GrFontCache, the GrLayerCache only has one atlas (for 8888).
-// As such, the GrLayerCache roughly combines the functionality of the
-// GrFontCache and GrTextStrike classes.
+// Unlike the GrFontCache, the GrTexture atlas only has one GrAtlas (for 8888)
+// and one GrPlot (for the entire atlas). As such, the GrLayerCache
+// roughly combines the functionality of the GrFontCache and GrTextStrike
+// classes.
class GrLayerCache {
public:
GrLayerCache(GrContext*);
@@ -359,9 +346,6 @@
return width <= kPlotWidth && height <= kPlotHeight;
}
- void begin();
- void end();
-
#if !GR_CACHE_HOISTED_LAYERS
void purgeAll();
#endif
@@ -377,7 +361,7 @@
static const int kPlotHeight = kAtlasTextureHeight / kNumPlotsY;
GrContext* fContext; // pointer back to owning context
- SkAutoTDelete<GrLayerAtlas> fAtlas; // lazily allocated
+ SkAutoTDelete<GrLayerAtlas> fAtlas; // TODO: could lazily allocate
// We cache this information here (rather then, say, on the owning picture)
// because we want to be able to clean it up as needed (e.g., if a picture
@@ -413,9 +397,9 @@
void purgePlot(GrLayerAtlas::Plot* plot);
- // Either purge all un-locked plots or just one. Return true if >= 1 plot
+ // Try to find a purgeable plot and clear it out. Return true if a plot
// was purged; false otherwise.
- bool purgePlots(bool justOne);
+ bool purgePlot();
void incPlotLock(int plotIdx) { ++fPlotLocks[plotIdx]; }
void decPlotLock(int plotIdx) {
« no previous file with comments | « src/gpu/GrLayerAtlas.cpp ('k') | src/gpu/GrLayerCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698