Fix inconsistent alpha masking in qConvertARGB32PMToARGB64PM_sse2

The prolog and epilog did not force RGB32 to be converted to RGB64 with
alpha fully defined like the middle optimized part.

Change-Id: If7c4829f2239f9a3c524f78b9ce269e2b0b5b150
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
bb10
Allan Sandfeld Jensen 2016-12-07 13:08:44 +01:00 committed by Simon Hausmann
parent e2978d6097
commit d829dd3f44
1 changed files with 4 additions and 0 deletions

View File

@ -580,6 +580,8 @@ static inline void qConvertARGB32PMToARGB64PM_sse2(QRgba64 *buffer, const uint *
int i = 0;
for (; ((uintptr_t)buffer & 0xf) && i < count; ++i) {
uint s = *src++;
if (maskAlpha)
s = s | 0xff000000;
if (RGBA)
s = RGBA2ARGB(s);
*buffer++ = QRgba64::fromArgb32(s);
@ -605,6 +607,8 @@ static inline void qConvertARGB32PMToARGB64PM_sse2(QRgba64 *buffer, const uint *
SIMD_EPILOGUE(i, count, 3) {
uint s = *src++;
if (maskAlpha)
s = s | 0xff000000;
if (RGBA)
s = RGBA2ARGB(s);
*buffer++ = QRgba64::fromArgb32(s);