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

Unified Diff: src/gpu/GrLayerCache.h

Issue 359953002: Revert of Begin atlasing (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 6 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/GrAtlas.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 27479193aa5102724efd4eace527fc51f0160135..a7ba2afb30f2a63969b5234d17b881a65b115189 100644
--- a/src/gpu/GrLayerCache.h
+++ b/src/gpu/GrLayerCache.h
@@ -8,8 +8,6 @@
#ifndef GrLayerCache_DEFINED
#define GrLayerCache_DEFINED
-#define USE_ATLAS 0
-
#include "GrAllocPool.h"
#include "GrAtlas.h"
#include "GrTHashTable.h"
@@ -19,38 +17,61 @@
class GrGpu;
class SkPicture;
+// GrAtlasLocation captures an atlased item's position in the atlas. This
+// means the plot in which it resides and its bounds inside the plot.
+// TODO: Make GrGlyph use one of these?
+class GrAtlasLocation {
+public:
+ GrAtlasLocation() : fPlot(NULL) {}
+
+ void set(GrPlot* plot, const GrIRect16& bounds) {
+ fPlot = plot;
+ fBounds = bounds;
+ }
+
+ const GrPlot* plot() const {
+ return fPlot;
+ }
+
+ const GrIRect16& bounds() const {
+ return fBounds;
+ }
+
+private:
+ GrPlot* fPlot;
+ GrIRect16 fBounds; // only valid is fPlot != NULL
+};
+
// GrCachedLayer encapsulates the caching information for a single saveLayer.
//
-// Atlased layers get a ref to their atlas GrTexture and 'fRect' contains
-// their absolute location in the backing texture.
+// Atlased layers get a ref to their atlas GrTexture and their GrAtlasLocation
+// is filled in.
+// In this case GrCachedLayer is roughly equivalent to a GrGlyph in the font
+// caching system.
//
-// Non-atlased layers get a ref to the GrTexture in which they reside. Their
-// 'fRect' will be empty.
-//
+// Non-atlased layers get a ref to the GrTexture in which they reside.
// TODO: can we easily reuse the empty space in the non-atlased GrTexture's?
struct GrCachedLayer {
public:
- GrCachedLayer(uint32_t pictureID, int layerID) {
- fPictureID = pictureID;
- fLayerID = layerID;
- fTexture = NULL;
- fRect = GrIRect16::MakeEmpty();
- }
-
uint32_t pictureID() const { return fPictureID; }
int layerID() const { return fLayerID; }
+ void init(uint32_t pictureID, int layerID) {
+ fPictureID = pictureID;
+ fLayerID = layerID;
+ fTexture = NULL;
+ fLocation.set(NULL, GrIRect16::MakeEmpty());
+ }
+
// This call takes over the caller's ref
- void setTexture(GrTexture* texture, const GrIRect16& rect) {
+ void setTexture(GrTexture* texture) {
if (NULL != fTexture) {
fTexture->unref();
}
fTexture = texture; // just take over caller's ref
- fRect = rect;
}
- GrTexture* texture() { return fTexture; }
- const GrIRect16& rect() const { return fRect; }
+ GrTexture* getTexture() { return fTexture; }
private:
uint32_t fPictureID;
@@ -63,9 +84,7 @@
// non-NULL, that means that the texture is locked in the texture cache.
GrTexture* fTexture;
- // For non-atlased layers 'fRect' is empty otherwise it is the bound of
- // the layer in the atlas.
- GrIRect16 fRect;
+ GrAtlasLocation fLocation; // only valid if the layer is atlased
};
// The GrLayerCache caches pre-computed saveLayers for later rendering.
@@ -96,9 +115,6 @@
// Inform the cache that layer's cached image is not currently required
void unlock(GrCachedLayer* layer);
- // Remove all the layers (and unlock any resources) associated with 'picture'
- void purge(const SkPicture* picture);
-
private:
GrContext* fContext; // pointer back to owning context
SkAutoTDelete<GrAtlas> fAtlas; // TODO: could lazily allocate
@@ -106,13 +122,10 @@
class PictureLayerKey;
GrTHashTable<GrCachedLayer, PictureLayerKey, 7> fLayerHash;
+ GrTAllocPool<GrCachedLayer> fLayerPool;
- void initAtlas();
+ void init();
GrCachedLayer* createLayer(const SkPicture* picture, int layerID);
-
- // for testing
- friend class GetNumLayers;
- int numLayers() const { return fLayerHash.count(); }
};
#endif
« no previous file with comments | « src/gpu/GrAtlas.cpp ('k') | src/gpu/GrLayerCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698