Try again with SkOpts_hsw and 8x pipelines.
All SkNx are now in anonymous namespaces and all their methods are force-inlined. We should not have any ODR problems. This is still a near 2x speedup, more so for f16. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3667 Change-Id: I6db9a46f7164f49827ab4d7983e80bf8cea99995 Reviewed-on: https://skia-review.googlesource.com/3667 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
This commit is contained in:
parent
aef247af0a
commit
4f02ce7995
@ -8,8 +8,69 @@
|
||||
#include "SkOpts.h"
|
||||
|
||||
#define SK_OPTS_NS hsw
|
||||
#include "SkRasterPipeline_opts.h"
|
||||
|
||||
namespace SkOpts {
|
||||
void Init_hsw() { }
|
||||
void Init_hsw() {
|
||||
|
||||
run_pipeline = SK_OPTS_NS::run_pipeline;
|
||||
|
||||
#define STAGE(stage) \
|
||||
body[SkRasterPipeline::stage] = (SkOpts::VoidFn)SK_OPTS_NS::stage; \
|
||||
tail[SkRasterPipeline::stage] = (SkOpts::VoidFn)SK_OPTS_NS::stage##_tail
|
||||
|
||||
STAGE(store_565);
|
||||
STAGE(store_srgb);
|
||||
STAGE(store_f16);
|
||||
|
||||
STAGE(load_s_565);
|
||||
STAGE(load_s_srgb);
|
||||
STAGE(load_s_f16);
|
||||
|
||||
STAGE(load_d_565);
|
||||
STAGE(load_d_srgb);
|
||||
STAGE(load_d_f16);
|
||||
|
||||
STAGE(scale_u8);
|
||||
|
||||
STAGE(lerp_u8);
|
||||
STAGE(lerp_565);
|
||||
#undef STAGE
|
||||
|
||||
#define STAGE(stage) \
|
||||
body[SkRasterPipeline::stage] = (SkOpts::VoidFn)SK_OPTS_NS::stage; \
|
||||
tail[SkRasterPipeline::stage] = (SkOpts::VoidFn)SK_OPTS_NS::stage
|
||||
|
||||
STAGE(just_return);
|
||||
STAGE(lerp_constant_float);
|
||||
STAGE(constant_color);
|
||||
|
||||
STAGE(dst);
|
||||
STAGE(dstatop);
|
||||
STAGE(dstin);
|
||||
STAGE(dstout);
|
||||
STAGE(dstover);
|
||||
STAGE(srcatop);
|
||||
STAGE(srcin);
|
||||
STAGE(srcout);
|
||||
STAGE(srcover);
|
||||
STAGE(clear);
|
||||
STAGE(modulate);
|
||||
STAGE(multiply);
|
||||
STAGE(plus_);
|
||||
STAGE(screen);
|
||||
STAGE(xor_);
|
||||
STAGE(colorburn);
|
||||
STAGE(colordodge);
|
||||
STAGE(darken);
|
||||
STAGE(difference);
|
||||
STAGE(exclusion);
|
||||
STAGE(hardlight);
|
||||
STAGE(lighten);
|
||||
STAGE(overlay);
|
||||
STAGE(softlight);
|
||||
#undef STAGE
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user