diff options
author | Mike Klein <mtklein@chromium.org> | 2017-07-20 08:59:19 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-20 16:45:52 +0000 |
commit | 0fddb2d7c17a953c0d3986e5f8bcfdeaf2cc401d (patch) | |
tree | 3ed6fbbb1d4aa8931233de5d4e2e9aa2ab224f8a /src/opts | |
parent | edfe3dfb47bd3248a588c2eb89224f59939bd626 (diff) |
Retry cleaning up SkLinearBitmapPipeline.
This is mostly dead code.
In order to make it truly dead, we need to opt drawing unpremul images
into SkRasterPipelineBlitter. They had been handled by
SkLinearBitmapPipeline, but can't be draw by SkBitmapProcLegacyShader.
Drawing unpremul images is tested by the GM all_variants_8888, which
gave us trouble last time around (serialize-8888 drew right, 8888 wrong)
but now draws fine. I think this was probably also the root of the
revert, drawing some unpremul image in Chrome's tests somewhere.
Change-Id: I453f9df44ade807316935921cbae82961e2f08aa
Reviewed-on: https://skia-review.googlesource.com/24862
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/opts')
-rw-r--r-- | src/opts/SkBlend_opts.h | 98 | ||||
-rw-r--r-- | src/opts/SkOpts_sse41.cpp | 2 |
2 files changed, 0 insertions, 100 deletions
diff --git a/src/opts/SkBlend_opts.h b/src/opts/SkBlend_opts.h deleted file mode 100644 index 86ae50288a..0000000000 --- a/src/opts/SkBlend_opts.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2016 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/* -ninja -C out/Release dm nanobench ; and ./out/Release/dm --match Blend_opts ; and ./out/Release/nanobench --samples 300 --nompd --match LinearSrcOver -q - */ - -#ifndef SkBlend_opts_DEFINED -#define SkBlend_opts_DEFINED - -#include "SkNx.h" -#include "SkPM4fPriv.h" - -#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 - #include <immintrin.h> -#endif - -namespace SK_OPTS_NS { - -static inline void srcover_srgb_srgb_1(uint32_t* dst, uint32_t src) { - if (src >= 0xFF000000) { - *dst = src; - return; - } - auto d = Sk4f_fromS32(*dst), - s = Sk4f_fromS32( src); - *dst = Sk4f_toS32(s + d * (1.0f - s[3])); -} - -static inline void srcover_srgb_srgb_4(uint32_t* dst, const uint32_t* src) { - srcover_srgb_srgb_1(dst++, *src++); - srcover_srgb_srgb_1(dst++, *src++); - srcover_srgb_srgb_1(dst++, *src++); - srcover_srgb_srgb_1(dst , *src ); -} - -#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE41 - - static inline __m128i load(const uint32_t* p) { - return _mm_loadu_si128(reinterpret_cast<const __m128i*>(p)); - } - - static inline void store(uint32_t* p, __m128i v) { - _mm_storeu_si128(reinterpret_cast<__m128i*>(p), v); - } - - static void srcover_srgb_srgb( - uint32_t* dst, const uint32_t* const srcStart, int ndst, const int nsrc) { - const __m128i alphaMask = _mm_set1_epi32(0xFF000000); - while (ndst > 0) { - int count = SkTMin(ndst, nsrc); - ndst -= count; - const uint32_t* src = srcStart; - const uint32_t* end = dst + (count & ~3); - - while (dst < end) { - __m128i pixels = load(src); - - if (_mm_testc_si128(pixels, alphaMask)) { - store(dst, pixels); - } else if (!_mm_testz_si128(pixels, alphaMask)) { - srcover_srgb_srgb_4(dst, src); - } - - dst += 4; - src += 4; - } - - count = count & 3; - while (count-- > 0) { - srcover_srgb_srgb_1(dst++, *src++); - } - } - } - -#else - - static void srcover_srgb_srgb( - uint32_t* dst, const uint32_t* const src, int ndst, const int nsrc) { - while (ndst > 0) { - int n = SkTMin(ndst, nsrc); - - for (int i = 0; i < n; i++) { - srcover_srgb_srgb_1(dst++, src[i]); - } - ndst -= n; - } - } - -#endif - -} // namespace SK_OPTS_NS - -#endif//SkBlend_opts_DEFINED diff --git a/src/opts/SkOpts_sse41.cpp b/src/opts/SkOpts_sse41.cpp index 17ce0668ff..6fd7c3c3a7 100644 --- a/src/opts/SkOpts_sse41.cpp +++ b/src/opts/SkOpts_sse41.cpp @@ -10,14 +10,12 @@ #define SK_OPTS_NS sse41 #include "SkBlurImageFilter_opts.h" #include "SkBlitRow_opts.h" -#include "SkBlend_opts.h" namespace SkOpts { void Init_sse41() { box_blur_xx = sse41::box_blur_xx; box_blur_xy = sse41::box_blur_xy; box_blur_yx = sse41::box_blur_yx; - srcover_srgb_srgb = sse41::srcover_srgb_srgb; blit_row_s32a_opaque = sse41::blit_row_s32a_opaque; } } |