MCPcopy Create free account
hub / github.com/carbonengine/trinity / SelectYCoCgDiagonal

Function SelectYCoCgDiagonal

trinity/Tr2DxtCompressor.cpp:347–376  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

345}
346
347void SelectYCoCgDiagonal( const uint8_t* colorBlock, uint8_t* minColor, uint8_t* maxColor )
348{
349 uint8_t mid0 = ( (int)minColor[0] + maxColor[0] + 1 ) >> 1;
350 uint8_t mid1 = ( (int)minColor[1] + maxColor[1] + 1 ) >> 1;
351
352 uint8_t side = 0;
353 for( int i = 0; i < 16; i++ )
354 {
355 uint8_t b0 = colorBlock[i * 4 + 0] >= mid0;
356 uint8_t b1 = colorBlock[i * 4 + 1] >= mid1;
357 side += ( b0 ^ b1 );
358 }
359
360 uint8_t mask = -( side > 8 );
361
362#ifdef NVIDIA_7X_HARDWARE_BUG_FIX
363 mask &= -( minColor[0] != maxColor[0] );
364#endif
365
366 uint8_t c0 = minColor[1];
367 uint8_t c1 = maxColor[1];
368
369 c0 ^= c1;
370 mask &= c0;
371 c1 ^= mask;
372 c0 ^= c1;
373
374 minColor[1] = c0;
375 maxColor[1] = c1;
376}
377
378void EmitAlphaIndices( const uint8_t* colorBlock, const uint8_t minAlpha, const uint8_t maxAlpha, uint8_t** outBuff )
379{

Callers 1

CompressYCoCgDXT5Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected