forked from enlightenment/efl
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> |
||
---|---|---|
.. | ||
op_blend_color_.c | ||
op_blend_color_i386.c | ||
op_blend_color_neon.c | ||
op_blend_color_sse3.c | ||
op_blend_mask_color_.c | ||
op_blend_mask_color_i386.c | ||
op_blend_mask_color_neon.c | ||
op_blend_mask_color_sse3.c | ||
op_blend_master_sse3.c | ||
op_blend_pixel_.c | ||
op_blend_pixel_color_.c | ||
op_blend_pixel_color_i386.c | ||
op_blend_pixel_color_neon.c | ||
op_blend_pixel_color_sse3.c | ||
op_blend_pixel_i386.c | ||
op_blend_pixel_mask_.c | ||
op_blend_pixel_mask_i386.c | ||
op_blend_pixel_mask_neon.c | ||
op_blend_pixel_mask_sse3.c | ||
op_blend_pixel_neon.c | ||
op_blend_pixel_sse3.c |