| /* |
| * Copyright 2015 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "SkOpts.h" |
| |
| #define SK_OPTS_NS sse41 |
| #include "SkBlurImageFilter_opts.h" |
| #include "SkBlitRow_opts.h" |
| #include "SkBlend_opts.h" |
| #include "SkRasterPipeline_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; |
| |
| #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 |
| |
| // The commented-out stages don't actually benefit from SSE 4.1. |
| // To cut down on code bloat we skip them here, using the identical SSE2 defaults. |
| |
| //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 |
| |
| } |
| } |