Index: src/core/SkBitmapProcShader.h |
diff --git a/src/core/SkBitmapProcShader.h b/src/core/SkBitmapProcShader.h |
index 9f4c16202c0047c13f6fc7a94e9de3ad879e0e9d..a83fda762868826c75ba3f185cf5e59978ba340d 100644 |
--- a/src/core/SkBitmapProcShader.h |
+++ b/src/core/SkBitmapProcShader.h |
@@ -21,7 +21,9 @@ public: |
bool isOpaque() const override; |
- size_t contextSize(const ContextRec& rec) const override { return ContextSize(rec); } |
+ size_t contextSize(const ContextRec& rec) const override { |
+ return ContextSize(rec, fRawBitmap.info()); |
+ } |
SK_TO_STRING_OVERRIDE() |
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapProcShader) |
@@ -36,13 +38,13 @@ protected: |
Context* onCreateContext(const ContextRec&, void* storage) const override; |
bool onIsABitmap(SkBitmap*, SkMatrix*, TileMode*) const override; |
- SkBitmap fRawBitmap; // experimental for RLE encoding |
+ SkBitmap fRawBitmap; |
uint8_t fTileModeX, fTileModeY; |
private: |
friend class SkImageShader; |
- static size_t ContextSize(const ContextRec&); |
+ static size_t ContextSize(const ContextRec&, const SkImageInfo& srcInfo); |
static Context* MakeContext(const SkShader&, TileMode tmx, TileMode tmy, |
const SkBitmapProvider&, const ContextRec&, void* storage); |
@@ -54,7 +56,7 @@ private: |
// an Sk3DBlitter in SkDraw.cpp |
// Note that some contexts may contain other contexts (e.g. for compose shaders), but we've not |
// yet found a situation where the size below isn't big enough. |
-typedef SkSmallAllocator<3, 1500> SkTBlitterAllocator; |
+typedef SkSmallAllocator<3, 2100> SkTBlitterAllocator; |
// If alloc is non-nullptr, it will be used to allocate the returned SkShader, and MUST outlive |
// the SkShader. |