From 0b829026185ba749c34953a05b042e83bd5c5a0c Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sat, 15 Feb 2020 13:43:40 +0100 Subject: [PATCH] Optimize scalar DXT1 compression. --- client/TracyDxt1.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/TracyDxt1.cpp b/client/TracyDxt1.cpp index e78ba972..df992ce9 100644 --- a/client/TracyDxt1.cpp +++ b/client/TracyDxt1.cpp @@ -453,19 +453,20 @@ static tracy_force_inline uint64_t ProcessRGB( const uint8_t* src ) return uint64_t( ( uint64_t( to565( vmin ) ) << 16 ) | to565( vmax ) | ( uint64_t( vp ) << 32 ) ); # endif #else - const auto ref = to565( src[0], src[1], src[2] ); + uint32_t ref; + memcpy( &ref, src, 4 ); + uint32_t refMask = ref & 0xF8FCF8; auto stmp = src + 4; for( int i=1; i<16; i++ ) { - if( to565( stmp[0], stmp[1], stmp[2] ) != ref ) - { - break; - } + uint32_t px; + memcpy( &px, stmp, 4 ); + if( ( px & 0xF8FCF8 ) != refMask ) break; stmp += 4; } if( stmp == src + 64 ) { - return uint64_t( ref ) << 16; + return uint64_t( to565( ref ) ) << 16; } uint8_t min[3] = { src[0], src[1], src[2] };