aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-01-06 10:21:56 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-06 16:14:00 +0000
commit8c8cb5bfc547229422a33db5c344fe1542bf00a7 (patch)
tree55c4405c03f8e99b91822b3ae8b3dd7b15c3307e
parenta3fa2efcfc376b4823fe75d2027a74a54a639880 (diff)
simplify by removing _d stages
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Change-Id: I75e232faee6ad48f65bac5b119a461280b27bbc8 Reviewed-on: https://skia-review.googlesource.com/6661 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
-rw-r--r--bench/SkRasterPipelineBench.cpp9
-rw-r--r--src/core/SkRasterPipeline.cpp18
-rw-r--r--src/core/SkRasterPipeline.h17
-rw-r--r--src/core/SkRasterPipelineBlitter.cpp12
-rw-r--r--src/opts/SkRasterPipeline_opts.h26
-rw-r--r--tests/SkRasterPipelineTest.cpp4
6 files changed, 34 insertions, 52 deletions
diff --git a/bench/SkRasterPipelineBench.cpp b/bench/SkRasterPipelineBench.cpp
index 376efdeb84..6d9bb49f50 100644
--- a/bench/SkRasterPipelineBench.cpp
+++ b/bench/SkRasterPipelineBench.cpp
@@ -45,13 +45,14 @@ public:
p.append(SkRasterPipeline::load_8888, &src_ctx);
p.append_from_srgb(kUnpremul_SkAlphaType);
p.append(SkRasterPipeline::scale_u8, &mask_ctx);
+ p.append(SkRasterPipeline::move_src_dst);
if (kF16) {
- p.append(SkRasterPipeline::load_f16_d, &dst_ctx);
+ p.append(SkRasterPipeline::load_f16, &dst_ctx);
} else {
- p.append(SkRasterPipeline::load_8888_d, &dst_ctx);
- p.append_from_srgb_d(kPremul_SkAlphaType);
+ p.append(SkRasterPipeline::load_8888, &dst_ctx);
+ p.append_from_srgb(kPremul_SkAlphaType);
}
- p.append(SkRasterPipeline::srcover);
+ p.append(SkRasterPipeline::dstover);
if (kF16) {
p.append(SkRasterPipeline::store_f16, &dst_ctx);
} else {
diff --git a/src/core/SkRasterPipeline.cpp b/src/core/SkRasterPipeline.cpp
index 00ba81e6f3..7b3d49d413 100644
--- a/src/core/SkRasterPipeline.cpp
+++ b/src/core/SkRasterPipeline.cpp
@@ -11,14 +11,7 @@
SkRasterPipeline::SkRasterPipeline() {}
void SkRasterPipeline::append(StockStage stage, void* ctx) {
-#ifdef SK_DEBUG
- switch (stage) {
- case from_srgb:
- case from_srgb_d:
- SkDEBUGFAIL("Please use append_srgb[_d]() instead.");
- default: break;
- }
-#endif
+ SkASSERT(stage != from_srgb);
fStages.push_back({stage, ctx});
}
@@ -67,12 +60,3 @@ void SkRasterPipeline::append_from_srgb(SkAlphaType at) {
this->append(SkRasterPipeline::clamp_a);
}
}
-
-void SkRasterPipeline::append_from_srgb_d(SkAlphaType at) {
- //this->append(from_srgb_d);
- fStages.push_back({from_srgb_d, nullptr});
-
- if (at == kPremul_SkAlphaType) {
- this->append(SkRasterPipeline::clamp_a_d);
- }
-}
diff --git a/src/core/SkRasterPipeline.h b/src/core/SkRasterPipeline.h
index 3b18b73470..61a44eb1db 100644
--- a/src/core/SkRasterPipeline.h
+++ b/src/core/SkRasterPipeline.h
@@ -58,16 +58,16 @@
#define SK_RASTER_PIPELINE_STAGES(M) \
M(trace) M(registers) \
- M(move_src_dst) M(move_dst_src) M(swap_rb) M(swap_rb_d) \
- M(clamp_0) M(clamp_1) M(clamp_a) M(clamp_a_d) \
+ M(move_src_dst) M(move_dst_src) M(swap) \
+ M(clamp_0) M(clamp_1) M(clamp_a) \
M(unpremul) M(premul) \
- M(set_rgb) \
- M(from_srgb) M(from_srgb_d) M(to_srgb) \
+ M(set_rgb) M(swap_rb) \
+ M(from_srgb) M(to_srgb) \
M(from_2dot2) M(to_2dot2) \
M(constant_color) M(store_f32) \
- M(load_565) M(load_565_d) M(store_565) \
- M(load_f16) M(load_f16_d) M(store_f16) \
- M(load_8888) M(load_8888_d) M(store_8888) \
+ M(load_565) M(store_565) \
+ M(load_f16) M(store_f16) \
+ M(load_8888) M(store_8888) \
M(load_tables) M(store_tables) \
M(scale_u8) M(scale_1_float) \
M(lerp_u8) M(lerp_565) M(lerp_1_float) \
@@ -122,8 +122,7 @@ public:
// Conversion from sRGB can be subtly tricky when premultiplication is involved.
// Use these helpers to keep things sane.
- void append_from_srgb (SkAlphaType);
- void append_from_srgb_d(SkAlphaType);
+ void append_from_srgb(SkAlphaType);
private:
std::vector<Stage> fStages;
diff --git a/src/core/SkRasterPipelineBlitter.cpp b/src/core/SkRasterPipelineBlitter.cpp
index cbdb09faa4..9fad0b4752 100644
--- a/src/core/SkRasterPipelineBlitter.cpp
+++ b/src/core/SkRasterPipelineBlitter.cpp
@@ -186,19 +186,21 @@ SkBlitter* SkRasterPipelineBlitter::Create(const SkPixmap& dst,
void SkRasterPipelineBlitter::append_load_d(SkRasterPipeline* p) const {
SkASSERT(supported(fDst.info()));
+ p->append(SkRasterPipeline::move_src_dst);
switch (fDst.info().colorType()) {
- case kRGB_565_SkColorType: p->append(SkRasterPipeline::load_565_d, &fDstPtr); break;
+ case kRGB_565_SkColorType: p->append(SkRasterPipeline::load_565, &fDstPtr); break;
case kBGRA_8888_SkColorType:
- case kRGBA_8888_SkColorType: p->append(SkRasterPipeline::load_8888_d, &fDstPtr); break;
- case kRGBA_F16_SkColorType: p->append(SkRasterPipeline::load_f16_d, &fDstPtr); break;
+ case kRGBA_8888_SkColorType: p->append(SkRasterPipeline::load_8888, &fDstPtr); break;
+ case kRGBA_F16_SkColorType: p->append(SkRasterPipeline::load_f16, &fDstPtr); break;
default: break;
}
if (fDst.info().colorType() == kBGRA_8888_SkColorType) {
- p->append(SkRasterPipeline::swap_rb_d);
+ p->append(SkRasterPipeline::swap_rb);
}
if (fDst.info().gammaCloseToSRGB()) {
- p->append_from_srgb_d(fDst.info().alphaType());
+ p->append_from_srgb(fDst.info().alphaType());
}
+ p->append(SkRasterPipeline::swap);
}
void SkRasterPipelineBlitter::append_store(SkRasterPipeline* p) const {
diff --git a/src/opts/SkRasterPipeline_opts.h b/src/opts/SkRasterPipeline_opts.h
index 9721e2abef..143a9ece79 100644
--- a/src/opts/SkRasterPipeline_opts.h
+++ b/src/opts/SkRasterPipeline_opts.h
@@ -44,8 +44,10 @@ namespace {
// &load_8888
// (src ptr)
// &from_srgb
- // &load_f16_d
+ // &move_src_dst
+ // &load_f16
// (dst ptr)
+ // &swap
// &srcover
// &store_f16
// (dst ptr)
@@ -92,12 +94,6 @@ SI void SK_VECTORCALL just_return(size_t, void**, SkNf, SkNf, SkNf, SkNf,
name##_kernel(x_tail/N, x_tail%N, r,g,b,a, dr,dg,db,da); \
next(x_tail,p, r,g,b,a, dr,dg,db,da); \
} \
- SI void SK_VECTORCALL name##_d(size_t x_tail, void** p, \
- SkNf r, SkNf g, SkNf b, SkNf a, \
- SkNf dr, SkNf dg, SkNf db, SkNf da) { \
- name##_kernel(x_tail/N, x_tail%N, dr,dg,db,da, r,g,b,a); \
- next(x_tail,p, r,g,b,a, dr,dg,db,da); \
- } \
static SK_ALWAYS_INLINE void name##_kernel(size_t x, size_t tail, \
SkNf& r, SkNf& g, SkNf& b, SkNf& a, \
SkNf& dr, SkNf& dg, SkNf& db, SkNf& da)
@@ -113,13 +109,6 @@ SI void SK_VECTORCALL just_return(size_t, void**, SkNf, SkNf, SkNf, SkNf,
name##_kernel(ctx, x_tail/N, x_tail%N, r,g,b,a, dr,dg,db,da); \
next(x_tail,p, r,g,b,a, dr,dg,db,da); \
} \
- SI void SK_VECTORCALL name##_d(size_t x_tail, void** p, \
- SkNf r, SkNf g, SkNf b, SkNf a, \
- SkNf dr, SkNf dg, SkNf db, SkNf da) { \
- auto ctx = (Ctx)load_and_increment(&p); \
- name##_kernel(ctx, x_tail/N, x_tail%N, dr,dg,db,da, r,g,b,a); \
- next(x_tail,p, r,g,b,a, dr,dg,db,da); \
- } \
static SK_ALWAYS_INLINE void name##_kernel(Ctx ctx, size_t x, size_t tail, \
SkNf& r, SkNf& g, SkNf& b, SkNf& a, \
SkNf& dr, SkNf& dg, SkNf& db, SkNf& da)
@@ -380,6 +369,7 @@ STAGE_CTX(set_rgb, const float*) {
g = ctx[1];
b = ctx[2];
}
+STAGE(swap_rb) { SkTSwap(r,b); }
STAGE(move_src_dst) {
dr = r;
@@ -393,8 +383,12 @@ STAGE(move_dst_src) {
b = db;
a = da;
}
-
-STAGE(swap_rb) { SkTSwap(r, b); }
+STAGE(swap) {
+ SkTSwap(r,dr);
+ SkTSwap(g,dg);
+ SkTSwap(b,db);
+ SkTSwap(a,da);
+}
STAGE(from_srgb) {
r = sk_linear_from_srgb_math(r);
diff --git a/tests/SkRasterPipelineTest.cpp b/tests/SkRasterPipelineTest.cpp
index 50c417f5f0..ddd84e7cce 100644
--- a/tests/SkRasterPipelineTest.cpp
+++ b/tests/SkRasterPipelineTest.cpp
@@ -22,7 +22,9 @@ DEF_TEST(SkRasterPipeline, r) {
SkRasterPipeline p;
p.append(SkRasterPipeline::load_f16, &load_s_ctx);
- p.append(SkRasterPipeline::load_f16_d, &load_d_ctx);
+ p.append(SkRasterPipeline::move_src_dst);
+ p.append(SkRasterPipeline::load_f16, &load_d_ctx);
+ p.append(SkRasterPipeline::swap);
p.append(SkRasterPipeline::srcover);
p.append(SkRasterPipeline::store_f16, &store_ctx);
p.run(0,0, 1);