efl/src/lib/evas/common/evas_op_blend
Cedric BAIL 3b46609140 evas: _op_blend_p_dp_neon and _op_blend_pas_dp_neon miscalculation fix
Summary:
When processing random data result of this function differs from C variant in more than 50% cases.
This difference is due to alpha calculation, in C code :

alpha = 256 - (*s >> 24)

in NEON:

"vmvn.u8 q4,q0 \n\t"
// ie ~(*s>>24) === 255 - (*s>>24)

We cant just add "1" as overflow will occur in case (*s>>24) == 0 (we use only 8 bit per channel in vector registers)
So here is the solution:
copy *d right before multiplication and add it to the result of it later.

Same approach as in D455.

Reviewers: raster, cedric, stefan_schmidt

Reviewed By: cedric

Subscribers: cedric

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D2308

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-04-10 12:05:05 +02:00
..
op_blend_color_.c
op_blend_color_i386.c
op_blend_color_neon.c _op_blend_c_dp_neon miscalculation fix 2014-01-21 08:50:34 +09:00
op_blend_color_sse3.c evas/op_blend: rename LOOP_ALIGNED_U1_A48_SSE3 to LOOP_ALIGNED_U1_A48 2014-02-09 09:42:52 +09:00
op_blend_mask_color_.c
op_blend_mask_color_i386.c
op_blend_mask_color_neon.c Blending function rework and speedup 2013-12-29 13:29:28 +09:00
op_blend_mask_color_sse3.c evas/op_blend: rename LOOP_ALIGNED_U1_A48_SSE3 to LOOP_ALIGNED_U1_A48 2014-02-09 09:42:52 +09:00
op_blend_master_sse3.c Evas masking: Fix mask blend functions (SW engine) 2015-01-07 15:06:03 +09:00
op_blend_pixel_.c
op_blend_pixel_color_.c
op_blend_pixel_color_i386.c
op_blend_pixel_color_neon.c evas/common Fixed incorrect blend pixel color logic in neon. 2015-04-03 19:48:30 +09:00
op_blend_pixel_color_sse3.c evas/op_blend: rename LOOP_ALIGNED_U1_A48_SSE3 to LOOP_ALIGNED_U1_A48 2014-02-09 09:42:52 +09:00
op_blend_pixel_i386.c evas render i386 - comment out structurally dead code 2014-08-14 20:17:16 +09:00
op_blend_pixel_mask_.c Evas masking: Fix mask blend functions (SW engine) 2015-01-07 15:06:03 +09:00
op_blend_pixel_mask_i386.c Evas masking: Fix mask blend functions (SW engine) 2015-01-07 15:06:03 +09:00
op_blend_pixel_mask_neon.c Evas masking: Fix mask blend functions (SW engine) 2015-01-07 15:06:03 +09:00
op_blend_pixel_mask_sse3.c Evas masking: Fix mask blend functions (SW engine) 2015-01-07 15:06:03 +09:00
op_blend_pixel_neon.c evas: _op_blend_p_dp_neon and _op_blend_pas_dp_neon miscalculation fix 2015-04-10 12:05:05 +02:00
op_blend_pixel_sse3.c evas/op_blend: rename LOOP_ALIGNED_U1_A48_SSE3 to LOOP_ALIGNED_U1_A48 2014-02-09 09:42:52 +09:00