diff options
author | Mike Reed <reed@google.com> | 2017-10-05 16:04:41 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-05 20:25:04 +0000 |
commit | ef8ce2858b7692c9ec9874c43656e603f304c760 (patch) | |
tree | 1b3abd8bd47acfc2e13168df79b58d82878df097 /src/core/SkCoreBlitters.h | |
parent | ded7aa82afa9672002fcd2a0eff09db59bfd0010 (diff) |
experiments to speed up drawing 32bit images into 565
New (legacy style) blitters only coded for shaders (and very restricted blendmodes)
Bug: skia:
See https://buganizer.corp.google.com/issues/64884885
Change-Id: Ie2546093bfe1e670a825dfd9542d252d53732c40
Reviewed-on: https://skia-review.googlesource.com/54103
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Diffstat (limited to 'src/core/SkCoreBlitters.h')
-rw-r--r-- | src/core/SkCoreBlitters.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/core/SkCoreBlitters.h b/src/core/SkCoreBlitters.h index 47b20176e6..9d227e9b43 100644 --- a/src/core/SkCoreBlitters.h +++ b/src/core/SkCoreBlitters.h @@ -137,6 +137,27 @@ private: typedef SkShaderBlitter INHERITED; }; +/////////////////////////////////////////////////////////////////////////////////////////////////// + +typedef void (*SkS32D16BlendProc)(uint16_t*, const SkPMColor*, int, uint8_t); + +class SkRGB565_Shader_Blitter : public SkShaderBlitter { +public: + SkRGB565_Shader_Blitter(const SkPixmap& device, const SkPaint&, SkShaderBase::Context*); + ~SkRGB565_Shader_Blitter() override; + void blitH(int x, int y, int width) override; + void blitAntiH(int x, int y, const SkAlpha[], const int16_t[]) override; + + static bool Supports(const SkPixmap& device, const SkPaint&); + +private: + SkPMColor* fBuffer; + SkS32D16BlendProc fBlend; + SkS32D16BlendProc fBlendCoverage; + + typedef SkShaderBlitter INHERITED; +}; + /////////////////////////////////////////////////////////////////////////////// // Neither of these ever returns nullptr, but this first factory may return a SkNullBlitter. |