Index: src/core/SkShader.cpp |
diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp |
index e36df5b5af057df6fcacdff6277e3e7f8d667c46..fd5fb00b886fe9ca09ae53aab42cbe0c3329266d 100644 |
--- a/src/core/SkShader.cpp |
+++ b/src/core/SkShader.cpp |
@@ -86,6 +86,10 @@ 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; |
} |
@@ -96,7 +100,17 @@ SkShader::Context* SkShader::onCreateContext(const ContextRec& rec, void*) const |
return nullptr; |
} |
-size_t SkShader::contextSize(const ContextRec&) const { |
+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 { |
return 0; |
} |