aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/opts
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-07-20 08:59:19 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-20 16:45:52 +0000
commit0fddb2d7c17a953c0d3986e5f8bcfdeaf2cc401d (patch)
tree3ed6fbbb1d4aa8931233de5d4e2e9aa2ab224f8a /src/opts
parentedfe3dfb47bd3248a588c2eb89224f59939bd626 (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.h98
-rw-r--r--src/opts/SkOpts_sse41.cpp2
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;
}
}