--- evas/src/lib/engines/common/evas_op_blend_main_.c | 73 ++++++++++++++++++++- 1 files changed, 72 insertions(+), 1 deletions(-)
diff --git a/evas/src/lib/engines/common/evas_op_blend_main_.c b/evas/src/lib/engines/common/evas_op_blend_main_.c index 7160751..a56cb3d 100644 --- a/evas/src/lib/engines/common/evas_op_blend_main_.c +++ b/evas/src/lib/engines/common/evas_op_blend_main_.c @@ -84,6 +84,12 @@ evas_common_gfx_compositor_blend_rel_get(void) # include "./evas_op_blend/op_blend_mask_color_i386.c" //# include "./evas_op_blend/op_blend_pixel_mask_color_i386.c" +# include "./evas_op_blend/op_blend_pixel_sse3.c" +# include "./evas_op_blend/op_blend_color_sse3.c" +# include "./evas_op_blend/op_blend_pixel_color_sse3.c" +# include "./evas_op_blend/op_blend_pixel_mask_sse3.c" +# include "./evas_op_blend/op_blend_mask_color_sse3.c" + # include "./evas_op_blend/op_blend_pixel_neon.c" # include "./evas_op_blend/op_blend_color_neon.c" # include "./evas_op_blend/op_blend_pixel_color_neon.c" @@ -96,6 +102,26 @@ op_blend_init(void) { memset(op_blend_span_funcs, 0, sizeof(op_blend_span_funcs)); memset(op_blend_pt_funcs, 0, sizeof(op_blend_pt_funcs)); +#ifdef BUILD_SSE3 + GA_MASK_SSE3 = _mm_set_epi32(0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF); + RB_MASK_SSE3 = _mm_set_epi32(0xFF00FF00, 0xFF00FF00, 0xFF00FF00, 0xFF00FF00); + SYM4_MASK_SSE3 = _mm_set_epi32(0x00FF00FF, 0x000000FF, 0x00FF00FF, 0x000000FF); + RGB_MASK_SSE3 = _mm_set_epi32(0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF); + A_MASK_SSE3 = _mm_set_epi32(0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000); + ALPHA_SSE3 = _mm_set_epi32(256, 256, 256, 256); + + init_blend_pixel_span_funcs_sse3(); + init_blend_pixel_color_span_funcs_sse3(); + init_blend_pixel_mask_span_funcs_sse3(); + init_blend_color_span_funcs_sse3(); + init_blend_mask_color_span_funcs_sse3(); + + init_blend_pixel_pt_funcs_sse3(); + init_blend_pixel_color_pt_funcs_sse3(); + init_blend_pixel_mask_pt_funcs_sse3(); + init_blend_color_pt_funcs_sse3(); + init_blend_mask_color_pt_funcs_sse3(); +#endif #ifdef BUILD_MMX init_blend_pixel_span_funcs_mmx(); init_blend_pixel_color_span_funcs_mmx(); @@ -121,7 +147,7 @@ op_blend_init(void) init_blend_pixel_mask_pt_funcs_neon(); init_blend_color_pt_funcs_neon(); init_blend_mask_color_pt_funcs_neon(); -#endif +#endif #ifdef BUILD_C init_blend_pixel_span_funcs_c(); init_blend_pixel_color_span_funcs_c(); @@ -147,6 +173,14 @@ blend_gfx_span_func_cpu(int s, int m, int c, int d) { RGBA_Gfx_Func func = NULL; int cpu = CPU_N; +#ifdef BUILD_SSE3 + if (evas_common_cpu_has_feature(CPU_FEATURE_SSE3)) + { + cpu = CPU_SSE3; + func = op_blend_span_funcs[s][m][c][d][cpu]; + if(func) return func; + } +#endif #ifdef BUILD_MMX if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) { @@ -263,6 +297,14 @@ blend_gfx_pt_func_cpu(int s, int m, int c, int d) { RGBA_Gfx_Pt_Func func = NULL; int cpu = CPU_N; +#ifdef BUILD_SSE3 + if(evas_common_cpu_has_feature(CPU_FEATURE_SSE3)) + { + cpu = CPU_SSE3; + func = op_blend_pt_funcs[s][m][c][d][cpu]; + if(func) return func; + } +#endif #ifdef BUILD_MMX if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) { @@ -367,6 +409,19 @@ op_blend_rel_init(void) { memset(op_blend_rel_span_funcs, 0, sizeof(op_blend_rel_span_funcs)); memset(op_blend_rel_pt_funcs, 0, sizeof(op_blend_rel_pt_funcs)); +#ifdef BUILD_SSE3 + init_blend_rel_pixel_span_funcs_c(); + init_blend_rel_pixel_color_span_funcs_c(); + init_blend_rel_pixel_mask_span_funcs_c(); + init_blend_rel_color_span_funcs_c(); + init_blend_rel_mask_color_span_funcs_c(); + + init_blend_rel_pixel_pt_funcs_c(); + init_blend_rel_pixel_color_pt_funcs_c(); + init_blend_rel_pixel_mask_pt_funcs_c(); + init_blend_rel_color_pt_funcs_c(); + init_blend_rel_mask_color_pt_funcs_c(); +#endif #ifdef BUILD_MMX init_blend_rel_pixel_span_funcs_mmx(); init_blend_rel_pixel_color_span_funcs_mmx(); @@ -418,6 +473,14 @@ blend_rel_gfx_span_func_cpu(int s, int m, int c, int d) { RGBA_Gfx_Func func = NULL; int cpu = CPU_N; +#ifdef BUILD_SSE3 + if (evas_common_cpu_has_feature(CPU_FEATURE_SSE3)) + { + cpu = CPU_SSE3; + func = op_blend_rel_span_funcs[s][m][c][d][cpu]; + if(func) return func; + } +#endif #ifdef BUILD_MMX if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) { @@ -529,6 +592,14 @@ blend_rel_gfx_pt_func_cpu(int s, int m, int c, int d) { RGBA_Gfx_Pt_Func func = NULL; int cpu = CPU_N; +#ifdef BUILD_SSE3 + if (evas_common_cpu_has_feature(CPU_FEATURE_SSE3)) + { + cpu = CPU_SSE3; + func = op_blend_rel_pt_funcs[s][m][c][d][cpu]; + if(func) return func; + } +#endif #ifdef BUILD_MMX if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) { -- 1.7.3.4 ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel