MCPcopy Create free account
hub / github.com/defold/defold / unpack_uastc

Function unpack_uastc

engine/dlib/src/basis/transcoder/basisu_transcoder.cpp:12182–12638  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12180 }
12181
12182 bool unpack_uastc(const uastc_block& blk, unpacked_uastc_block& unpacked, bool blue_contract_check, bool read_hints)
12183 {
12184 //memset(&unpacked, 0, sizeof(unpacked));
12185
12186#if 0
12187 uint8_t table[128];
12188 memset(table, 0xFF, sizeof(table));
12189
12190 {
12191 for (uint32_t mode = 0; mode <= TOTAL_UASTC_MODES; mode++)
12192 {
12193 const uint32_t code = g_uastc_mode_huff_codes[mode][0];
12194 const uint32_t codesize = g_uastc_mode_huff_codes[mode][1];
12195
12196 table[code] = mode;
12197
12198 uint32_t bits_left = 7 - codesize;
12199 for (uint32_t i = 0; i < (1 << bits_left); i++)
12200 table[code | (i << codesize)] = mode;
12201 }
12202
12203 for (uint32_t i = 0; i < 128; i++)
12204 printf("%u,", table[i]);
12205 exit(0);
12206 }
12207#endif
12208
12209 const int mode = g_uastc_huff_modes[blk.m_bytes[0] & 127];
12210 if (mode >= (int)TOTAL_UASTC_MODES)
12211 return false;
12212
12213 unpacked.m_mode = mode;
12214
12215 uint32_t bit_ofs = g_uastc_mode_huff_codes[mode][1];
12216
12217 if (mode == UASTC_MODE_INDEX_SOLID_COLOR)
12218 {
12219 unpacked.m_solid_color.r = (uint8_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 8);
12220 unpacked.m_solid_color.g = (uint8_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 8);
12221 unpacked.m_solid_color.b = (uint8_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 8);
12222 unpacked.m_solid_color.a = (uint8_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 8);
12223
12224 if (read_hints)
12225 {
12226 unpacked.m_etc1_flip = false;
12227 unpacked.m_etc1_diff = read_bit(blk.m_bytes, bit_ofs) != 0;
12228 unpacked.m_etc1_inten0 = (uint32_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 3);
12229 unpacked.m_etc1_inten1 = 0;
12230 unpacked.m_etc1_selector = (uint32_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 2);
12231 unpacked.m_etc1_r = (uint32_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 5);
12232 unpacked.m_etc1_g = (uint32_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 5);
12233 unpacked.m_etc1_b = (uint32_t)read_bits1_to_9_fst(blk.m_bytes, bit_ofs, 5);
12234 unpacked.m_etc1_bias = 0;
12235 unpacked.m_etc2_hints = 0;
12236 }
12237
12238 return true;
12239 }

Callers 15

transcode_sliceMethod · 0.70
transcode_uastc_to_astcFunction · 0.70
transcode_uastc_to_bc7Function · 0.70
transcode_uastc_to_etc1Function · 0.70
transcode_uastc_to_bc1Function · 0.70
transcode_uastc_to_bc3Function · 0.70
transcode_uastc_to_bc4Function · 0.70
transcode_uastc_to_bc5Function · 0.70

Calls 11

read_bits1_to_9_fstFunction · 0.85
read_bitFunction · 0.85
get_anchor_indicesFunction · 0.85
read_bits1_to_9Function · 0.85
read_bits64Function · 0.85
swapFunction · 0.85
astc_interpolateFunction · 0.85
set_noclamp_rgbaMethod · 0.80
assertFunction · 0.50
setMethod · 0.45

Tested by

no test coverage detected