Index: src/gpu/GrAADistanceFieldPathRenderer.h |
diff --git a/src/gpu/GrAADistanceFieldPathRenderer.h b/src/gpu/GrAADistanceFieldPathRenderer.h |
index 40430bbd2ff47a403eda93881f2dd8c380d19748..65d261390bafb5b0bf9d67f2311144a46c9df33a 100755 |
--- a/src/gpu/GrAADistanceFieldPathRenderer.h |
+++ b/src/gpu/GrAADistanceFieldPathRenderer.h |
@@ -41,18 +41,26 @@ protected: |
private: |
struct PathData { |
- uint32_t fGenID; |
+ struct Key { |
+ uint32_t fGenID; |
robertphillips
2014/10/29 19:55:02
// fMipLevel is the scaling applied to this path w
jvanverth1
2014/10/30 12:48:28
Done.
|
+ uint32_t fMipLevel; |
+ bool operator==(const Key& other) const { |
+ return other.fGenID == fGenID && other.fMipLevel == fMipLevel; |
+ } |
+ }; |
+ Key fKey; |
+ SkScalar fScale; |
GrPlot* fPlot; |
SkRect fBounds; |
SkIPoint16 fAtlasLocation; |
SK_DECLARE_INTERNAL_LLIST_INTERFACE(PathData); |
- static inline const uint32_t& GetKey(const PathData& data) { |
- return data.fGenID; |
+ static inline const Key& GetKey(const PathData& data) { |
+ return data.fKey; |
} |
- static inline uint32_t Hash(uint32_t key) { |
- return SkChecksum::Murmur3(&key, sizeof(key)); |
+ static inline uint32_t Hash(Key key) { |
+ return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(&key), sizeof(key)); |
} |
}; |
typedef SkTInternalLList<PathData> PathDataList; |
@@ -63,11 +71,12 @@ private: |
// current set of flags used to create the cached geometry processor |
uint32_t fEffectFlags; |
GrAtlas::ClientPlotUsage fPlotUsage; |
- SkTDynamicHash<PathData, uint32_t> fPathCache; |
+ SkTDynamicHash<PathData, PathData::Key> fPathCache; |
PathDataList fPathList; |
bool internalDrawPath(const SkPath& path, const PathData* pathData, GrDrawTarget* target); |
- PathData* addPathToAtlas(const SkPath& path, const SkStrokeRec& stroke, bool antiAlias); |
+ PathData* addPathToAtlas(const SkPath& path, const SkStrokeRec& stroke, bool antiAlias, |
+ uint32_t mipLevel, SkScalar scale); |
bool freeUnusedPlot(); |
typedef GrPathRenderer INHERITED; |