aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-06-23 18:05:52 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-24 16:08:23 +0000
commitd9b1fe02a677ec44bc1c99809f3ee7eb08708137 (patch)
treea42689274894a457257ac1b067edb7ebe3df8b1c
parent2e3c955254388927095147e606a1dc2913b80bd1 (diff)
remove a bit more dead code
Change-Id: I61484672e88d6bb4f75833ee89e7178c4f34d610 Reviewed-on: https://skia-review.googlesource.com/20780 Commit-Queue: Mike Klein <mtklein@google.com> Reviewed-by: Herb Derby <herb@google.com>
-rw-r--r--bench/SkBlend_optsBench.cpp202
-rw-r--r--gn/bench.gni1
-rw-r--r--gn/tests.gni1
-rw-r--r--src/core/SkOpts.cpp3
-rw-r--r--src/core/SkOpts.h4
-rw-r--r--src/opts/SkBlend_opts.h98
-rw-r--r--src/opts/SkOpts_sse41.cpp2
-rw-r--r--tests/SkBlend_optsTest.cpp107
8 files changed, 0 insertions, 418 deletions
diff --git a/bench/SkBlend_optsBench.cpp b/bench/SkBlend_optsBench.cpp
deleted file mode 100644
index d7ba2bedc2..0000000000
--- a/bench/SkBlend_optsBench.cpp
+++ /dev/null
@@ -1,202 +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.
- */
-
-#include <tuple>
-
-#include "Benchmark.h"
-#include "Resources.h"
-#include "SkCpu.h"
-#include "SkImage.h"
-#include "SkImage_Base.h"
-#include "SkNx.h"
-#include "SkOpts.h"
-#include "SkPM4fPriv.h"
-#include "SkString.h"
-
-#define INNER_LOOPS 10
-
-static inline void brute_srcover_srgb_srgb_1(uint32_t* dst, uint32_t src) {
- auto d = Sk4f_fromS32(*dst),
- s = Sk4f_fromS32( src);
- *dst = Sk4f_toS32(s + d * (1.0f - s[3]));
-}
-
-static inline void srcover_srgb_srgb_1(uint32_t* dst, uint32_t src) {
- if (src >= 0xFF000000) {
- *dst = src;
- return;
- }
- brute_srcover_srgb_srgb_1(dst, src);
-}
-
-static void brute_force_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++) {
- brute_srcover_srgb_srgb_1(dst++, src[i]);
- }
- ndst -= n;
- }
-}
-
-static void trivial_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;
- }
-}
-
-static void best_non_simd_srcover_srgb_srgb(
- uint32_t* dst, const uint32_t* const src, int ndst, const int nsrc) {
- uint64_t* ddst = reinterpret_cast<uint64_t*>(dst);
-
- auto srcover_srgb_srgb_2 = [](uint32_t* dst, const uint32_t* src) {
- srcover_srgb_srgb_1(dst++, *src++);
- srcover_srgb_srgb_1(dst, *src);
- };
-
- while (ndst >0) {
- int count = SkTMin(ndst, nsrc);
- ndst -= count;
- const uint64_t* dsrc = reinterpret_cast<const uint64_t*>(src);
- const uint64_t* end = dsrc + (count >> 1);
- do {
- if ((~*dsrc & 0xFF000000FF000000) == 0) {
- do {
- *ddst++ = *dsrc++;
- } while (dsrc < end && (~*dsrc & 0xFF000000FF000000) == 0);
- } else if ((*dsrc & 0xFF000000FF000000) == 0) {
- do {
- dsrc++;
- ddst++;
- } while (dsrc < end && (*dsrc & 0xFF000000FF000000) == 0);
- } else {
- srcover_srgb_srgb_2(reinterpret_cast<uint32_t*>(ddst++),
- reinterpret_cast<const uint32_t*>(dsrc++));
- }
- } while (dsrc < end);
-
- if ((count & 1) != 0) {
- uint32_t s1;
- memcpy(&s1, dsrc, 4);
- srcover_srgb_srgb_1(reinterpret_cast<uint32_t*>(ddst), s1);
- }
- }
-}
-
-class SrcOverVSkOptsBruteForce {
-public:
- static SkString Name() { return SkString{"VSkOptsBruteForce"}; }
- static void BlendN(uint32_t* dst, const uint32_t* src, int count) {
- brute_force_srcover_srgb_srgb(dst, src, count, count);
- }
-};
-
-class SrcOverVSkOptsTrivial {
-public:
- static SkString Name() { return SkString{"VSkOptsTrivial"}; }
- static void BlendN(uint32_t* dst, const uint32_t* src, int count) {
- trivial_srcover_srgb_srgb(dst, src, count, count);
- }
-};
-
-class SrcOverVSkOptsNonSimdCore {
-public:
- static SkString Name() { return SkString{"VSkOptsNonSimdCore"}; }
- static void BlendN(uint32_t* dst, const uint32_t* src, int count) {
- best_non_simd_srcover_srgb_srgb(dst, src, count, count);
- }
-};
-
-class SrcOverVSkOptsDefault {
-public:
- static SkString Name() { return SkString{"VSkOptsDefault"}; }
- static void BlendN(uint32_t* dst, const uint32_t* src, int count) {
- SkOpts::srcover_srgb_srgb(dst, src, count, count);
- }
-};
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-template <typename Blender>
-class LinearSrcOverBench : public Benchmark {
-public:
- LinearSrcOverBench(const char* fileName) : fFileName(fileName) {
- fName = "LinearSrcOver_";
- fName.append(fileName);
- fName.append(Blender::Name());
- }
-
-protected:
- bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }
- const char* onGetName() override { return fName.c_str(); }
-
- void onPreDraw(SkCanvas*) override {
- if (!fPixmap.addr()) {
- sk_sp<SkImage> image = GetResourceAsImage(fFileName.c_str());
- SkBitmap bm;
- SkColorSpace* legacyColorSpace = nullptr;
- if (!as_IB(image)->getROPixels(&bm, legacyColorSpace)) {
- SkFAIL("Could not read resource");
- }
- bm.peekPixels(&fPixmap);
- fCount = fPixmap.rowBytesAsPixels();
- fDst.reset(fCount);
- sk_bzero(fDst.get(), fPixmap.rowBytes());
- }
- }
-
- void onDraw(int loops, SkCanvas*) override {
- SkASSERT(fPixmap.colorType() == kN32_SkColorType);
-
- const int width = fPixmap.rowBytesAsPixels();
-
- for (int i = 0; i < loops * INNER_LOOPS; ++i) {
- const uint32_t* src = fPixmap.addr32();
- for (int y = 0; y < fPixmap.height(); y++) {
- Blender::BlendN(fDst.get(), src, width);
- src += width;
- }
- }
- }
-
- void onPostDraw(SkCanvas*) override {
- // Make sure the compiler does not optimize away the operation.
- volatile uint32_t v = 0;
- for (int i = 0; i < fCount; i++) {
- v ^= fDst[i];
- }
- }
-
-private:
- int fCount;
- SkAutoTArray<uint32_t> fDst;
- SkString fFileName;
- SkString fName;
- SkPixmap fPixmap;
-
- typedef Benchmark INHERITED;
-};
-
-#define BENCHES(fileName) \
- DEF_BENCH( return new LinearSrcOverBench<SrcOverVSkOptsBruteForce>(fileName); ) \
- DEF_BENCH( return new LinearSrcOverBench<SrcOverVSkOptsTrivial>(fileName); ) \
- DEF_BENCH( return new LinearSrcOverBench<SrcOverVSkOptsNonSimdCore>(fileName); ) \
- DEF_BENCH( return new LinearSrcOverBench<SrcOverVSkOptsDefault>(fileName); )
-
-BENCHES("yellow_rose.png")
-BENCHES("baby_tux.png")
-BENCHES("plane.png")
-BENCHES("mandrill_512.png")
-BENCHES("iconstrip.png")
diff --git a/gn/bench.gni b/gn/bench.gni
index a61fdbfd21..47a1d823a4 100644
--- a/gn/bench.gni
+++ b/gn/bench.gni
@@ -106,7 +106,6 @@ bench_sources = [
"$_bench/ShadowBench.cpp",
"$_bench/ShapesBench.cpp",
"$_bench/Sk4fBench.cpp",
- "$_bench/SkBlend_optsBench.cpp",
"$_bench/SkGlyphCacheBench.cpp",
"$_bench/SKPAnimationBench.cpp",
"$_bench/SKPBench.cpp",
diff --git a/gn/tests.gni b/gn/tests.gni
index 9b5613aa4c..35c43c5c3f 100644
--- a/gn/tests.gni
+++ b/gn/tests.gni
@@ -200,7 +200,6 @@ tests_sources = [
"$_tests/SizeTest.cpp",
"$_tests/Sk4x4fTest.cpp",
"$_tests/SkBase64Test.cpp",
- "$_tests/SkBlend_optsTest.cpp",
"$_tests/skbug5221.cpp",
"$_tests/skbug6389.cpp",
"$_tests/skbug6653.cpp",
diff --git a/src/core/SkOpts.cpp b/src/core/SkOpts.cpp
index 33c3690f4e..2b7f1f2ed8 100644
--- a/src/core/SkOpts.cpp
+++ b/src/core/SkOpts.cpp
@@ -37,7 +37,6 @@
#endif
#include "SkBitmapFilter_opts.h"
-#include "SkBlend_opts.h"
#include "SkBlitMask_opts.h"
#include "SkBlitRow_opts.h"
#include "SkBlurImageFilter_opts.h"
@@ -80,8 +79,6 @@ namespace SkOpts {
DEFINE_DEFAULT(inverted_CMYK_to_RGB1);
DEFINE_DEFAULT(inverted_CMYK_to_BGR1);
- DEFINE_DEFAULT(srcover_srgb_srgb);
-
DEFINE_DEFAULT(memset16);
DEFINE_DEFAULT(memset32);
DEFINE_DEFAULT(memset64);
diff --git a/src/core/SkOpts.h b/src/core/SkOpts.h
index a4f1ea284c..92d6f284ca 100644
--- a/src/core/SkOpts.h
+++ b/src/core/SkOpts.h
@@ -49,10 +49,6 @@ namespace SkOpts {
inverted_CMYK_to_RGB1, // i.e. convert color space
inverted_CMYK_to_BGR1; // i.e. convert color space
- // Blend ndst src pixels over dst, where both src and dst point to sRGB pixels (RGBA or BGRA).
- // If nsrc < ndst, we loop over src to create a pattern.
- extern void (*srcover_srgb_srgb)(uint32_t* dst, const uint32_t* src, int ndst, int nsrc);
-
extern void (*memset16)(uint16_t[], uint16_t, int);
extern void (*memset32)(uint32_t[], uint32_t, int);
extern void (*memset64)(uint64_t[], uint64_t, int);
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;
}
}
diff --git a/tests/SkBlend_optsTest.cpp b/tests/SkBlend_optsTest.cpp
deleted file mode 100644
index f8cf2d83de..0000000000
--- a/tests/SkBlend_optsTest.cpp
+++ /dev/null
@@ -1,107 +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.
- */
-
-#include <string>
-#include <tuple>
-#include <vector>
-#include "Resources.h"
-#include "SkCpu.h"
-#include "SkImage.h"
-#include "SkImage_Base.h"
-#include "SkOpts.h"
-#include "SkPM4fPriv.h"
-#include "SkNx.h"
-#include "Test.h"
-
-typedef void (*Blender)(uint32_t* dst, const uint32_t* const srcStart, int ndst, const int nsrc);
-
-static inline void srcover_srgb_srgb_1(uint32_t* dst, uint32_t src) {
- auto d = Sk4f_fromS32(*dst),
- s = Sk4f_fromS32( src);
- *dst = Sk4f_toS32(s + d * (1.0f - s[3]));
-}
-
-static void brute_force_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;
- }
-}
-
-static SkString mismatch_message(std::string resourceName, int x, int y,
- uint32_t src, uint32_t good, uint32_t bad) {
- return SkStringPrintf(
- "%s - missmatch at %d, %d src: %08x good: %08x bad: %08x",
- resourceName.c_str(), x, y, src, good, bad);
-}
-
-static void test_blender(std::string resourceName, skiatest::Reporter* reporter) {
- std::string fileName = resourceName + ".png";
- sk_sp<SkImage> image = GetResourceAsImage(fileName.c_str());
- if (image == nullptr) {
- ERRORF(reporter, "image is NULL");
- return;
- }
- SkBitmap bm;
- sk_sp<SkColorSpace> srgbColorSpace = SkColorSpace::MakeSRGB();
- if (!as_IB(image)->getROPixels(&bm, srgbColorSpace.get())) {
- ERRORF(reporter, "Could not read resource");
- return;
- }
-
- SkPixmap pixmap;
- bm.peekPixels(&pixmap);
- SkASSERTF(pixmap.colorType() == kN32_SkColorType, "colorType: %d", pixmap.colorType());
- SkASSERT(pixmap.alphaType() != kUnpremul_SkAlphaType);
- const uint32_t* src = pixmap.addr32();
- const int width = pixmap.rowBytesAsPixels();
- SkASSERT(width > 0);
- SkASSERT(width < 4000);
- SkAutoTArray<uint32_t> correctDst(width);
- SkAutoTArray<uint32_t> testDst(width);
-
- for (int y = 0; y < pixmap.height(); y++) {
- // TODO: zero is not the most interesting dst to test srcover...
- sk_bzero(correctDst.get(), width * sizeof(uint32_t));
- sk_bzero(testDst.get(), width * sizeof(uint32_t));
- brute_force_srcover_srgb_srgb(correctDst.get(), src, width, width);
- SkOpts:: srcover_srgb_srgb( testDst.get(), src, width, width);
- for (int x = 0; x < width; x++) {
- REPORTER_ASSERT_MESSAGE(
- reporter, correctDst[x] == testDst[x],
- mismatch_message(resourceName, x, y, src[x], correctDst[x], testDst[x]));
- if (correctDst[x] != testDst[x]) break;
- }
- src += width;
- }
-}
-
-DEF_TEST(SkBlend_optsCheck, reporter) {
- std::vector<std::string> testResources = {
- "yellow_rose", "baby_tux", "plane", "mandrill_512", "iconstrip"
- };
-
- for (auto& resourceName : testResources) {
- test_blender(resourceName, reporter);
- }
-}
-
-DEF_TEST(SkBlend_optsSqrtCheck, reporter) {
- for (int c = 0; c < 256; c++) {
- Sk4f i{(float)c};
- Sk4f ii = i * i;
- Sk4f s = ii.sqrt() + 0.5f;
- Sk4f sf = s.floor();
- REPORTER_ASSERT_MESSAGE(
- reporter, i[0] == sf[0], SkStringPrintf("i: %f, s: %f", i[0], sf[0]));
- }
-}