diff options
author | Ell <ell_se@yahoo.com> | 2018-09-21 20:15:14 -0400 |
---|---|---|
committer | Ell <ell_se@yahoo.com> | 2018-09-21 20:15:14 -0400 |
commit | a02a1f227e7dd68da84544236a0fb3d68560619c (patch) | |
tree | dced1714332c044305ed5470bb0704401339e15d /extensions | |
parent | 6c79b3dc12a1a4f853ad3dd32428df7e798b89fd (diff) |
sse2-float: don't modify input data during rgba -> rgbA conversion
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/sse2-float.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/extensions/sse2-float.c b/extensions/sse2-float.c index 02a8c2d..d2bc50b 100644 --- a/extensions/sse2-float.c +++ b/extensions/sse2-float.c @@ -57,16 +57,16 @@ conv_rgbaF_linear_rgbAF_linear (const Babl *conversion,const float *src, float * if (alpha0 < BABL_ALPHA_FLOOR) { if (alpha0 >= 0.0f) - ((float *)s)[3] = BABL_ALPHA_FLOOR; + alpha0 = BABL_ALPHA_FLOOR; else - ((float *)s)[3] = -BABL_ALPHA_FLOOR; + alpha0 = -BABL_ALPHA_FLOOR; } if (alpha1 < BABL_ALPHA_FLOOR) { if (alpha1 >= 0.0f) - ((float *)s)[7] = BABL_ALPHA_FLOOR; + alpha1 = BABL_ALPHA_FLOOR; else - ((float *)s)[7] = -BABL_ALPHA_FLOOR; + alpha1 = -BABL_ALPHA_FLOOR; } { __v4sf rbaa0, rbaa1; @@ -76,8 +76,8 @@ conv_rgbaF_linear_rgbAF_linear (const Babl *conversion,const float *src, float * /* Expand alpha */ - __v4sf aaaa0 = (__v4sf)_mm_shuffle_epi32((__m128i)rgba0, _MM_SHUFFLE(3, 3, 3, 3)); - __v4sf aaaa1 = (__v4sf)_mm_shuffle_epi32((__m128i)rgba1, _MM_SHUFFLE(3, 3, 3, 3)); + __v4sf aaaa0 = (__v4sf)_mm_set1_ps(alpha0); + __v4sf aaaa1 = (__v4sf)_mm_set1_ps(alpha1); /* Premultiply */ rgba0 = rgba0 * aaaa0; |