diff --git a/src/blitter/32bpp_sse_func.hpp b/src/blitter/32bpp_sse_func.hpp index 4dc8d38ca4..cf03564960 100644 --- a/src/blitter/32bpp_sse_func.hpp +++ b/src/blitter/32bpp_sse_func.hpp @@ -412,8 +412,14 @@ bmcr_alpha_blend_single: case BM_NORMAL_WITH_BRIGHTNESS: for (uint x = (uint) effective_width / 2; x > 0; x--) { +#if (SSE_VERSION >= 3) __m128i srcABCD = _mm_loadl_epi64((const __m128i*) src); srcABCD = AdjustBrightnessOfTwoPixels(srcABCD, bm_normal_brightness); +#else + uint64 srcpx = AdjustBrightneSSE(src->data, DEFAULT_BRIGHTNESS + bp->brightness_adjust).data; + srcpx |= ((uint64)(AdjustBrightneSSE((src + 1)->data, DEFAULT_BRIGHTNESS + bp->brightness_adjust).data)) << 32; + __m128i srcABCD = _mm_cvtsi64_si128(srcpx); +#endif __m128i dstABCD = _mm_loadl_epi64((__m128i*) dst); _mm_storel_epi64((__m128i*) dst, AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2)); src += 2; @@ -421,8 +427,7 @@ bmcr_alpha_blend_single: } if ((bt_last == BT_NONE && effective_width & 1) || bt_last == BT_ODD) { - __m128i srcABCD = _mm_cvtsi32_si128(src->data); - srcABCD = AdjustBrightnessOfTwoPixels(srcABCD, bm_normal_brightness); + __m128i srcABCD = _mm_cvtsi32_si128(AdjustBrightneSSE(src->data, DEFAULT_BRIGHTNESS + bp->brightness_adjust).data); __m128i dstABCD = _mm_cvtsi32_si128(dst->data); dst->data = _mm_cvtsi128_si32(AlphaBlendTwoPixels(srcABCD, dstABCD, ALPHA_BLEND_PARAM_1, ALPHA_BLEND_PARAM_2)); }