From d593e5dfa9d3d2538beb18c4ea90d7a809b20aff Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Fri, 28 Jun 2019 21:57:38 +0200 Subject: [PATCH] DXT1 SIMD color index table generator. --- extra/dxt1table.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 extra/dxt1table.c diff --git a/extra/dxt1table.c b/extra/dxt1table.c new file mode 100644 index 00000000..6cf2a647 --- /dev/null +++ b/extra/dxt1table.c @@ -0,0 +1,36 @@ +#include +#include + +static const uint8_t IndexTable[4] = { 1, 3, 2, 0 }; + +int convert( int v ) +{ + int v0 = v & 0x3; + int v1 = ( v >> 2 ) & 0x3; + int v2 = ( v >> 4 ) & 0x3; + int v3 = ( v >> 6 ); + + int t0 = IndexTable[v0]; + int t1 = IndexTable[v1]; + int t2 = IndexTable[v2]; + int t3 = IndexTable[v3]; + + return t0 | ( t1 << 2 ) | ( t2 << 4 ) | ( t3 << 6 ); +} + +int main() +{ + for( int i=0; i<256; i++ ) + { + if( i % 16 == 15 ) + { + printf( "%i,\n", convert( i ) ); + } + else + { + printf( "%i,\t", convert( i ) ); + } + } + printf( "\n" ); + return 0; +}