aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar halcanary <halcanary@google.com>2016-03-03 14:23:47 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-03 14:23:47 -0800
commite38bcaf24b00066e167e03a5ac63cf828914d747 (patch)
tree88b3764be24dbf59e7a6e3d88beeb66f12c64dda
parentce56026db55d8585c2f920a6107a25b40fd5160a (diff)
Revert of enforce 16byte alignment in shader contexts (patchset #1 id:1 of https://codereview.chromium.org/1759653004/ )
Reason for revert: Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86-Debug failed dm: .... FYI: loaded 23439 distinct uninteresting hashes from 23439 lines Skipping config gpu: Don't understand 'gpu'. Skipping config msaa16: Don't understand 'msaa16'. 168400 srcs * 7 sinks + 481 tests == 1179281 tasks 0ns elapsed, 5 active, 1179276 queued, 55MB RAM, 55MB peak 565 gm xfermodes2 565 gm xfermodes 565 gm xfermodeimagefilter 565 gm xfermodes3 565 gm verylarge_picture_image c:\0\build\slave\workdir\build\skia\src\core\skshader.cpp:108: fatal error: ""(0 == ((size) & 15))"" step returned non-zero exit code: 3 @@@STEP_FAILURE@@@ Original issue's description: > enforce 16byte alignment in shader contexts > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1759653004 > > Committed: https://skia.googlesource.com/skia/+/d812fb458807245daa812adb7af0733cf5b54d96 TBR=mtklein@google.com,fmalita@chromium.org,herb@google.com,reed@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1759323002
-rw-r--r--experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp4
-rw-r--r--experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.h6
-rw-r--r--include/core/SkShader.h11
-rw-r--r--include/effects/SkPerlinNoiseShader.h6
-rw-r--r--src/core/SkBitmapProcShader.cpp2
-rw-r--r--src/core/SkBitmapProcShader.h2
-rw-r--r--src/core/SkBlitter.cpp2
-rw-r--r--src/core/SkColorFilterShader.cpp4
-rw-r--r--src/core/SkColorFilterShader.h6
-rw-r--r--src/core/SkColorShader.h7
-rw-r--r--src/core/SkComposeShader.cpp6
-rw-r--r--src/core/SkComposeShader.h3
-rw-r--r--src/core/SkDraw.cpp8
-rw-r--r--src/core/SkEmptyShader.h12
-rw-r--r--src/core/SkLightingShader.cpp11
-rw-r--r--src/core/SkLocalMatrixShader.h8
-rw-r--r--src/core/SkPictureShader.cpp4
-rw-r--r--src/core/SkPictureShader.h3
-rw-r--r--src/core/SkShader.cpp16
-rw-r--r--src/effects/SkPerlinNoiseShader.cpp4
-rw-r--r--src/effects/gradients/SkLinearGradient.cpp6
-rw-r--r--src/effects/gradients/SkLinearGradient.h3
-rw-r--r--src/effects/gradients/SkRadialGradient.cpp4
-rw-r--r--src/effects/gradients/SkRadialGradient.h3
-rw-r--r--src/effects/gradients/SkSweepGradient.cpp4
-rw-r--r--src/effects/gradients/SkSweepGradient.h3
-rw-r--r--src/effects/gradients/SkTwoPointConicalGradient.cpp4
-rw-r--r--src/effects/gradients/SkTwoPointConicalGradient.h4
-rw-r--r--src/image/SkImageShader.cpp2
-rw-r--r--src/image/SkImageShader.h2
30 files changed, 79 insertions, 81 deletions
diff --git a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
index a1784a4204..a5a2a21523 100644
--- a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
+++ b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
@@ -571,8 +571,8 @@ SkShader::Context* SkPerlinNoiseShader2::onCreateContext(const ContextRec& rec,
return new (storage) PerlinNoiseShaderContext(*this, rec);
}
-size_t SkPerlinNoiseShader2::onContextSize(const ContextRec&) const {
- return SkAlign16(sizeof(PerlinNoiseShaderContext));
+size_t SkPerlinNoiseShader2::contextSize(const ContextRec&) const {
+ return sizeof(PerlinNoiseShaderContext);
}
SkPerlinNoiseShader2::PerlinNoiseShaderContext::PerlinNoiseShaderContext(
diff --git a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.h b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.h
index fac098ab52..a129ef8bcd 100644
--- a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.h
+++ b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.h
@@ -80,9 +80,12 @@ public:
static SkShader* CreateTubulence(SkScalar baseFrequencyX, SkScalar baseFrequencyY,
int numOctaves, SkScalar seed,
const SkISize* tileSize = NULL) {
- return CreateTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, seed, tileSize);
+ return CreateTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, seed, tileSize);
}
+
+ size_t contextSize(const ContextRec&) const override;
+
class PerlinNoiseShaderContext : public SkShader::Context {
public:
PerlinNoiseShaderContext(const SkPerlinNoiseShader2& shader, const ContextRec&);
@@ -115,7 +118,6 @@ public:
protected:
void flatten(SkWriteBuffer&) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
private:
diff --git a/include/core/SkShader.h b/include/core/SkShader.h
index 828467fec2..0645809fe6 100644
--- a/include/core/SkShader.h
+++ b/include/core/SkShader.h
@@ -192,8 +192,11 @@ public:
/**
* Return the size of a Context returned by createContext.
+ *
+ * Override this if your subclass overrides createContext, to return the correct size of
+ * your subclass' context.
*/
- size_t contextSize(const ContextRec&) const;
+ virtual size_t contextSize(const ContextRec&) const;
/**
* Returns true if this shader is just a bitmap, and if not null, returns the bitmap,
@@ -417,12 +420,6 @@ protected:
*/
virtual Context* onCreateContext(const ContextRec&, void* storage) const;
- /**
- * Override this if your subclass overrides createContext, to return the correct size of
- * your subclass' context.
- */
- virtual size_t onContextSize(const ContextRec&) const;
-
virtual bool onAsLuminanceColor(SkColor*) const {
return false;
}
diff --git a/include/effects/SkPerlinNoiseShader.h b/include/effects/SkPerlinNoiseShader.h
index d9b0277f92..e9c22d44fc 100644
--- a/include/effects/SkPerlinNoiseShader.h
+++ b/include/effects/SkPerlinNoiseShader.h
@@ -68,9 +68,12 @@ public:
static SkShader* CreateTubulence(SkScalar baseFrequencyX, SkScalar baseFrequencyY,
int numOctaves, SkScalar seed,
const SkISize* tileSize = NULL) {
- return CreateTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, seed, tileSize);
+ return CreateTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, seed, tileSize);
}
+
+ size_t contextSize(const ContextRec&) const override;
+
class PerlinNoiseShaderContext : public SkShader::Context {
public:
PerlinNoiseShaderContext(const SkPerlinNoiseShader& shader, const ContextRec&);
@@ -103,7 +106,6 @@ public:
protected:
void flatten(SkWriteBuffer&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
- size_t onContextSize(const ContextRec&) const override;
private:
SkPerlinNoiseShader(SkPerlinNoiseShader::Type type, SkScalar baseFrequencyX,
diff --git a/src/core/SkBitmapProcShader.cpp b/src/core/SkBitmapProcShader.cpp
index 6c87ebeda4..895922c6b8 100644
--- a/src/core/SkBitmapProcShader.cpp
+++ b/src/core/SkBitmapProcShader.cpp
@@ -120,7 +120,7 @@ private:
size_t SkBitmapProcShader::ContextSize(const ContextRec& rec) {
// The SkBitmapProcState is stored outside of the context object, with the context holding
// a pointer to it.
- return SkAlign16(sizeof(BitmapProcShaderContext) + sizeof(SkBitmapProcState));
+ return sizeof(BitmapProcShaderContext) + sizeof(SkBitmapProcState);
}
SkShader::Context* SkBitmapProcShader::MakeContext(const SkShader& shader,
diff --git a/src/core/SkBitmapProcShader.h b/src/core/SkBitmapProcShader.h
index ebd9f3f8fb..9f4c16202c 100644
--- a/src/core/SkBitmapProcShader.h
+++ b/src/core/SkBitmapProcShader.h
@@ -21,7 +21,7 @@ public:
bool isOpaque() const override;
- size_t onContextSize(const ContextRec& rec) const override { return ContextSize(rec); }
+ size_t contextSize(const ContextRec& rec) const override { return ContextSize(rec); }
SK_TO_STRING_OVERRIDE()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkBitmapProcShader)
diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp
index bb5cfb72e3..c7c903dc6b 100644
--- a/src/core/SkBlitter.cpp
+++ b/src/core/SkBlitter.cpp
@@ -592,7 +592,7 @@ public:
SkSafeUnref(fProxy);
}
- size_t onContextSize(const ContextRec& rec) const override {
+ size_t contextSize(const ContextRec& rec) const override {
size_t size = sizeof(Sk3DShaderContext);
if (fProxy) {
size += fProxy->contextSize(rec);
diff --git a/src/core/SkColorFilterShader.cpp b/src/core/SkColorFilterShader.cpp
index c856f19150..7b421e9b6d 100644
--- a/src/core/SkColorFilterShader.cpp
+++ b/src/core/SkColorFilterShader.cpp
@@ -62,8 +62,8 @@ SkShader::Context* SkColorFilterShader::onCreateContext(const ContextRec& rec,
return new (storage) FilterShaderContext(*this, shaderContext, rec);
}
-size_t SkColorFilterShader::onContextSize(const ContextRec& rec) const {
- return SkAlign16(sizeof(FilterShaderContext)) + fShader->contextSize(rec);
+size_t SkColorFilterShader::contextSize(const ContextRec& rec) const {
+ return sizeof(FilterShaderContext) + fShader->contextSize(rec);
}
SkColorFilterShader::FilterShaderContext::FilterShaderContext(
diff --git a/src/core/SkColorFilterShader.h b/src/core/SkColorFilterShader.h
index 0f41a43c49..60c45954dc 100644
--- a/src/core/SkColorFilterShader.h
+++ b/src/core/SkColorFilterShader.h
@@ -14,7 +14,9 @@
class SkColorFilterShader : public SkShader {
public:
SkColorFilterShader(SkShader* shader, SkColorFilter* filter);
-
+
+ size_t contextSize(const ContextRec&) const override;
+
#if SK_SUPPORT_GPU
const GrFragmentProcessor* asFragmentProcessor(GrContext*,
const SkMatrix& viewM,
@@ -49,9 +51,9 @@ public:
protected:
void flatten(SkWriteBuffer&) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
+
private:
SkAutoTUnref<SkShader> fShader;
SkAutoTUnref<SkColorFilter> fFilter;
diff --git a/src/core/SkColorShader.h b/src/core/SkColorShader.h
index 00a2bb61f0..6e4e42ad95 100644
--- a/src/core/SkColorShader.h
+++ b/src/core/SkColorShader.h
@@ -26,6 +26,10 @@ public:
bool isOpaque() const override;
+ size_t contextSize(const ContextRec&) const override {
+ return sizeof(ColorShaderContext);
+ }
+
class ColorShaderContext : public SkShader::Context {
public:
ColorShaderContext(const SkColorShader& shader, const ContextRec&);
@@ -57,9 +61,6 @@ protected:
SkColorShader(SkReadBuffer&);
void flatten(SkWriteBuffer&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
- size_t onContextSize(const ContextRec&) const override {
- return sizeof(ColorShaderContext);
- }
bool onAsLuminanceColor(SkColor* lum) const override {
*lum = fColor;
return true;
diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp
index e4ad6e9eda..46ff4019fc 100644
--- a/src/core/SkComposeShader.cpp
+++ b/src/core/SkComposeShader.cpp
@@ -30,8 +30,8 @@ SkComposeShader::~SkComposeShader() {
fShaderA->unref();
}
-size_t SkComposeShader::onContextSize(const ContextRec& rec) const {
- return SkAlign16(sizeof(ComposeShaderContext))
+size_t SkComposeShader::contextSize(const ContextRec& rec) const {
+ return sizeof(ComposeShaderContext)
+ fShaderA->contextSize(rec)
+ fShaderB->contextSize(rec);
}
@@ -76,7 +76,7 @@ template <typename T> void safe_call_destructor(T* obj) {
}
SkShader::Context* SkComposeShader::onCreateContext(const ContextRec& rec, void* storage) const {
- char* aStorage = (char*) storage + SkAlign16(sizeof(ComposeShaderContext));
+ char* aStorage = (char*) storage + sizeof(ComposeShaderContext);
char* bStorage = aStorage + fShaderA->contextSize(rec);
// we preconcat our localMatrix (if any) with the device matrix
diff --git a/src/core/SkComposeShader.h b/src/core/SkComposeShader.h
index 9220a0de97..6f6aa59525 100644
--- a/src/core/SkComposeShader.h
+++ b/src/core/SkComposeShader.h
@@ -34,6 +34,8 @@ public:
SkComposeShader(SkShader* sA, SkShader* sB, SkXfermode* mode = NULL);
virtual ~SkComposeShader();
+ size_t contextSize(const ContextRec&) const override;
+
#if SK_SUPPORT_GPU
const GrFragmentProcessor* asFragmentProcessor(GrContext*,
const SkMatrix& viewM,
@@ -75,7 +77,6 @@ public:
protected:
SkComposeShader(SkReadBuffer& );
void flatten(SkWriteBuffer&) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void*) const override;
private:
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
index e9b0677c33..cff4252579 100644
--- a/src/core/SkDraw.cpp
+++ b/src/core/SkDraw.cpp
@@ -1698,6 +1698,8 @@ class SkTriColorShader : public SkShader {
public:
SkTriColorShader() {}
+ size_t contextSize(const ContextRec&) const override;
+
class TriColorShaderContext : public SkShader::Context {
public:
TriColorShaderContext(const SkTriColorShader& shader, const ContextRec&);
@@ -1720,7 +1722,6 @@ public:
Factory getFactory() const override { sk_throw(); return nullptr; }
protected:
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec& rec, void* storage) const override {
return new (storage) TriColorShaderContext(*this, rec);
}
@@ -1771,10 +1772,9 @@ SkTriColorShader::TriColorShaderContext::TriColorShaderContext(const SkTriColorS
SkTriColorShader::TriColorShaderContext::~TriColorShaderContext() {}
-size_t SkTriColorShader::onContextSize(const ContextRec&) const {
- return SkAlign16(sizeof(TriColorShaderContext));
+size_t SkTriColorShader::contextSize(const ContextRec&) const {
+ return sizeof(TriColorShaderContext);
}
-
void SkTriColorShader::TriColorShaderContext::shadeSpan(int x, int y, SkPMColor dstC[], int count) {
const int alphaScale = Sk255To256(this->getPaintAlpha());
diff --git a/src/core/SkEmptyShader.h b/src/core/SkEmptyShader.h
index 42b61c52fe..c1713d1a2e 100644
--- a/src/core/SkEmptyShader.h
+++ b/src/core/SkEmptyShader.h
@@ -20,16 +20,16 @@ class SK_API SkEmptyShader : public SkShader {
public:
SkEmptyShader() {}
- SK_TO_STRING_OVERRIDE()
- SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmptyShader)
-
-protected:
- size_t onContextSize(const ContextRec&) const override {
+ size_t contextSize(const ContextRec&) const override {
// Even though createContext returns nullptr we have to return a value of at least
// sizeof(SkShader::Context) to satisfy SkSmallAllocator.
- return SkAlign16(sizeof(SkShader::Context));
+ return sizeof(SkShader::Context);
}
+ SK_TO_STRING_OVERRIDE()
+ SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkEmptyShader)
+
+protected:
SkShader::Context* onCreateContext(const ContextRec&, void*) const override {
return nullptr;
}
diff --git a/src/core/SkLightingShader.cpp b/src/core/SkLightingShader.cpp
index 02f75f3516..c8a5a2b737 100644
--- a/src/core/SkLightingShader.cpp
+++ b/src/core/SkLightingShader.cpp
@@ -79,6 +79,8 @@ public:
SkFilterQuality) const override;
#endif
+ size_t contextSize(const ContextRec&) const override;
+
class LightingShaderContext : public SkShader::Context {
public:
// The context takes ownership of the states. It will call their destructors
@@ -104,7 +106,6 @@ public:
protected:
void flatten(SkWriteBuffer&) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void*) const override;
bool computeNormTotalInverse(const ContextRec& rec, SkMatrix* normTotalInverse) const;
@@ -415,6 +416,10 @@ bool SkLightingShaderImpl::isOpaque() const {
return fDiffuseMap.isOpaque();
}
+size_t SkLightingShaderImpl::contextSize(const ContextRec&) const {
+ return 2 * sizeof(SkBitmapProcState) + sizeof(LightingShaderContext);
+}
+
SkLightingShaderImpl::LightingShaderContext::LightingShaderContext(const SkLightingShaderImpl& shader,
const ContextRec& rec,
SkBitmapProcState* diffuseState,
@@ -650,10 +655,6 @@ bool SkLightingShaderImpl::computeNormTotalInverse(const ContextRec& rec,
return m->invert(normTotalInverse);
}
-size_t SkLightingShaderImpl::onContextSize(const ContextRec&) const {
- return 2 * sizeof(SkBitmapProcState) + sizeof(LightingShaderContext);
-}
-
SkShader::Context* SkLightingShaderImpl::onCreateContext(const ContextRec& rec,
void* storage) const {
diff --git a/src/core/SkLocalMatrixShader.h b/src/core/SkLocalMatrixShader.h
index 8edea40d05..d897d49ded 100644
--- a/src/core/SkLocalMatrixShader.h
+++ b/src/core/SkLocalMatrixShader.h
@@ -19,6 +19,10 @@ public:
, fProxyShader(SkRef(proxy))
{}
+ size_t contextSize(const ContextRec& rec) const override {
+ return fProxyShader->contextSize(rec);
+ }
+
GradientType asAGradient(GradientInfo* info) const override {
return fProxyShader->asAGradient(info);
}
@@ -49,10 +53,6 @@ protected:
void flatten(SkWriteBuffer&) const override;
Context* onCreateContext(const ContextRec&, void*) const override;
- size_t onContextSize(const ContextRec& rec) const override {
- return fProxyShader->contextSize(rec);
- }
-
bool onIsABitmap(SkBitmap* bitmap, SkMatrix* matrix, TileMode* mode) const override {
return fProxyShader->isABitmap(bitmap, matrix, mode);
}
diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp
index 630b1bf8e1..f1addadd20 100644
--- a/src/core/SkPictureShader.cpp
+++ b/src/core/SkPictureShader.cpp
@@ -241,8 +241,8 @@ SkShader* SkPictureShader::refBitmapShader(const SkMatrix& viewMatrix, const SkM
return tileShader.detach();
}
-size_t SkPictureShader::onContextSize(const ContextRec&) const {
- return SkAlign16(sizeof(PictureShaderContext));
+size_t SkPictureShader::contextSize(const ContextRec&) const {
+ return sizeof(PictureShaderContext);
}
SkShader::Context* SkPictureShader::onCreateContext(const ContextRec& rec, void* storage) const {
diff --git a/src/core/SkPictureShader.h b/src/core/SkPictureShader.h
index 8cccd251d5..c7a6a44fe0 100644
--- a/src/core/SkPictureShader.h
+++ b/src/core/SkPictureShader.h
@@ -25,6 +25,8 @@ public:
static SkShader* Create(const SkPicture*, TileMode, TileMode, const SkMatrix*,
const SkRect*);
+ size_t contextSize(const ContextRec&) const override;
+
SK_TO_STRING_OVERRIDE()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPictureShader)
@@ -38,7 +40,6 @@ public:
protected:
SkPictureShader(SkReadBuffer&);
void flatten(SkWriteBuffer&) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
private:
diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp
index fd5fb00b88..e36df5b5af 100644
--- a/src/core/SkShader.cpp
+++ b/src/core/SkShader.cpp
@@ -86,10 +86,6 @@ bool SkShader::asLuminanceColor(SkColor* colorPtr) const {
}
SkShader::Context* SkShader::createContext(const ContextRec& rec, void* storage) const {
- // Currently we require each context to be allocated on 16byte boundary as some of our
- // subclasses need that. Hence we check the ptr here.
- SkASSERT(SkIsAlign16((intptr_t)storage));
-
if (!this->computeTotalInverse(rec, nullptr)) {
return nullptr;
}
@@ -100,17 +96,7 @@ SkShader::Context* SkShader::onCreateContext(const ContextRec& rec, void*) const
return nullptr;
}
-size_t SkShader::contextSize(const ContextRec& rec) const {
- size_t size = this->onContextSize(rec);
-
- // Currently we require each context to be allocated on 16byte boundary as some of our
- // subclasses need that. Hence we check the size here.
- SkASSERT(SkIsAlign16(size));
-
- return size;
-}
-
-size_t SkShader::onContextSize(const ContextRec&) const {
+size_t SkShader::contextSize(const ContextRec&) const {
return 0;
}
diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp
index a32d8ac2bb..ed7340ca3a 100644
--- a/src/effects/SkPerlinNoiseShader.cpp
+++ b/src/effects/SkPerlinNoiseShader.cpp
@@ -434,8 +434,8 @@ SkShader::Context* SkPerlinNoiseShader::onCreateContext(const ContextRec& rec,
return new (storage) PerlinNoiseShaderContext(*this, rec);
}
-size_t SkPerlinNoiseShader::onContextSize(const ContextRec&) const {
- return SkAlign16(sizeof(PerlinNoiseShaderContext));
+size_t SkPerlinNoiseShader::contextSize(const ContextRec&) const {
+ return sizeof(PerlinNoiseShaderContext);
}
SkPerlinNoiseShader::PerlinNoiseShaderContext::PerlinNoiseShaderContext(
diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp
index 40503c96f1..cc8875cf8e 100644
--- a/src/effects/gradients/SkLinearGradient.cpp
+++ b/src/effects/gradients/SkLinearGradient.cpp
@@ -88,10 +88,10 @@ void SkLinearGradient::flatten(SkWriteBuffer& buffer) const {
buffer.writePoint(fEnd);
}
-size_t SkLinearGradient::onContextSize(const ContextRec& rec) const {
+size_t SkLinearGradient::contextSize(const ContextRec& rec) const {
return use_4f_context(rec, fGradFlags)
- ? SkAlign16(sizeof(LinearGradient4fContext))
- : SkAlign16(sizeof(LinearGradientContext));
+ ? sizeof(LinearGradient4fContext)
+ : sizeof(LinearGradientContext);
}
SkShader::Context* SkLinearGradient::onCreateContext(const ContextRec& rec, void* storage) const {
diff --git a/src/effects/gradients/SkLinearGradient.h b/src/effects/gradients/SkLinearGradient.h
index f0ce49b8b3..33ddfc2f9e 100644
--- a/src/effects/gradients/SkLinearGradient.h
+++ b/src/effects/gradients/SkLinearGradient.h
@@ -33,6 +33,8 @@ public:
SkLinearGradient(const SkPoint pts[2], const Descriptor&);
+ size_t contextSize(const ContextRec&) const override;
+
class LinearGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
public:
LinearGradientContext(const SkLinearGradient&, const ContextRec&);
@@ -69,7 +71,6 @@ public:
protected:
SkLinearGradient(SkReadBuffer& buffer);
void flatten(SkWriteBuffer& buffer) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
private:
diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp
index da4c6f2412..466ae045a5 100644
--- a/src/effects/gradients/SkRadialGradient.cpp
+++ b/src/effects/gradients/SkRadialGradient.cpp
@@ -40,8 +40,8 @@ SkRadialGradient::SkRadialGradient(const SkPoint& center, SkScalar radius, const
, fRadius(radius) {
}
-size_t SkRadialGradient::onContextSize(const ContextRec&) const {
- return SkAlign16(sizeof(RadialGradientContext));
+size_t SkRadialGradient::contextSize(const ContextRec&) const {
+ return sizeof(RadialGradientContext);
}
SkShader::Context* SkRadialGradient::onCreateContext(const ContextRec& rec, void* storage) const {
diff --git a/src/effects/gradients/SkRadialGradient.h b/src/effects/gradients/SkRadialGradient.h
index 428d7fae79..9d98f18304 100644
--- a/src/effects/gradients/SkRadialGradient.h
+++ b/src/effects/gradients/SkRadialGradient.h
@@ -15,6 +15,8 @@ class SkRadialGradient : public SkGradientShaderBase {
public:
SkRadialGradient(const SkPoint& center, SkScalar radius, const Descriptor&);
+ size_t contextSize(const ContextRec&) const override;
+
class RadialGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
public:
RadialGradientContext(const SkRadialGradient&, const ContextRec&);
@@ -39,7 +41,6 @@ public:
protected:
SkRadialGradient(SkReadBuffer& buffer);
void flatten(SkWriteBuffer& buffer) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
private:
diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp
index 12d55e8b49..de80c79ae0 100644
--- a/src/effects/gradients/SkSweepGradient.cpp
+++ b/src/effects/gradients/SkSweepGradient.cpp
@@ -45,8 +45,8 @@ void SkSweepGradient::flatten(SkWriteBuffer& buffer) const {
buffer.writePoint(fCenter);
}
-size_t SkSweepGradient::onContextSize(const ContextRec&) const {
- return SkAlign16(sizeof(SweepGradientContext));
+size_t SkSweepGradient::contextSize(const ContextRec&) const {
+ return sizeof(SweepGradientContext);
}
SkShader::Context* SkSweepGradient::onCreateContext(const ContextRec& rec, void* storage) const {
diff --git a/src/effects/gradients/SkSweepGradient.h b/src/effects/gradients/SkSweepGradient.h
index f458cea8ce..ec6df45c64 100644
--- a/src/effects/gradients/SkSweepGradient.h
+++ b/src/effects/gradients/SkSweepGradient.h
@@ -15,6 +15,8 @@ class SkSweepGradient : public SkGradientShaderBase {
public:
SkSweepGradient(SkScalar cx, SkScalar cy, const Descriptor&);
+ size_t contextSize(const ContextRec&) const override;
+
class SweepGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
public:
SweepGradientContext(const SkSweepGradient& shader, const ContextRec&);
@@ -39,7 +41,6 @@ public:
protected:
void flatten(SkWriteBuffer& buffer) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
private:
diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp
index f4b6b0c8b0..2209306fe3 100644
--- a/src/effects/gradients/SkTwoPointConicalGradient.cpp
+++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp
@@ -211,8 +211,8 @@ bool SkTwoPointConicalGradient::isOpaque() const {
return false;
}
-size_t SkTwoPointConicalGradient::onContextSize(const ContextRec&) const {
- return SkAlign16(sizeof(TwoPointConicalGradientContext));
+size_t SkTwoPointConicalGradient::contextSize(const ContextRec&) const {
+ return sizeof(TwoPointConicalGradientContext);
}
SkShader::Context* SkTwoPointConicalGradient::onCreateContext(const ContextRec& rec,
diff --git a/src/effects/gradients/SkTwoPointConicalGradient.h b/src/effects/gradients/SkTwoPointConicalGradient.h
index 5783c39bd4..954b09698e 100644
--- a/src/effects/gradients/SkTwoPointConicalGradient.h
+++ b/src/effects/gradients/SkTwoPointConicalGradient.h
@@ -45,6 +45,9 @@ public:
const SkPoint& end, SkScalar endRadius,
bool flippedGrad, const Descriptor&);
+
+ size_t contextSize(const ContextRec&) const override;
+
class TwoPointConicalGradientContext : public SkGradientShaderBase::GradientShaderBaseContext {
public:
TwoPointConicalGradientContext(const SkTwoPointConicalGradient&, const ContextRec&);
@@ -79,7 +82,6 @@ public:
protected:
SkTwoPointConicalGradient(SkReadBuffer& buffer);
void flatten(SkWriteBuffer& buffer) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
private:
diff --git a/src/image/SkImageShader.cpp b/src/image/SkImageShader.cpp
index 4c7ded906c..a07603c671 100644
--- a/src/image/SkImageShader.cpp
+++ b/src/image/SkImageShader.cpp
@@ -42,7 +42,7 @@ bool SkImageShader::isOpaque() const {
return fImage->isOpaque();
}
-size_t SkImageShader::onContextSize(const ContextRec& rec) const {
+size_t SkImageShader::contextSize(const ContextRec& rec) const {
return SkBitmapProcShader::ContextSize(rec);
}
diff --git a/src/image/SkImageShader.h b/src/image/SkImageShader.h
index 07b938d202..d51dc5d4e4 100644
--- a/src/image/SkImageShader.h
+++ b/src/image/SkImageShader.h
@@ -16,6 +16,7 @@ public:
static SkShader* Create(const SkImage*, TileMode tx, TileMode ty, const SkMatrix* localMatrix);
bool isOpaque() const override;
+ size_t contextSize(const ContextRec&) const override;
SK_TO_STRING_OVERRIDE()
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageShader)
@@ -27,7 +28,6 @@ public:
protected:
void flatten(SkWriteBuffer&) const override;
- size_t onContextSize(const ContextRec&) const override;
Context* onCreateContext(const ContextRec&, void* storage) const override;
SkAutoTUnref<const SkImage> fImage;