| Index: src/gpu/GrLayerCache.h
|
| diff --git a/src/gpu/GrLayerCache.h b/src/gpu/GrLayerCache.h
|
| index fc1467e1205b1a900197072ef01865f3a586b364..15fa246c439562823583ba93b2c15382e58377c9 100644
|
| --- a/src/gpu/GrLayerCache.h
|
| +++ b/src/gpu/GrLayerCache.h
|
| @@ -51,15 +51,17 @@ struct GrCachedLayer {
|
| public:
|
| // For SkTDynamicHash
|
| struct Key {
|
| - Key(uint32_t pictureID, int start, int stop, const SkMatrix& ctm)
|
| + Key(uint32_t pictureID, int start, int stop, const SkIPoint& offset, const SkMatrix& ctm)
|
| : fPictureID(pictureID)
|
| , fStart(start)
|
| , fStop(stop)
|
| + , fOffset(offset)
|
| , fCTM(ctm) {
|
| fCTM.getType(); // force initialization of type so hashes match
|
|
|
| // Key needs to be tightly packed.
|
| GR_STATIC_ASSERT(sizeof(Key) == sizeof(uint32_t) + 2 * sizeof(int) +
|
| + 2 * sizeof(int32_t) +
|
| 9 * sizeof(SkScalar) + sizeof(uint32_t));
|
| }
|
|
|
| @@ -67,12 +69,14 @@ public:
|
| return fPictureID == other.fPictureID &&
|
| fStart == other.fStart &&
|
| fStop == other.fStop &&
|
| + fOffset == other.fOffset &&
|
| fCTM.cheapEqualTo(other.fCTM);
|
| }
|
|
|
| uint32_t pictureID() const { return fPictureID; }
|
| int start() const { return fStart; }
|
| int stop() const { return fStop; }
|
| + const SkIPoint& offset() const { return fOffset; }
|
| const SkMatrix& ctm() const { return fCTM; }
|
|
|
| private:
|
| @@ -81,6 +85,8 @@ public:
|
| // The range of commands in the picture this layer represents
|
| const int fStart;
|
| const int fStop;
|
| + // The offset of the layer in device space
|
| + const SkIPoint fOffset;
|
| // The CTM applied to this layer in the picture
|
| SkMatrix fCTM;
|
| };
|
| @@ -91,8 +97,9 @@ public:
|
| }
|
|
|
| // GrCachedLayer proper
|
| - GrCachedLayer(uint32_t pictureID, int start, int stop, const SkMatrix& ctm)
|
| - : fKey(pictureID, start, stop, ctm)
|
| + GrCachedLayer(uint32_t pictureID, int start, int stop,
|
| + const SkIPoint& offset, const SkMatrix& ctm)
|
| + : fKey(pictureID, start, stop, offset, ctm)
|
| , fTexture(NULL)
|
| , fRect(GrIRect16::MakeEmpty())
|
| , fPlot(NULL)
|
| @@ -107,6 +114,7 @@ public:
|
| uint32_t pictureID() const { return fKey.pictureID(); }
|
| int start() const { return fKey.start(); }
|
| int stop() const { return fKey.stop(); }
|
| + const SkIPoint& offset() const { return fKey.offset(); }
|
| const SkMatrix& ctm() const { return fKey.ctm(); }
|
|
|
| void setTexture(GrTexture* texture, const GrIRect16& rect) {
|
| @@ -171,9 +179,11 @@ public:
|
| // elements by the GrContext
|
| void freeAll();
|
|
|
| - GrCachedLayer* findLayer(uint32_t pictureID, int start, int stop, const SkMatrix& ctm);
|
| + GrCachedLayer* findLayer(uint32_t pictureID, int start, int stop,
|
| + const SkIPoint& offset, const SkMatrix& ctm);
|
| GrCachedLayer* findLayerOrCreate(uint32_t pictureID,
|
| int start, int stop,
|
| + const SkIPoint& offset,
|
| const SkMatrix& ctm);
|
|
|
| // Inform the cache that layer's cached image is now required.
|
| @@ -227,9 +237,9 @@ private:
|
| int fPlotLocks[kNumPlotsX * kNumPlotsY];
|
|
|
| void initAtlas();
|
| - GrCachedLayer* createLayer(uint32_t pictureID, int start, int stop, const SkMatrix& ctm);
|
| + GrCachedLayer* createLayer(uint32_t pictureID, int start, int stop,
|
| + const SkIPoint& offset, const SkMatrix& ctm);
|
|
|
| -public:
|
| void purgeAll();
|
|
|
| // Remove all the layers (and unlock any resources) associated with 'pictureID'
|
|
|