From 346e5a426f550d770d5b040447d8fbc65ea81a02 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 20 Jul 2020 13:58:35 +0200 Subject: [PATCH] Mask out alpha channel on SSE and AVX2 paths. --- client/TracyDxt1.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/client/TracyDxt1.cpp b/client/TracyDxt1.cpp index 69503de5..f1fb1e45 100644 --- a/client/TracyDxt1.cpp +++ b/client/TracyDxt1.cpp @@ -172,6 +172,12 @@ static tracy_force_inline uint64_t ProcessRGB( const uint8_t* src ) return uint64_t( to565( src[0], src[1], src[2] ) ) << 16; } + __m128i amask = _mm_set1_epi32( 0xFFFFFF ); + px0 = _mm_and_si128( px0, amask ); + px1 = _mm_and_si128( px1, amask ); + px2 = _mm_and_si128( px2, amask ); + px3 = _mm_and_si128( px3, amask ); + __m128i min0 = _mm_min_epu8( px0, px1 ); __m128i min1 = _mm_min_epu8( px2, px3 ); __m128i min2 = _mm_min_epu8( min0, min1 ); @@ -492,6 +498,12 @@ static tracy_force_inline void ProcessRGB_AVX( const uint8_t* src, char*& dst ) return; } + __m256i amask = _mm256_set1_epi32( 0xFFFFFF ); + px0 = _mm256_and_si256( px0, amask ); + px1 = _mm256_and_si256( px1, amask ); + px2 = _mm256_and_si256( px2, amask ); + px3 = _mm256_and_si256( px3, amask ); + __m256i min0 = _mm256_min_epu8( px0, px1 ); __m256i min1 = _mm256_min_epu8( px2, px3 ); __m256i min2 = _mm256_min_epu8( min0, min1 );