From 4de2059d41e3e99efa4ab8399994dbd8f46fd67b Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Sat, 22 Mar 2014 17:24:20 +0900 Subject: [PATCH] evas/common - initialize only the available blend stuff that cpu is supporting. --- src/lib/evas/common/evas_op_add_main_.c | 23 ++++++------ src/lib/evas/common/evas_op_copy_main_.c | 46 +++++++++++++----------- src/lib/evas/common/evas_op_mask_main_.c | 23 ++++++------ src/lib/evas/common/evas_op_mul_main_.c | 23 ++++++------ src/lib/evas/common/evas_op_sub_main_.c | 23 ++++++------ 5 files changed, 78 insertions(+), 60 deletions(-) diff --git a/src/lib/evas/common/evas_op_add_main_.c b/src/lib/evas/common/evas_op_add_main_.c index 294f1d977b..1a96380af8 100644 --- a/src/lib/evas/common/evas_op_add_main_.c +++ b/src/lib/evas/common/evas_op_add_main_.c @@ -88,17 +88,20 @@ op_add_init(void) memset(op_add_span_funcs, 0, sizeof(op_add_span_funcs)); memset(op_add_pt_funcs, 0, sizeof(op_add_pt_funcs)); #ifdef BUILD_MMX - init_add_pixel_span_funcs_mmx(); - init_add_pixel_color_span_funcs_mmx(); - init_add_pixel_mask_span_funcs_mmx(); - init_add_color_span_funcs_mmx(); - init_add_mask_color_span_funcs_mmx(); + if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) + { + init_add_pixel_span_funcs_mmx(); + init_add_pixel_color_span_funcs_mmx(); + init_add_pixel_mask_span_funcs_mmx(); + init_add_color_span_funcs_mmx(); + init_add_mask_color_span_funcs_mmx(); - init_add_pixel_pt_funcs_mmx(); - init_add_pixel_color_pt_funcs_mmx(); - init_add_pixel_mask_pt_funcs_mmx(); - init_add_color_pt_funcs_mmx(); - init_add_mask_color_pt_funcs_mmx(); + init_add_pixel_pt_funcs_mmx(); + init_add_pixel_color_pt_funcs_mmx(); + init_add_pixel_mask_pt_funcs_mmx(); + init_add_color_pt_funcs_mmx(); + init_add_mask_color_pt_funcs_mmx(); + } #endif init_add_pixel_span_funcs_c(); init_add_pixel_color_span_funcs_c(); diff --git a/src/lib/evas/common/evas_op_copy_main_.c b/src/lib/evas/common/evas_op_copy_main_.c index 6e3881de21..9c48559e7c 100644 --- a/src/lib/evas/common/evas_op_copy_main_.c +++ b/src/lib/evas/common/evas_op_copy_main_.c @@ -101,30 +101,36 @@ op_copy_init(void) memset(op_copy_span_funcs, 0, sizeof(op_copy_span_funcs)); memset(op_copy_pt_funcs, 0, sizeof(op_copy_pt_funcs)); #ifdef BUILD_MMX - init_copy_pixel_span_funcs_mmx(); - init_copy_pixel_color_span_funcs_mmx(); - init_copy_pixel_mask_span_funcs_mmx(); - init_copy_color_span_funcs_mmx(); - init_copy_mask_color_span_funcs_mmx(); + if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) + { + init_copy_pixel_span_funcs_mmx(); + init_copy_pixel_color_span_funcs_mmx(); + init_copy_pixel_mask_span_funcs_mmx(); + init_copy_color_span_funcs_mmx(); + init_copy_mask_color_span_funcs_mmx(); - init_copy_pixel_pt_funcs_mmx(); - init_copy_pixel_color_pt_funcs_mmx(); - init_copy_pixel_mask_pt_funcs_mmx(); - init_copy_color_pt_funcs_mmx(); - init_copy_mask_color_pt_funcs_mmx(); + init_copy_pixel_pt_funcs_mmx(); + init_copy_pixel_color_pt_funcs_mmx(); + init_copy_pixel_mask_pt_funcs_mmx(); + init_copy_color_pt_funcs_mmx(); + init_copy_mask_color_pt_funcs_mmx(); + } #endif #ifdef BUILD_NEON - init_copy_pixel_span_funcs_neon(); - init_copy_pixel_color_span_funcs_neon(); - init_copy_pixel_mask_span_funcs_neon(); - init_copy_color_span_funcs_neon(); - init_copy_mask_color_span_funcs_neon(); + if (evas_common_cpu_has_feature(CPU_FEATURE_NEON)) + { + init_copy_pixel_span_funcs_neon(); + init_copy_pixel_color_span_funcs_neon(); + init_copy_pixel_mask_span_funcs_neon(); + init_copy_color_span_funcs_neon(); + init_copy_mask_color_span_funcs_neon(); - init_copy_pixel_pt_funcs_neon(); - init_copy_pixel_color_pt_funcs_neon(); - init_copy_pixel_mask_pt_funcs_neon(); - init_copy_color_pt_funcs_neon(); - init_copy_mask_color_pt_funcs_neon(); + init_copy_pixel_pt_funcs_neon(); + init_copy_pixel_color_pt_funcs_neon(); + init_copy_pixel_mask_pt_funcs_neon(); + init_copy_color_pt_funcs_neon(); + init_copy_mask_color_pt_funcs_neon(); + } #endif init_copy_pixel_span_funcs_c(); init_copy_pixel_color_span_funcs_c(); diff --git a/src/lib/evas/common/evas_op_mask_main_.c b/src/lib/evas/common/evas_op_mask_main_.c index 55a5d95c70..8810dc960a 100644 --- a/src/lib/evas/common/evas_op_mask_main_.c +++ b/src/lib/evas/common/evas_op_mask_main_.c @@ -56,17 +56,20 @@ op_mask_init(void) memset(op_mask_span_funcs, 0, sizeof(op_mask_span_funcs)); memset(op_mask_pt_funcs, 0, sizeof(op_mask_pt_funcs)); #ifdef BUILD_MMX - init_mask_pixel_span_funcs_mmx(); - init_mask_pixel_color_span_funcs_mmx(); - init_mask_pixel_mask_span_funcs_mmx(); - init_mask_color_span_funcs_mmx(); - init_mask_mask_color_span_funcs_mmx(); + if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) + { + init_mask_pixel_span_funcs_mmx(); + init_mask_pixel_color_span_funcs_mmx(); + init_mask_pixel_mask_span_funcs_mmx(); + init_mask_color_span_funcs_mmx(); + init_mask_mask_color_span_funcs_mmx(); - init_mask_pixel_pt_funcs_mmx(); - init_mask_pixel_color_pt_funcs_mmx(); - init_mask_pixel_mask_pt_funcs_mmx(); - init_mask_color_pt_funcs_mmx(); - init_mask_mask_color_pt_funcs_mmx(); + init_mask_pixel_pt_funcs_mmx(); + init_mask_pixel_color_pt_funcs_mmx(); + init_mask_pixel_mask_pt_funcs_mmx(); + init_mask_color_pt_funcs_mmx(); + init_mask_mask_color_pt_funcs_mmx(); + } #endif init_mask_pixel_span_funcs_c(); init_mask_pixel_color_span_funcs_c(); diff --git a/src/lib/evas/common/evas_op_mul_main_.c b/src/lib/evas/common/evas_op_mul_main_.c index 222062e68d..7c15807085 100644 --- a/src/lib/evas/common/evas_op_mul_main_.c +++ b/src/lib/evas/common/evas_op_mul_main_.c @@ -55,17 +55,20 @@ op_mul_init(void) memset(op_mul_span_funcs, 0, sizeof(op_mul_span_funcs)); memset(op_mul_pt_funcs, 0, sizeof(op_mul_pt_funcs)); #ifdef BUILD_MMX - init_mul_pixel_span_funcs_mmx(); - init_mul_pixel_color_span_funcs_mmx(); - init_mul_pixel_mask_span_funcs_mmx(); - init_mul_color_span_funcs_mmx(); - init_mul_mask_color_span_funcs_mmx(); + if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) + { + init_mul_pixel_span_funcs_mmx(); + init_mul_pixel_color_span_funcs_mmx(); + init_mul_pixel_mask_span_funcs_mmx(); + init_mul_color_span_funcs_mmx(); + init_mul_mask_color_span_funcs_mmx(); - init_mul_pixel_pt_funcs_mmx(); - init_mul_pixel_color_pt_funcs_mmx(); - init_mul_pixel_mask_pt_funcs_mmx(); - init_mul_color_pt_funcs_mmx(); - init_mul_mask_color_pt_funcs_mmx(); + init_mul_pixel_pt_funcs_mmx(); + init_mul_pixel_color_pt_funcs_mmx(); + init_mul_pixel_mask_pt_funcs_mmx(); + init_mul_color_pt_funcs_mmx(); + init_mul_mask_color_pt_funcs_mmx(); + } #endif init_mul_pixel_span_funcs_c(); init_mul_pixel_color_span_funcs_c(); diff --git a/src/lib/evas/common/evas_op_sub_main_.c b/src/lib/evas/common/evas_op_sub_main_.c index 02bfdbde28..5045a12c96 100644 --- a/src/lib/evas/common/evas_op_sub_main_.c +++ b/src/lib/evas/common/evas_op_sub_main_.c @@ -89,17 +89,20 @@ op_sub_init(void) memset(op_sub_span_funcs, 0, sizeof(op_sub_span_funcs)); memset(op_sub_pt_funcs, 0, sizeof(op_sub_pt_funcs)); #ifdef BUILD_MMX - init_sub_pixel_span_funcs_mmx(); - init_sub_pixel_color_span_funcs_mmx(); - init_sub_pixel_mask_span_funcs_mmx(); - init_sub_color_span_funcs_mmx(); - init_sub_mask_color_span_funcs_mmx(); + if (evas_common_cpu_has_feature(CPU_FEATURE_MMX)) + { + init_sub_pixel_span_funcs_mmx(); + init_sub_pixel_color_span_funcs_mmx(); + init_sub_pixel_mask_span_funcs_mmx(); + init_sub_color_span_funcs_mmx(); + init_sub_mask_color_span_funcs_mmx(); - init_sub_pixel_pt_funcs_mmx(); - init_sub_pixel_color_pt_funcs_mmx(); - init_sub_pixel_mask_pt_funcs_mmx(); - init_sub_color_pt_funcs_mmx(); - init_sub_mask_color_pt_funcs_mmx(); + init_sub_pixel_pt_funcs_mmx(); + init_sub_pixel_color_pt_funcs_mmx(); + init_sub_pixel_mask_pt_funcs_mmx(); + init_sub_color_pt_funcs_mmx(); + init_sub_mask_color_pt_funcs_mmx(); + } #endif init_sub_pixel_span_funcs_c(); init_sub_pixel_color_span_funcs_c();