diff options
author | Florin Malita <fmalita@chromium.org> | 2017-07-12 13:31:25 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-12 20:36:45 +0000 |
commit | 5769dd2c9ad9443b8cf2d62748d5747e547c7ad5 (patch) | |
tree | 912ab12f89b385392d5db0da9700e40968fa69f7 /src/shaders/SkShaderBase.h | |
parent | d4b2c537d058ad4cb890ba116d00aa86c3416c08 (diff) |
Add some raster pipeline perspective asserts
I meant to add these when removing the guard, but since we landed without
a guard, might as well do it now.
A couple of things exposed by these asserts:
1) we need to also catch perspective in local matrices
2) we need to disallow burst mode with perspective
Also tweak the predicate to hasPerspective() instead of explicit mask
check.
Change-Id: I099e5125fca52dccffca77c60fc800bbdf539b53
Reviewed-on: https://skia-review.googlesource.com/22483
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/shaders/SkShaderBase.h')
-rw-r--r-- | src/shaders/SkShaderBase.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/shaders/SkShaderBase.h b/src/shaders/SkShaderBase.h index 8dc9354e53..d469442215 100644 --- a/src/shaders/SkShaderBase.h +++ b/src/shaders/SkShaderBase.h @@ -211,7 +211,10 @@ public: return this->onMakeColorSpace(xformer); } - virtual bool isRasterPipelineOnly() const { return false; } + bool isRasterPipelineOnly() const { + // We always use RP when perspective is present. + return fLocalMatrix.hasPerspective() || this->onIsRasterPipelineOnly(); + } // If this returns false, then we draw nothing (do not fall back to shader context) bool appendStages(SkRasterPipeline*, SkColorSpace* dstCS, SkArenaAlloc*, @@ -268,6 +271,8 @@ protected: virtual bool onAppendStages(SkRasterPipeline*, SkColorSpace* dstCS, SkArenaAlloc*, const SkMatrix&, const SkPaint&, const SkMatrix* localM) const; + virtual bool onIsRasterPipelineOnly() const { return false; } + private: // This is essentially const, but not officially so it can be modified in constructors. SkMatrix fLocalMatrix; |