aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/opts/SkOpts_sse41.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/opts/SkOpts_sse41.cpp')
-rw-r--r--src/opts/SkOpts_sse41.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/opts/SkOpts_sse41.cpp b/src/opts/SkOpts_sse41.cpp
index 17ce0668ff..e4e3246780 100644
--- a/src/opts/SkOpts_sse41.cpp
+++ b/src/opts/SkOpts_sse41.cpp
@@ -11,6 +11,7 @@
#include "SkBlurImageFilter_opts.h"
#include "SkBlitRow_opts.h"
#include "SkBlend_opts.h"
+#include "SkRasterPipeline_opts.h"
namespace SkOpts {
void Init_sse41() {
@@ -19,5 +20,35 @@ namespace SkOpts {
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, kCallNext) \
+ stage = body<SK_OPTS_NS::stage, kCallNext>
+
+ STAGE(srcover, true);
+ STAGE(constant_color, true);
+ STAGE(lerp_constant_float, true);
+ #undef STAGE
+
+ #define STAGE(stage, kCallNext) \
+ stage##_body = body<SK_OPTS_NS::stage, kCallNext>; \
+ stage##_tail = tail<SK_OPTS_NS::stage, kCallNext>
+
+ STAGE(load_d_srgb, true);
+ STAGE(load_s_srgb, true);
+ STAGE( store_srgb, false);
+
+ STAGE(load_d_f16, true);
+ STAGE(load_s_f16, true);
+ STAGE( store_f16, false);
+
+ STAGE(load_d_565, true);
+ STAGE(load_s_565, true);
+ STAGE( store_565, false);
+
+ STAGE(scale_u8, true);
+
+ STAGE(lerp_u8, true);
+ STAGE(lerp_565, true);
+ #undef STAGE
}
}