diff options
author | Mike Klein <mtklein@chromium.org> | 2016-10-10 14:23:37 +0000 |
---|---|---|
committer | Mike Klein <mtklein@chromium.org> | 2016-10-10 14:32:01 +0000 |
commit | 42f4b42e8311f168aeeadd939b476c05b329500e (patch) | |
tree | 04807739ce53135bc925f483a3b9da938280311a /src/core/SkOpts.cpp | |
parent | e61b3b4018a3e139e9ae19d2c47dc59deeaedd16 (diff) |
Revert "SkRasterPipeline: 8x pipelines, attempt 2"
This reverts commit Id0ba250037e271a9475fe2f0989d64f0aa909bae.
crbug.com/654213
Looks like Chrome Canary's picking up Haswell code on non-Haswell machines.
Change-Id: I16f976da24db86d5c99636c472ffad56db213a2a
Reviewed-on: https://skia-review.googlesource.com/3108
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/core/SkOpts.cpp')
-rw-r--r-- | src/core/SkOpts.cpp | 194 |
1 files changed, 95 insertions, 99 deletions
diff --git a/src/core/SkOpts.cpp b/src/core/SkOpts.cpp index 88261f65bd..7784e7fcf1 100644 --- a/src/core/SkOpts.cpp +++ b/src/core/SkOpts.cpp @@ -88,109 +88,105 @@ namespace SkOpts { DEFINE_DEFAULT(srcover_srgb_srgb); DEFINE_DEFAULT(hash_fn); - - DEFINE_DEFAULT(run_pipeline); #undef DEFINE_DEFAULT - SkOpts::VoidFn body[] = { - (SkOpts::VoidFn)SK_OPTS_NS::just_return, - - (SkOpts::VoidFn)SK_OPTS_NS::store_565, - (SkOpts::VoidFn)SK_OPTS_NS::store_srgb, - (SkOpts::VoidFn)SK_OPTS_NS::store_f16, - - (SkOpts::VoidFn)SK_OPTS_NS::load_s_565, - (SkOpts::VoidFn)SK_OPTS_NS::load_s_srgb, - (SkOpts::VoidFn)SK_OPTS_NS::load_s_f16, - - (SkOpts::VoidFn)SK_OPTS_NS::load_d_565, - (SkOpts::VoidFn)SK_OPTS_NS::load_d_srgb, - (SkOpts::VoidFn)SK_OPTS_NS::load_d_f16, - - (SkOpts::VoidFn)SK_OPTS_NS::scale_u8, - - (SkOpts::VoidFn)SK_OPTS_NS::lerp_u8, - (SkOpts::VoidFn)SK_OPTS_NS::lerp_565, - (SkOpts::VoidFn)SK_OPTS_NS::lerp_constant_float, - - (SkOpts::VoidFn)SK_OPTS_NS::constant_color, - - (SkOpts::VoidFn)SK_OPTS_NS::dst, - (SkOpts::VoidFn)SK_OPTS_NS::dstatop, - (SkOpts::VoidFn)SK_OPTS_NS::dstin, - (SkOpts::VoidFn)SK_OPTS_NS::dstout, - (SkOpts::VoidFn)SK_OPTS_NS::dstover, - (SkOpts::VoidFn)SK_OPTS_NS::srcatop, - (SkOpts::VoidFn)SK_OPTS_NS::srcin, - (SkOpts::VoidFn)SK_OPTS_NS::srcout, - (SkOpts::VoidFn)SK_OPTS_NS::srcover, - (SkOpts::VoidFn)SK_OPTS_NS::clear, - (SkOpts::VoidFn)SK_OPTS_NS::modulate, - (SkOpts::VoidFn)SK_OPTS_NS::multiply, - (SkOpts::VoidFn)SK_OPTS_NS::plus_, - (SkOpts::VoidFn)SK_OPTS_NS::screen, - (SkOpts::VoidFn)SK_OPTS_NS::xor_, - (SkOpts::VoidFn)SK_OPTS_NS::colorburn, - (SkOpts::VoidFn)SK_OPTS_NS::colordodge, - (SkOpts::VoidFn)SK_OPTS_NS::darken, - (SkOpts::VoidFn)SK_OPTS_NS::difference, - (SkOpts::VoidFn)SK_OPTS_NS::exclusion, - (SkOpts::VoidFn)SK_OPTS_NS::hardlight, - (SkOpts::VoidFn)SK_OPTS_NS::lighten, - (SkOpts::VoidFn)SK_OPTS_NS::overlay, - (SkOpts::VoidFn)SK_OPTS_NS::softlight, + // TODO: might be nice to only create one instance of tail-insensitive stages. + + SkRasterPipeline::Fn stages_4[] = { + stage_4<SK_OPTS_NS::store_565 , false>, + stage_4<SK_OPTS_NS::store_srgb, false>, + stage_4<SK_OPTS_NS::store_f16 , false>, + + stage_4<SK_OPTS_NS::load_s_565 , true>, + stage_4<SK_OPTS_NS::load_s_srgb, true>, + stage_4<SK_OPTS_NS::load_s_f16 , true>, + + stage_4<SK_OPTS_NS::load_d_565 , true>, + stage_4<SK_OPTS_NS::load_d_srgb, true>, + stage_4<SK_OPTS_NS::load_d_f16 , true>, + + stage_4<SK_OPTS_NS::scale_u8, true>, + + stage_4<SK_OPTS_NS::lerp_u8 , true>, + stage_4<SK_OPTS_NS::lerp_565 , true>, + stage_4<SK_OPTS_NS::lerp_constant_float, true>, + + stage_4<SK_OPTS_NS::constant_color, true>, + + SK_OPTS_NS::dst, + SK_OPTS_NS::dstatop, + SK_OPTS_NS::dstin, + SK_OPTS_NS::dstout, + SK_OPTS_NS::dstover, + SK_OPTS_NS::srcatop, + SK_OPTS_NS::srcin, + SK_OPTS_NS::srcout, + SK_OPTS_NS::srcover, + SK_OPTS_NS::clear, + SK_OPTS_NS::modulate, + SK_OPTS_NS::multiply, + SK_OPTS_NS::plus_, + SK_OPTS_NS::screen, + SK_OPTS_NS::xor_, + SK_OPTS_NS::colorburn, + SK_OPTS_NS::colordodge, + SK_OPTS_NS::darken, + SK_OPTS_NS::difference, + SK_OPTS_NS::exclusion, + SK_OPTS_NS::hardlight, + SK_OPTS_NS::lighten, + SK_OPTS_NS::overlay, + SK_OPTS_NS::softlight, }; - static_assert(SK_ARRAY_COUNT(body) == SkRasterPipeline::kNumStockStages, ""); - - SkOpts::VoidFn tail[] = { - (SkOpts::VoidFn)SK_OPTS_NS::just_return, - - (SkOpts::VoidFn)SK_OPTS_NS::store_565_tail, - (SkOpts::VoidFn)SK_OPTS_NS::store_srgb_tail, - (SkOpts::VoidFn)SK_OPTS_NS::store_f16_tail, - - (SkOpts::VoidFn)SK_OPTS_NS::load_s_565_tail, - (SkOpts::VoidFn)SK_OPTS_NS::load_s_srgb_tail, - (SkOpts::VoidFn)SK_OPTS_NS::load_s_f16_tail, - - (SkOpts::VoidFn)SK_OPTS_NS::load_d_565_tail, - (SkOpts::VoidFn)SK_OPTS_NS::load_d_srgb_tail, - (SkOpts::VoidFn)SK_OPTS_NS::load_d_f16_tail, - - (SkOpts::VoidFn)SK_OPTS_NS::scale_u8_tail, - - (SkOpts::VoidFn)SK_OPTS_NS::lerp_u8_tail, - (SkOpts::VoidFn)SK_OPTS_NS::lerp_565_tail, - (SkOpts::VoidFn)SK_OPTS_NS::lerp_constant_float, - - (SkOpts::VoidFn)SK_OPTS_NS::constant_color, - - (SkOpts::VoidFn)SK_OPTS_NS::dst, - (SkOpts::VoidFn)SK_OPTS_NS::dstatop, - (SkOpts::VoidFn)SK_OPTS_NS::dstin, - (SkOpts::VoidFn)SK_OPTS_NS::dstout, - (SkOpts::VoidFn)SK_OPTS_NS::dstover, - (SkOpts::VoidFn)SK_OPTS_NS::srcatop, - (SkOpts::VoidFn)SK_OPTS_NS::srcin, - (SkOpts::VoidFn)SK_OPTS_NS::srcout, - (SkOpts::VoidFn)SK_OPTS_NS::srcover, - (SkOpts::VoidFn)SK_OPTS_NS::clear, - (SkOpts::VoidFn)SK_OPTS_NS::modulate, - (SkOpts::VoidFn)SK_OPTS_NS::multiply, - (SkOpts::VoidFn)SK_OPTS_NS::plus_, - (SkOpts::VoidFn)SK_OPTS_NS::screen, - (SkOpts::VoidFn)SK_OPTS_NS::xor_, - (SkOpts::VoidFn)SK_OPTS_NS::colorburn, - (SkOpts::VoidFn)SK_OPTS_NS::colordodge, - (SkOpts::VoidFn)SK_OPTS_NS::darken, - (SkOpts::VoidFn)SK_OPTS_NS::difference, - (SkOpts::VoidFn)SK_OPTS_NS::exclusion, - (SkOpts::VoidFn)SK_OPTS_NS::hardlight, - (SkOpts::VoidFn)SK_OPTS_NS::lighten, - (SkOpts::VoidFn)SK_OPTS_NS::overlay, - (SkOpts::VoidFn)SK_OPTS_NS::softlight, + static_assert(SK_ARRAY_COUNT(stages_4) == SkRasterPipeline::kNumStockStages, ""); + + SkRasterPipeline::Fn stages_1_3[] = { + stage_1_3<SK_OPTS_NS::store_565 , false>, + stage_1_3<SK_OPTS_NS::store_srgb, false>, + stage_1_3<SK_OPTS_NS::store_f16 , false>, + + stage_1_3<SK_OPTS_NS::load_s_565 , true>, + stage_1_3<SK_OPTS_NS::load_s_srgb, true>, + stage_1_3<SK_OPTS_NS::load_s_f16 , true>, + + stage_1_3<SK_OPTS_NS::load_d_565 , true>, + stage_1_3<SK_OPTS_NS::load_d_srgb, true>, + stage_1_3<SK_OPTS_NS::load_d_f16 , true>, + + stage_1_3<SK_OPTS_NS::scale_u8, true>, + + stage_1_3<SK_OPTS_NS::lerp_u8 , true>, + stage_1_3<SK_OPTS_NS::lerp_565 , true>, + stage_1_3<SK_OPTS_NS::lerp_constant_float, true>, + + stage_1_3<SK_OPTS_NS::constant_color, true>, + + SK_OPTS_NS::dst, + SK_OPTS_NS::dstatop, + SK_OPTS_NS::dstin, + SK_OPTS_NS::dstout, + SK_OPTS_NS::dstover, + SK_OPTS_NS::srcatop, + SK_OPTS_NS::srcin, + SK_OPTS_NS::srcout, + SK_OPTS_NS::srcover, + SK_OPTS_NS::clear, + SK_OPTS_NS::modulate, + SK_OPTS_NS::multiply, + SK_OPTS_NS::plus_, + SK_OPTS_NS::screen, + SK_OPTS_NS::xor_, + SK_OPTS_NS::colorburn, + SK_OPTS_NS::colordodge, + SK_OPTS_NS::darken, + SK_OPTS_NS::difference, + SK_OPTS_NS::exclusion, + SK_OPTS_NS::hardlight, + SK_OPTS_NS::lighten, + SK_OPTS_NS::overlay, + SK_OPTS_NS::softlight, }; - static_assert(SK_ARRAY_COUNT(tail) == SkRasterPipeline::kNumStockStages, ""); + static_assert(SK_ARRAY_COUNT(stages_1_3) == SkRasterPipeline::kNumStockStages, ""); // Each Init_foo() is defined in src/opts/SkOpts_foo.cpp. void Init_ssse3(); |