| Index: src/core/SkBitmapProcShader.h
 | 
| diff --git a/src/core/SkBitmapProcShader.h b/src/core/SkBitmapProcShader.h
 | 
| index 63985c06c514472a2194ef498ed86c728c9ff1a7..9e90f9faace7b4a861cf2c1c98ed5ef9d058442a 100644
 | 
| --- a/src/core/SkBitmapProcShader.h
 | 
| +++ b/src/core/SkBitmapProcShader.h
 | 
| @@ -22,7 +22,7 @@ public:
 | 
|  
 | 
|      bool isOpaque() const override;
 | 
|  
 | 
| -    size_t contextSize() const override;
 | 
| +    size_t contextSize() const override { return ContextSize(); }
 | 
|  
 | 
|      SK_TO_STRING_OVERRIDE()
 | 
|      SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapProcShader)
 | 
| @@ -33,11 +33,12 @@ public:
 | 
|                                                     GrProcessorDataManager*) const override;
 | 
|  #endif
 | 
|  
 | 
| +protected:
 | 
|      class BitmapProcShaderContext : public SkShader::Context {
 | 
|      public:
 | 
|          // The context takes ownership of the state. It will call its destructor
 | 
|          // but will NOT free the memory.
 | 
| -        BitmapProcShaderContext(const SkBitmapProcShader&, const ContextRec&, SkBitmapProcState*);
 | 
| +        BitmapProcShaderContext(const SkShader&, const ContextRec&, SkBitmapProcState*);
 | 
|          ~BitmapProcShaderContext() override;
 | 
|  
 | 
|          void shadeSpan(int x, int y, SkPMColor dstC[], int count) override;
 | 
| @@ -52,8 +53,7 @@ public:
 | 
|  
 | 
|          typedef SkShader::Context INHERITED;
 | 
|      };
 | 
| -
 | 
| -protected:
 | 
| +    
 | 
|      void flatten(SkWriteBuffer&) const override;
 | 
|      Context* onCreateContext(const ContextRec&, void* storage) const override;
 | 
|      bool onIsABitmap(SkBitmap*, SkMatrix*, TileMode*) const override;
 | 
| @@ -62,6 +62,12 @@ protected:
 | 
|      uint8_t     fTileModeX, fTileModeY;
 | 
|  
 | 
|  private:
 | 
| +    friend class SkImageShader;
 | 
| +
 | 
| +    static size_t ContextSize();
 | 
| +    static Context* MakeContext(const SkShader&, TileMode tmx, TileMode tmy, const SkBitmap&,
 | 
| +                                const ContextRec&, void* storage);
 | 
| +
 | 
|      typedef SkShader INHERITED;
 | 
|  };
 | 
|  
 | 
| @@ -70,7 +76,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, 1152> SkTBlitterAllocator;
 | 
| +typedef SkSmallAllocator<3, 1160> SkTBlitterAllocator;
 | 
|  
 | 
|  // If alloc is non-nullptr, it will be used to allocate the returned SkShader, and MUST outlive
 | 
|  // the SkShader.
 | 
| 
 |