Lines Matching refs:src

364 inline deUint8 extend4To8 (deUint8 src)
366 DE_ASSERT((src & ~((1<<4)-1)) == 0);
367 return (deUint8)((src << 4) | src);
370 inline deUint8 extend5To8 (deUint8 src)
372 DE_ASSERT((src & ~((1<<5)-1)) == 0);
373 return (deUint8)((src << 3) | (src >> 2));
376 inline deUint8 extend6To8 (deUint8 src)
378 DE_ASSERT((src & ~((1<<6)-1)) == 0);
379 return (deUint8)((src << 2) | (src >> 4));
403 inline deUint64 get64BitBlock (const deUint8* src, int blockNdx)
409 block = (block << 8ull) | (deUint64)(src[blockNdx*8+i]);
415 inline deUint64 get128BitBlockStart (const deUint8* src, int blockNdx)
417 return get64BitBlock(src, 2*blockNdx);
421 inline deUint64 get128BitBlockEnd (const deUint8* src, int blockNdx)
423 return get64BitBlock(src, 2*blockNdx + 1);
426 inline deUint32 getBit (deUint64 src, int bit)
428 return (src >> bit) & 1;
431 inline deUint32 getBits (deUint64 src, int low, int high)
436 return (deUint32)((src >> low) & ((1u<<numBits)-1));
438 return (deUint32)((src >> low) & 0xFFFFFFFFu);
441 inline deUint8 extend7To8 (deUint8 src)
443 DE_ASSERT((src & ~((1<<7)-1)) == 0);
444 return (deUint8)((src << 1) | (src >> 6));
447 inline deInt8 extendSigned3To8 (deUint8 src)
449 const bool isNeg = (src & (1<<2)) != 0;
450 return (deInt8)((isNeg ? ~((1<<3)-1) : 0) | src);
459 inline deUint16 extend11To16 (deUint16 src)
461 DE_ASSERT((src & ~((1<<11)-1)) == 0);
462 return (deUint16)((src << 5) | (src >> 6));
465 inline deInt16 extend11To16WithSign (deInt16 src)
467 if (src < 0)
468 return (deInt16)(-(deInt16)extend11To16((deUint16)(-src)));
470 return (deInt16)extend11To16(src);
473 void decompressETC1Block (deUint8 dst[ETC2_UNCOMPRESSED_BLOCK_SIZE_RGB8], deUint64 src)
475 const int diffBit = (int)getBit(src, 33);
476 const int flipBit = (int)getBit(src, 32);
477 const deUint32 table[2] = { getBits(src, 37, 39), getBits(src, 34, 36) };
485 baseR[0] = extend4To8((deUint8)getBits(src, 60, 63));
486 baseR[1] = extend4To8((deUint8)getBits(src, 56, 59));
487 baseG[0] = extend4To8((deUint8)getBits(src, 52, 55));
488 baseG[1] = extend4To8((deUint8)getBits(src, 48, 51));
489 baseB[0] = extend4To8((deUint8)getBits(src, 44, 47));
490 baseB[1] = extend4To8((deUint8)getBits(src, 40, 43));
495 deUint8 bR = (deUint8)getBits(src, 59, 63); // 5b
496 deUint8 dR = (deUint8)getBits(src, 56, 58); // 3b
497 deUint8 bG = (deUint8)getBits(src, 51, 55);
498 deUint8 dG = (deUint8)getBits(src, 48, 50);
499 deUint8 bB = (deUint8)getBits(src, 43, 47);
500 deUint8 dB = (deUint8)getBits(src, 40, 42);
532 const deUint32 modifierNdx = (getBit(src, 16+pixelNdx) << 1) | getBit(src, pixelNdx);
542 void decompressETC2Block (deUint8 dst[ETC2_UNCOMPRESSED_BLOCK_SIZE_RGB8], deUint64 src, deUint8 alphaDst[ETC2_UNCOMPRESSED_BLOCK_SIZE_A8], bool alphaMode)
555 const int diffOpaqueBit = (int)getBit(src, 33);
556 const deInt8 selBR = (deInt8)getBits(src, 59, 63); // 5 bits.
557 const deInt8 selBG = (deInt8)getBits(src, 51, 55);
558 const deInt8 selBB = (deInt8)getBits(src, 43, 47);
559 const deInt8 selDR = extendSigned3To8((deUint8)getBits(src, 56, 58)); // 3 bits.
560 const deInt8 selDG = extendSigned3To8((deUint8)getBits(src, 48, 50));
561 const deInt8 selDB = extendSigned3To8((deUint8)getBits(src, 40, 42));
591 const int flipBit = (int)getBit(src, 32);
592 const deUint32 table[2] = { getBits(src, 37, 39), getBits(src, 34, 36) };
600 baseR[0] = extend4To8((deUint8)getBits(src, 60, 63));
601 baseR[1] = extend4To8((deUint8)getBits(src, 56, 59));
602 baseG[0] = extend4To8((deUint8)getBits(src, 52, 55));
603 baseG[1] = extend4To8((deUint8)getBits(src, 48, 51));
604 baseB[0] = extend4To8((deUint8)getBits(src, 44, 47));
605 baseB[1] = extend4To8((deUint8)getBits(src, 40, 43));
627 const deUint32 modifierNdx = (getBit(src, 16+pixelNdx) << 1) | getBit(src, pixelNdx);
669 const deUint8 R1a = (deUint8)getBits(src, 59, 60);
670 const deUint8 R1b = (deUint8)getBits(src, 56, 57);
671 const deUint8 G1 = (deUint8)getBits(src, 52, 55);
672 const deUint8 B1 = (deUint8)getBits(src, 48, 51);
673 const deUint8 R2 = (deUint8)getBits(src, 44, 47);
674 const deUint8 G2 = (deUint8)getBits(src, 40, 43);
675 const deUint8 B2 = (deUint8)getBits(src, 36, 39);
676 const deUint32 distNdx = (getBits(src, 34, 35) << 1) | getBit(src, 32);
695 const deUint8 R1 = (deUint8)getBits(src, 59, 62);
696 const deUint8 G1a = (deUint8)getBits(src, 56, 58);
697 const deUint8 G1b = (deUint8)getBit(src, 52);
698 const deUint8 B1a = (deUint8)getBit(src, 51);
699 const deUint8 B1b = (deUint8)getBits(src, 47, 49);
700 const deUint8 R2 = (deUint8)getBits(src, 43, 46);
701 const deUint8 G2 = (deUint8)getBits(src, 39, 42);
702 const deUint8 B2 = (deUint8)getBits(src, 35, 38);
718 distNdx = (getBit(src, 34) << 2) | (getBit(src, 32) << 1) | (deUint32)(baseValue[0] >= baseValue[1]);
741 const deUint32 paintNdx = (getBit(src, 16+pixelNdx) << 1) | getBit(src, pixelNdx);
765 const deUint8 GO1 = (deUint8)getBit(src, 56);
766 const deUint8 GO2 = (deUint8)getBits(src, 49, 54);
767 const deUint8 BO1 = (deUint8)getBit(src, 48);
768 const deUint8 BO2 = (deUint8)getBits(src, 43, 44);
769 const deUint8 BO3 = (deUint8)getBits(src, 39, 41);
770 const deUint8 RH1 = (deUint8)getBits(src, 34, 38);
771 const deUint8 RH2 = (deUint8)getBit(src, 32);
772 const deUint8 RO = extend6To8((deUint8)getBits(src, 57, 62));
776 const deUint8 GH = extend7To8((deUint8)getBits(src, 25, 31));
777 const deUint8 BH = extend6To8((deUint8)getBits(src, 19, 24));
778 const deUint8 RV = extend6To8((deUint8)getBits(src, 13, 18));
779 const deUint8 GV = extend7To8((deUint8)getBits(src, 6, 12));
780 const deUint8 BV = extend6To8((deUint8)getBits(src, 0, 5));
804 void decompressEAC8Block (deUint8 dst[ETC2_UNCOMPRESSED_BLOCK_SIZE_A8], deUint64 src)
826 const deUint8 baseCodeword = (deUint8)getBits(src, 56, 63);
827 const deUint8 multiplier = (deUint8)getBits(src, 52, 55);
828 const deUint32 tableNdx = getBits(src, 48, 51);
836 const deUint32 modifierNdx = (getBit(src, pixelBitNdx + 2) << 2) | (getBit(src, pixelBitNdx + 1) << 1) | getBit(src, pixelBitNdx);
843 void decompressEAC11Block (deUint8 dst[ETC2_UNCOMPRESSED_BLOCK_SIZE_R11], deUint64 src, bool signedMode)
865 const deInt32 multiplier = (deInt32)getBits(src, 52, 55);
866 const deInt32 tableNdx = (deInt32)getBits(src, 48, 51);
867 deInt32 baseCodeword = (deInt32)getBits(src, 56, 63);
883 const deUint32 modifierNdx = (getBit(src, pixelBitNdx + 2) << 2) | (getBit(src, pixelBitNdx + 1) << 1) | getBit(src, pixelBitNdx);
913 void decompressETC1 (const PixelBufferAccess& dst, const deUint8* src)
918 const deUint64 compressedBlock = get64BitBlock(src, 0);
923 void decompressETC2 (const PixelBufferAccess& dst, const deUint8* src)
928 const deUint64 compressedBlock = get64BitBlock(src, 0);
933 void decompressETC2_EAC_RGBA8 (const PixelBufferAccess& dst, const deUint8* src)
941 const deUint64 compressedBlockAlpha = get128BitBlockStart(src, 0);
942 const deUint64 compressedBlockRGB = get128BitBlockEnd(src, 0);
968 void decompressETC2_RGB8_PUNCHTHROUGH_ALPHA1 (const PixelBufferAccess& dst, const deUint8* src)
976 const deUint64 compressedBlockRGBA = get64BitBlock(src, 0);
1001 void decompressEAC_R11 (const PixelBufferAccess& dst, const deUint8* src, bool signedMode)
1009 const deUint64 compressedBlock = get64BitBlock(src, 0);
1040 void decompressEAC_RG11 (const PixelBufferAccess& dst, const deUint8* src, bool signedMode)
1048 const deUint64 compressedBlockR = get128BitBlockStart(src, 0);
1049 const deUint64 compressedBlockG = get128BitBlockEnd(src, 0);
1246 inline float uint8ToFloat (deUint8 src)
1248 return ((float)src / 255.0f);
1251 inline float int8ToFloat (deInt8 src)
1253 return ((float)src / 128.0f);
1256 inline deUint32 bgr16torgba32 (deUint16 src)
1258 const deUint32 src32 = src;
1312 inline deInt8 extractModeBc6 (deUint8 src)
1315 switch(src & 0x1f)
1324 switch (src & 0x3)
1328 case 2: return (deInt8)(2 + ((src >> 2) & 0x7));
1329 case 3: return (deInt8)(10 + ((src >> 2) & 0x7));
1335 inline deInt8 extractModeBc7 (deUint8 src)
1338 if (src & (1 << i))
1344 inline deUint64 get64BitBlockLE (const deUint8* src, int blockNdx)
1350 block |= (deUint64)(src[blockNdx*8+i]) << (8ull*i);
1489 void decompressBc1 (const PixelBufferAccess& dst, const deUint8* src, bool hasAlpha)
1496 const deUint16 color0_16 = ((deUint16*)src)[0];
1497 const deUint16 color1_16 = ((deUint16*)src)[1];
1500 const deUint8* const indices8 = &src[4];
1542 void decompressBc2 (const PixelBufferAccess& dst, const deUint8* src)
1549 const deUint16 color0_16 = ((deUint16*)src)[4];
1550 const deUint16 color1_16 = ((deUint16*)src)[5];
1553 const deUint8* const indices8 = &src[12];
1554 const deUint8* const alphas8 = src;
1614 void decompressBc3 (const PixelBufferAccess& dst, const deUint8* src)
1621 const deUint8 alpha0 = src[0];
1622 const deUint8 alpha1 = src[1];
1623 const deUint16 color0_16 = ((deUint16*)src)[4];
1624 const deUint16 color1_16 = ((deUint16*)src)[5];
1627 const deUint8* const indices8 = &src[12];
1628 const deUint64 alphaBits = get64BitBlockLE(src, 0) >> 16;
1705 void decompressBc4 (const PixelBufferAccess& dst, const deUint8* src, bool hasSign)
1712 const deUint8 red0 = src[0];
1713 const deUint8 red1 = src[1];
1714 const deInt8 red0s = ((deInt8*)src)[0];
1715 const deInt8 red1s = ((deInt8*)src)[1];
1716 const deUint64 indexBits = get64BitBlockLE(src, 0) >> 16;
1765 void decompressBc5 (const PixelBufferAccess& dst, const deUint8* src, bool hasSign)
1778 const deUint8 rg0 = src[offset];
1779 const deUint8 rg1 = src[offset + 1];
1780 const deInt8 rg0s = ((deInt8*)src)[offset];
1781 const deInt8 rg1s = ((deInt8*)src)[offset + 1];
1782 const deUint64 indexBits = get64BitBlockLE(src, c) >> 16;
1815 void decompressBc6H (const PixelBufferAccess& dst, const deUint8* src, bool hasSign)
1823 deInt32 mode = extractModeBc6(src[0]);
1830 const deUint64 low = ((deUint64*)src)[0];
1831 const deUint64 high = ((deUint64*)src)[1];
2212 void decompressBc7 (const PixelBufferAccess& dst, const deUint8* src)
2236 const deUint64 low = ((deUint64*)src)[0];
2237 const deUint64 high = ((deUint64*)src)[1];
2238 const deInt32 mode = extractModeBc7(src[0]);
2418 void decompressBlock (CompressedTexFormat format, const PixelBufferAccess& dst, const deUint8* src, const TexDecompressionParams& params)
2425 case COMPRESSEDTEXFORMAT_ETC1_RGB8: decompressETC1 (dst, src); break;
2426 case COMPRESSEDTEXFORMAT_EAC_R11: decompressEAC_R11 (dst, src, false); break;
2427 case COMPRESSEDTEXFORMAT_EAC_SIGNED_R11: decompressEAC_R11 (dst, src, true); break;
2428 case COMPRESSEDTEXFORMAT_EAC_RG11: decompressEAC_RG11 (dst, src, false); break;
2429 case COMPRESSEDTEXFORMAT_EAC_SIGNED_RG11: decompressEAC_RG11 (dst, src, true); break;
2430 case COMPRESSEDTEXFORMAT_ETC2_RGB8: decompressETC2 (dst, src); break;
2431 case COMPRESSEDTEXFORMAT_ETC2_SRGB8: decompressETC2 (dst, src); break;
2432 case COMPRESSEDTEXFORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1: decompressETC2_RGB8_PUNCHTHROUGH_ALPHA1 (dst, src); break;
2433 case COMPRESSEDTEXFORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1: decompressETC2_RGB8_PUNCHTHROUGH_ALPHA1 (dst, src); break;
2434 case COMPRESSEDTEXFORMAT_ETC2_EAC_RGBA8: decompressETC2_EAC_RGBA8 (dst, src); break;
2435 case COMPRESSEDTEXFORMAT_ETC2_EAC_SRGB8_ALPHA8: decompressETC2_EAC_RGBA8 (dst, src); break;
2465 astc::decompress(dst, src, format, params.astcMode);
2468 case COMPRESSEDTEXFORMAT_BC1_RGB_UNORM_BLOCK: decompressBc1 (dst, src, false); break;
2469 case COMPRESSEDTEXFORMAT_BC1_RGB_SRGB_BLOCK: decompressBc1 (dst, src, false); break;
2470 case COMPRESSEDTEXFORMAT_BC1_RGBA_UNORM_BLOCK: decompressBc1 (dst, src, true); break;
2471 case COMPRESSEDTEXFORMAT_BC1_RGBA_SRGB_BLOCK: decompressBc1 (dst, src, true); break;
2472 case COMPRESSEDTEXFORMAT_BC2_UNORM_BLOCK: decompressBc2 (dst, src); break;
2473 case COMPRESSEDTEXFORMAT_BC2_SRGB_BLOCK: decompressBc2 (dst, src); break;
2474 case COMPRESSEDTEXFORMAT_BC3_UNORM_BLOCK: decompressBc3 (dst, src); break;
2475 case COMPRESSEDTEXFORMAT_BC3_SRGB_BLOCK: decompressBc3 (dst, src); break;
2476 case COMPRESSEDTEXFORMAT_BC4_UNORM_BLOCK: decompressBc4 (dst, src, false); break;
2477 case COMPRESSEDTEXFORMAT_BC4_SNORM_BLOCK: decompressBc4 (dst, src, true); break;
2478 case COMPRESSEDTEXFORMAT_BC5_UNORM_BLOCK: decompressBc5 (dst, src, false); break;
2479 case COMPRESSEDTEXFORMAT_BC5_SNORM_BLOCK: decompressBc5 (dst, src, true); break;
2480 case COMPRESSEDTEXFORMAT_BC6H_UFLOAT_BLOCK: decompressBc6H (dst, src, false); break;
2481 case COMPRESSEDTEXFORMAT_BC6H_SFLOAT_BLOCK: decompressBc6H (dst, src, true); break;
2482 case COMPRESSEDTEXFORMAT_BC7_UNORM_BLOCK: decompressBc7 (dst, src); break;
2483 case COMPRESSEDTEXFORMAT_BC7_SRGB_BLOCK: decompressBc7 (dst, src); break;
2498 void decompress (const PixelBufferAccess& dst, CompressedTexFormat fmt, const deUint8* src, const TexDecompressionParams& params)
2517 const deUint8* const blockPtr = src + componentSum(blockPos * blockPitches);