diff options
author | Robert Phillips <robertphillips@google.com> | 2017-02-07 17:28:15 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-07 17:28:21 +0000 |
commit | dd8b72ae7319598cfc1024901e860c52f06e6ae1 (patch) | |
tree | b6e94e11c082c691512f8989ae55794fa2e6b756 /src/effects | |
parent | 1f2fff2544a9dc6a0f169a017d374eca9f04c6b5 (diff) |
Revert "Use SkArenaAlloc instead of SkSmallAllocator in the SkAutoBlitterChoose code."
This reverts commit 2b57b7f7a7fc97db57f190b5a8ebcf68e177ee2d.
Reason for revert: Android compile failing
Original change's description:
> Use SkArenaAlloc instead of SkSmallAllocator in the SkAutoBlitterChoose code.
>
>
> TBR=reed@google.com
> Change-Id: Iefb044bf7657fbf982f23aa91a3f4d013ce2c626
> Reviewed-on: https://skia-review.googlesource.com/7786
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Reviewed-by: Herb Derby <herb@google.com>
> Commit-Queue: Herb Derby <herb@google.com>
>
TBR=mtklein@chromium.org,mtklein@google.com,herb@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: Id09c35377dddae0811d998b7d0c34c422325a5bc
Reviewed-on: https://skia-review.googlesource.com/8129
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkGaussianEdgeShader.cpp | 6 | ||||
-rw-r--r-- | src/effects/SkPerlinNoiseShader.cpp | 12 | ||||
-rw-r--r-- | src/effects/gradients/SkGradientShaderPriv.h | 6 | ||||
-rw-r--r-- | src/effects/gradients/SkLinearGradient.cpp | 14 | ||||
-rw-r--r-- | src/effects/gradients/SkLinearGradient.h | 3 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.cpp | 10 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.h | 3 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.cpp | 10 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.h | 3 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.cpp | 10 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.h | 3 |
11 files changed, 47 insertions, 33 deletions
diff --git a/src/effects/SkGaussianEdgeShader.cpp b/src/effects/SkGaussianEdgeShader.cpp index 7bbbb79117..be05e54711 100644 --- a/src/effects/SkGaussianEdgeShader.cpp +++ b/src/effects/SkGaussianEdgeShader.cpp @@ -9,8 +9,6 @@ #include "SkReadBuffer.h" #include "SkWriteBuffer.h" -class SkArenaAlloc; - /** \class SkGaussianEdgeShaderImpl This subclass of shader applies a Gaussian to shadow edge @@ -36,9 +34,7 @@ public: protected: void flatten(SkWriteBuffer&) const override; - Context* onMakeContext(const ContextRec& rec, SkArenaAlloc* storage) const override { - return nullptr; - } + private: friend class SkGaussianEdgeShader; diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp index 7582196573..92f2946c74 100644 --- a/src/effects/SkPerlinNoiseShader.cpp +++ b/src/effects/SkPerlinNoiseShader.cpp @@ -6,8 +6,6 @@ */ #include "SkPerlinNoiseShader.h" - -#include "SkArenaAlloc.h" #include "SkColorFilter.h" #include "SkReadBuffer.h" #include "SkWriteBuffer.h" @@ -436,9 +434,13 @@ SkPMColor SkPerlinNoiseShader::PerlinNoiseShaderContext::shade( return SkPreMultiplyARGB(rgba[3], rgba[0], rgba[1], rgba[2]); } -SkShader::Context* SkPerlinNoiseShader::onMakeContext( - const ContextRec& rec, SkArenaAlloc* alloc) const { - return alloc->make<PerlinNoiseShaderContext>(*this, rec); +SkShader::Context* SkPerlinNoiseShader::onCreateContext(const ContextRec& rec, + void* storage) const { + return new (storage) PerlinNoiseShaderContext(*this, rec); +} + +size_t SkPerlinNoiseShader::onContextSize(const ContextRec&) const { + return sizeof(PerlinNoiseShaderContext); } SkPerlinNoiseShader::PerlinNoiseShaderContext::PerlinNoiseShaderContext( diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h index a9eef7df0e..75b6595926 100644 --- a/src/effects/gradients/SkGradientShaderPriv.h +++ b/src/effects/gradients/SkGradientShaderPriv.h @@ -11,7 +11,6 @@ #include "SkGradientBitmapCache.h" #include "SkGradientShader.h" -#include "SkArenaAlloc.h" #include "SkAutoMalloc.h" #include "SkClampRange.h" #include "SkColorPriv.h" @@ -238,9 +237,10 @@ protected: int count); template <typename T, typename... Args> - static Context* CheckedMakeContext(SkArenaAlloc* alloc, Args&&... args) { - auto* ctx = alloc->make<T>(std::forward<Args>(args)...); + static Context* CheckedCreateContext(void* storage, Args&&... args) { + auto* ctx = new (storage) T(std::forward<Args>(args)...); if (!ctx->isValid()) { + ctx->~T(); return nullptr; } return ctx; diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp index 73247cb113..5a74bfd7b9 100644 --- a/src/effects/gradients/SkLinearGradient.cpp +++ b/src/effects/gradients/SkLinearGradient.cpp @@ -74,12 +74,16 @@ void SkLinearGradient::flatten(SkWriteBuffer& buffer) const { buffer.writePoint(fEnd); } -SkShader::Context* SkLinearGradient::onMakeContext( - const ContextRec& rec, SkArenaAlloc* alloc) const -{ +size_t SkLinearGradient::onContextSize(const ContextRec& rec) const { + return use_4f_context(rec, fGradFlags) + ? sizeof(LinearGradient4fContext) + : sizeof(LinearGradientContext); +} + +SkShader::Context* SkLinearGradient::onCreateContext(const ContextRec& rec, void* storage) const { return use_4f_context(rec, fGradFlags) - ? CheckedMakeContext<LinearGradient4fContext>(alloc, *this, rec) - : CheckedMakeContext< LinearGradientContext>(alloc, *this, rec); + ? CheckedCreateContext<LinearGradient4fContext>(storage, *this, rec) + : CheckedCreateContext< LinearGradientContext>(storage, *this, rec); } // For now, only a 2-stop raster pipeline specialization. diff --git a/src/effects/gradients/SkLinearGradient.h b/src/effects/gradients/SkLinearGradient.h index 4118deeae5..f13599da8a 100644 --- a/src/effects/gradients/SkLinearGradient.h +++ b/src/effects/gradients/SkLinearGradient.h @@ -66,7 +66,8 @@ public: protected: SkLinearGradient(SkReadBuffer& buffer); void flatten(SkWriteBuffer& buffer) const override; - Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; + size_t onContextSize(const ContextRec&) const override; + Context* onCreateContext(const ContextRec&, void* storage) const override; bool onAppendStages(SkRasterPipeline*, SkColorSpace*, SkArenaAlloc*, const SkMatrix&, const SkPaint&, const SkMatrix*) const override; diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp index 7e56863993..a7dca764d5 100644 --- a/src/effects/gradients/SkRadialGradient.cpp +++ b/src/effects/gradients/SkRadialGradient.cpp @@ -39,10 +39,12 @@ SkRadialGradient::SkRadialGradient(const SkPoint& center, SkScalar radius, const , fRadius(radius) { } -SkShader::Context* SkRadialGradient::onMakeContext( - const ContextRec& rec, SkArenaAlloc* alloc) const -{ - return CheckedMakeContext<RadialGradientContext>(alloc, *this, rec); +size_t SkRadialGradient::onContextSize(const ContextRec&) const { + return sizeof(RadialGradientContext); +} + +SkShader::Context* SkRadialGradient::onCreateContext(const ContextRec& rec, void* storage) const { + return CheckedCreateContext<RadialGradientContext>(storage, *this, rec); } SkRadialGradient::RadialGradientContext::RadialGradientContext( diff --git a/src/effects/gradients/SkRadialGradient.h b/src/effects/gradients/SkRadialGradient.h index f92fbb3b72..0b239039ee 100644 --- a/src/effects/gradients/SkRadialGradient.h +++ b/src/effects/gradients/SkRadialGradient.h @@ -35,7 +35,8 @@ public: protected: SkRadialGradient(SkReadBuffer& buffer); void flatten(SkWriteBuffer& buffer) const override; - Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; + size_t onContextSize(const ContextRec&) const override; + Context* onCreateContext(const ContextRec&, void* storage) const override; private: const SkPoint fCenter; diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp index 928de4c42c..27d5dbeb7b 100644 --- a/src/effects/gradients/SkSweepGradient.cpp +++ b/src/effects/gradients/SkSweepGradient.cpp @@ -45,10 +45,12 @@ void SkSweepGradient::flatten(SkWriteBuffer& buffer) const { buffer.writePoint(fCenter); } -SkShader::Context* SkSweepGradient::onMakeContext( - const ContextRec& rec, SkArenaAlloc* alloc) const -{ - return CheckedMakeContext<SweepGradientContext>(alloc, *this, rec); +size_t SkSweepGradient::onContextSize(const ContextRec&) const { + return sizeof(SweepGradientContext); +} + +SkShader::Context* SkSweepGradient::onCreateContext(const ContextRec& rec, void* storage) const { + return CheckedCreateContext<SweepGradientContext>(storage, *this, rec); } SkSweepGradient::SweepGradientContext::SweepGradientContext( diff --git a/src/effects/gradients/SkSweepGradient.h b/src/effects/gradients/SkSweepGradient.h index 30ebb1ad4e..f132118b39 100644 --- a/src/effects/gradients/SkSweepGradient.h +++ b/src/effects/gradients/SkSweepGradient.h @@ -35,7 +35,8 @@ public: protected: void flatten(SkWriteBuffer& buffer) const override; - Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; + size_t onContextSize(const ContextRec&) const override; + Context* onCreateContext(const ContextRec&, void* storage) const override; private: const SkPoint fCenter; diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp index a9740aa455..599fd4c9fd 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp @@ -210,9 +210,13 @@ bool SkTwoPointConicalGradient::isOpaque() const { return false; } -SkShader::Context* SkTwoPointConicalGradient::onMakeContext( - const ContextRec& rec, SkArenaAlloc* alloc) const { - return CheckedMakeContext<TwoPointConicalGradientContext>(alloc, *this, rec); +size_t SkTwoPointConicalGradient::onContextSize(const ContextRec&) const { + return sizeof(TwoPointConicalGradientContext); +} + +SkShader::Context* SkTwoPointConicalGradient::onCreateContext(const ContextRec& rec, + void* storage) const { + return CheckedCreateContext<TwoPointConicalGradientContext>(storage, *this, rec); } SkTwoPointConicalGradient::TwoPointConicalGradientContext::TwoPointConicalGradientContext( diff --git a/src/effects/gradients/SkTwoPointConicalGradient.h b/src/effects/gradients/SkTwoPointConicalGradient.h index e509f92703..d16e4bc3c5 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.h +++ b/src/effects/gradients/SkTwoPointConicalGradient.h @@ -75,7 +75,8 @@ public: protected: SkTwoPointConicalGradient(SkReadBuffer& buffer); void flatten(SkWriteBuffer& buffer) const override; - Context* onMakeContext(const ContextRec&, SkArenaAlloc*) const override; + size_t onContextSize(const ContextRec&) const override; + Context* onCreateContext(const ContextRec&, void* storage) const override; private: SkPoint fCenter1; |