---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel