MCPcopy Create free account
hub / github.com/KhronosGroup/KTX-Software / get_dfd

Method get_dfd

external/basisu/encoder/basisu_comp.cpp:1710–1782  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1708 static uint8_t g_ktx2_uastc_alpha_dfd[44] = { 0x2C,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x28,0x0,0xA6,0x1,0x2,0x0,0x3,0x3,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF };
1709
1710 void basis_compressor::get_dfd(uint8_vec &dfd, const basist::ktx2_header &header)
1711 {
1712 const uint8_t* pDFD;
1713 uint32_t dfd_len;
1714
1715 if (m_params.m_uastc)
1716 {
1717 if (m_any_source_image_has_alpha)
1718 {
1719 pDFD = g_ktx2_uastc_alpha_dfd;
1720 dfd_len = sizeof(g_ktx2_uastc_alpha_dfd);
1721 }
1722 else
1723 {
1724 pDFD = g_ktx2_uastc_nonalpha_dfd;
1725 dfd_len = sizeof(g_ktx2_uastc_nonalpha_dfd);
1726 }
1727 }
1728 else
1729 {
1730 if (m_any_source_image_has_alpha)
1731 {
1732 pDFD = g_ktx2_etc1s_alpha_dfd;
1733 dfd_len = sizeof(g_ktx2_etc1s_alpha_dfd);
1734 }
1735 else
1736 {
1737 pDFD = g_ktx2_etc1s_nonalpha_dfd;
1738 dfd_len = sizeof(g_ktx2_etc1s_nonalpha_dfd);
1739 }
1740 }
1741
1742 assert(dfd_len >= 44);
1743
1744 dfd.resize(dfd_len);
1745 memcpy(dfd.data(), pDFD, dfd_len);
1746
1747 uint32_t dfd_bits = basisu::read_le_dword(dfd.data() + 3 * sizeof(uint32_t));
1748
1749 dfd_bits &= ~(0xFF << 16);
1750
1751 if (m_params.m_ktx2_srgb_transfer_func)
1752 dfd_bits |= (basist::KTX2_KHR_DF_TRANSFER_SRGB << 16);
1753 else
1754 dfd_bits |= (basist::KTX2_KHR_DF_TRANSFER_LINEAR << 16);
1755
1756 basisu::write_le_dword(dfd.data() + 3 * sizeof(uint32_t), dfd_bits);
1757
1758 if (header.m_supercompression_scheme != basist::KTX2_SS_NONE)
1759 {
1760 uint32_t plane_bits = basisu::read_le_dword(dfd.data() + 5 * sizeof(uint32_t));
1761
1762 plane_bits &= ~0xFF;
1763
1764 basisu::write_le_dword(dfd.data() + 5 * sizeof(uint32_t), plane_bits);
1765 }
1766
1767 // Fix up the DFD channel(s)

Callers 3

getDFDSizeMethod · 0.80
getDFDMethod · 0.80

Calls 5

assertFunction · 0.85
read_le_dwordFunction · 0.85
write_le_dwordFunction · 0.85
resizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected