|
|
@@ -346,7 +346,7 @@ namespace bimg
|
|
|
return size;
|
|
|
}
|
|
|
|
|
|
- void imageSolid(void* _dst, uint32_t _width, uint32_t _height, uint32_t _solid)
|
|
|
+ BX_NO_INLINE void imageSolid(void* _dst, uint32_t _width, uint32_t _height, uint32_t _solid)
|
|
|
{
|
|
|
uint32_t* dst = (uint32_t*)_dst;
|
|
|
for (uint32_t ii = 0, num = _width*_height; ii < num; ++ii)
|
|
|
@@ -355,7 +355,7 @@ namespace bimg
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- void imageCheckerboard(void* _dst, uint32_t _width, uint32_t _height, uint32_t _step, uint32_t _0, uint32_t _1)
|
|
|
+ BX_NO_INLINE void imageCheckerboard(void* _dst, uint32_t _width, uint32_t _height, uint32_t _step, uint32_t _0, uint32_t _1)
|
|
|
{
|
|
|
uint32_t* dst = (uint32_t*)_dst;
|
|
|
for (uint32_t yy = 0; yy < _height; ++yy)
|
|
|
@@ -1569,69 +1569,69 @@ namespace bimg
|
|
|
static const uint32_t s_bptcP3[] =
|
|
|
{ // 76543210 0000 1111 2222 3333 4444 5555 6666 7777
|
|
|
0xaa685050, // 0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 2, 1, 2, 2, 2, 2
|
|
|
- 0x6a5a5040, // 0, 0, 0, 1, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 2, 1
|
|
|
- 0x5a5a4200, // 0, 0, 0, 0, 2, 0, 0, 1, 2, 2, 1, 1, 2, 2, 1, 1
|
|
|
- 0x5450a0a8, // 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 1, 1, 0, 1, 1, 1
|
|
|
- 0xa5a50000, // 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2
|
|
|
- 0xa0a05050, // 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 2, 2
|
|
|
- 0x5555a0a0, // 0, 0, 2, 2, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1
|
|
|
- 0x5a5a5050, // 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1
|
|
|
- 0xaa550000, // 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2
|
|
|
- 0xaa555500, // 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2
|
|
|
- 0xaaaa5500, // 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
- 0x90909090, // 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2
|
|
|
- 0x94949494, // 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2
|
|
|
- 0xa4a4a4a4, // 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 2
|
|
|
- 0xa9a59450, // 0, 0, 1, 1, 0, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2
|
|
|
- 0x2a0a4250, // 0, 0, 1, 1, 2, 0, 0, 1, 2, 2, 0, 0, 2, 2, 2, 0
|
|
|
- 0xa5945040, // 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 2, 1, 1, 2, 2
|
|
|
- 0x0a425054, // 0, 1, 1, 1, 0, 0, 1, 1, 2, 0, 0, 1, 2, 2, 0, 0
|
|
|
- 0xa5a5a500, // 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2
|
|
|
- 0x55a0a0a0, // 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 1, 1, 1, 1
|
|
|
- 0xa8a85454, // 0, 1, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2, 0, 2, 2, 2
|
|
|
- 0x6a6a4040, // 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 1, 2, 2, 2, 1
|
|
|
- 0xa4a45000, // 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 2, 0, 1, 2, 2
|
|
|
- 0x1a1a0500, // 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 1, 0, 2, 2, 1, 0
|
|
|
- 0x0050a4a4, // 0, 1, 2, 2, 0, 1, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0
|
|
|
- 0xaaa59090, // 0, 0, 1, 2, 0, 0, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2
|
|
|
- 0x14696914, // 0, 1, 1, 0, 1, 2, 2, 1, 1, 2, 2, 1, 0, 1, 1, 0
|
|
|
- 0x69691400, // 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 2, 1, 1, 2, 2, 1
|
|
|
- 0xa08585a0, // 0, 0, 2, 2, 1, 1, 0, 2, 1, 1, 0, 2, 0, 0, 2, 2
|
|
|
- 0xaa821414, // 0, 1, 1, 0, 0, 1, 1, 0, 2, 0, 0, 2, 2, 2, 2, 2
|
|
|
- 0x50a4a450, // 0, 0, 1, 1, 0, 1, 2, 2, 0, 1, 2, 2, 0, 0, 1, 1
|
|
|
- 0x6a5a0200, // 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 1, 1, 2, 2, 2, 1
|
|
|
- 0xa9a58000, // 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 2, 1, 2, 2, 2
|
|
|
- 0x5090a0a8, // 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 1, 2, 0, 0, 1, 1
|
|
|
- 0xa8a09050, // 0, 0, 1, 1, 0, 0, 1, 2, 0, 0, 2, 2, 0, 2, 2, 2
|
|
|
- 0x24242424, // 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0
|
|
|
- 0x00aa5500, // 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0
|
|
|
- 0x24924924, // 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0
|
|
|
- 0x24499224, // 0, 1, 2, 0, 2, 0, 1, 2, 1, 2, 0, 1, 0, 1, 2, 0
|
|
|
- 0x50a50a50, // 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 0, 0, 1, 1
|
|
|
- 0x500aa550, // 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1
|
|
|
- 0xaaaa4444, // 0, 1, 0, 1, 0, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
- 0x66660000, // 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 2, 1, 2, 1
|
|
|
- 0xa5a0a5a0, // 0, 0, 2, 2, 1, 1, 2, 2, 0, 0, 2, 2, 1, 1, 2, 2
|
|
|
- 0x50a050a0, // 0, 0, 2, 2, 0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 1, 1
|
|
|
- 0x69286928, // 0, 2, 2, 0, 1, 2, 2, 1, 0, 2, 2, 0, 1, 2, 2, 1
|
|
|
- 0x44aaaa44, // 0, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1
|
|
|
- 0x66666600, // 0, 0, 0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1
|
|
|
- 0xaa444444, // 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 2, 2, 2
|
|
|
- 0x54a854a8, // 0, 2, 2, 2, 0, 1, 1, 1, 0, 2, 2, 2, 0, 1, 1, 1
|
|
|
- 0x95809580, // 0, 0, 0, 2, 1, 1, 1, 2, 0, 0, 0, 2, 1, 1, 1, 2
|
|
|
- 0x96969600, // 0, 0, 0, 0, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2
|
|
|
- 0xa85454a8, // 0, 2, 2, 2, 0, 1, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2
|
|
|
- 0x80959580, // 0, 0, 0, 2, 1, 1, 1, 2, 1, 1, 1, 2, 0, 0, 0, 2
|
|
|
- 0xaa141414, // 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 2, 2, 2
|
|
|
- 0x96960000, // 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 2, 1, 1, 2
|
|
|
- 0xaaaa1414, // 0, 1, 1, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
- 0xa05050a0, // 0, 0, 2, 2, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 2
|
|
|
- 0xa0a5a5a0, // 0, 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 0, 0, 2, 2
|
|
|
- 0x96000000, // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2
|
|
|
- 0x40804080, // 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1
|
|
|
- 0xa9a8a9a8, // 0, 2, 2, 2, 1, 2, 2, 2, 0, 2, 2, 2, 1, 2, 2, 2
|
|
|
- 0xaaaaaa44, // 0, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
- 0x2a4a5254, // 0, 1, 1, 1, 2, 0, 1, 1, 2, 2, 0, 1, 2, 2, 2, 0
|
|
|
+ 0x6a5a5040, // 0, 0, 0, 1, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 2, 1
|
|
|
+ 0x5a5a4200, // 0, 0, 0, 0, 2, 0, 0, 1, 2, 2, 1, 1, 2, 2, 1, 1
|
|
|
+ 0x5450a0a8, // 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 1, 1, 0, 1, 1, 1
|
|
|
+ 0xa5a50000, // 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2
|
|
|
+ 0xa0a05050, // 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 2, 2
|
|
|
+ 0x5555a0a0, // 0, 0, 2, 2, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1
|
|
|
+ 0x5a5a5050, // 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1
|
|
|
+ 0xaa550000, // 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2
|
|
|
+ 0xaa555500, // 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2
|
|
|
+ 0xaaaa5500, // 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
+ 0x90909090, // 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2
|
|
|
+ 0x94949494, // 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2, 0, 1, 1, 2
|
|
|
+ 0xa4a4a4a4, // 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 2, 0, 1, 2, 2
|
|
|
+ 0xa9a59450, // 0, 0, 1, 1, 0, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 2
|
|
|
+ 0x2a0a4250, // 0, 0, 1, 1, 2, 0, 0, 1, 2, 2, 0, 0, 2, 2, 2, 0
|
|
|
+ 0xa5945040, // 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 2, 1, 1, 2, 2
|
|
|
+ 0x0a425054, // 0, 1, 1, 1, 0, 0, 1, 1, 2, 0, 0, 1, 2, 2, 0, 0
|
|
|
+ 0xa5a5a500, // 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2
|
|
|
+ 0x55a0a0a0, // 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 1, 1, 1, 1
|
|
|
+ 0xa8a85454, // 0, 1, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2, 0, 2, 2, 2
|
|
|
+ 0x6a6a4040, // 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 1, 2, 2, 2, 1
|
|
|
+ 0xa4a45000, // 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 2, 0, 1, 2, 2
|
|
|
+ 0x1a1a0500, // 0, 0, 0, 0, 1, 1, 0, 0, 2, 2, 1, 0, 2, 2, 1, 0
|
|
|
+ 0x0050a4a4, // 0, 1, 2, 2, 0, 1, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0
|
|
|
+ 0xaaa59090, // 0, 0, 1, 2, 0, 0, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2
|
|
|
+ 0x14696914, // 0, 1, 1, 0, 1, 2, 2, 1, 1, 2, 2, 1, 0, 1, 1, 0
|
|
|
+ 0x69691400, // 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 2, 1, 1, 2, 2, 1
|
|
|
+ 0xa08585a0, // 0, 0, 2, 2, 1, 1, 0, 2, 1, 1, 0, 2, 0, 0, 2, 2
|
|
|
+ 0xaa821414, // 0, 1, 1, 0, 0, 1, 1, 0, 2, 0, 0, 2, 2, 2, 2, 2
|
|
|
+ 0x50a4a450, // 0, 0, 1, 1, 0, 1, 2, 2, 0, 1, 2, 2, 0, 0, 1, 1
|
|
|
+ 0x6a5a0200, // 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 1, 1, 2, 2, 2, 1
|
|
|
+ 0xa9a58000, // 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 2, 1, 2, 2, 2
|
|
|
+ 0x5090a0a8, // 0, 2, 2, 2, 0, 0, 2, 2, 0, 0, 1, 2, 0, 0, 1, 1
|
|
|
+ 0xa8a09050, // 0, 0, 1, 1, 0, 0, 1, 2, 0, 0, 2, 2, 0, 2, 2, 2
|
|
|
+ 0x24242424, // 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 1, 2, 0
|
|
|
+ 0x00aa5500, // 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0
|
|
|
+ 0x24924924, // 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0
|
|
|
+ 0x24499224, // 0, 1, 2, 0, 2, 0, 1, 2, 1, 2, 0, 1, 0, 1, 2, 0
|
|
|
+ 0x50a50a50, // 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 0, 0, 1, 1
|
|
|
+ 0x500aa550, // 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1
|
|
|
+ 0xaaaa4444, // 0, 1, 0, 1, 0, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
+ 0x66660000, // 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 2, 1, 2, 1
|
|
|
+ 0xa5a0a5a0, // 0, 0, 2, 2, 1, 1, 2, 2, 0, 0, 2, 2, 1, 1, 2, 2
|
|
|
+ 0x50a050a0, // 0, 0, 2, 2, 0, 0, 1, 1, 0, 0, 2, 2, 0, 0, 1, 1
|
|
|
+ 0x69286928, // 0, 2, 2, 0, 1, 2, 2, 1, 0, 2, 2, 0, 1, 2, 2, 1
|
|
|
+ 0x44aaaa44, // 0, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1
|
|
|
+ 0x66666600, // 0, 0, 0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1
|
|
|
+ 0xaa444444, // 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 2, 2, 2
|
|
|
+ 0x54a854a8, // 0, 2, 2, 2, 0, 1, 1, 1, 0, 2, 2, 2, 0, 1, 1, 1
|
|
|
+ 0x95809580, // 0, 0, 0, 2, 1, 1, 1, 2, 0, 0, 0, 2, 1, 1, 1, 2
|
|
|
+ 0x96969600, // 0, 0, 0, 0, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2
|
|
|
+ 0xa85454a8, // 0, 2, 2, 2, 0, 1, 1, 1, 0, 1, 1, 1, 0, 2, 2, 2
|
|
|
+ 0x80959580, // 0, 0, 0, 2, 1, 1, 1, 2, 1, 1, 1, 2, 0, 0, 0, 2
|
|
|
+ 0xaa141414, // 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 2, 2, 2, 2
|
|
|
+ 0x96960000, // 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 2, 1, 1, 2
|
|
|
+ 0xaaaa1414, // 0, 1, 1, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
+ 0xa05050a0, // 0, 0, 2, 2, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 2
|
|
|
+ 0xa0a5a5a0, // 0, 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 0, 0, 2, 2
|
|
|
+ 0x96000000, // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2
|
|
|
+ 0x40804080, // 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1
|
|
|
+ 0xa9a8a9a8, // 0, 2, 2, 2, 1, 2, 2, 2, 0, 2, 2, 2, 1, 2, 2, 2
|
|
|
+ 0xaaaaaa44, // 0, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
|
|
+ 0x2a4a5254, // 0, 1, 1, 1, 2, 0, 1, 1, 2, 2, 0, 1, 2, 2, 2, 0
|
|
|
};
|
|
|
|
|
|
static const uint8_t s_bptcA2[] =
|
|
|
@@ -1829,6 +1829,11 @@ namespace bimg
|
|
|
|
|
|
void decodeBlockBc6h(uint16_t _dst[16*3], const uint8_t _src[16], bool _signed)
|
|
|
{
|
|
|
+ if (!BX_ENABLED(BIMG_DECODE_BC6) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
BitReader bit(_src);
|
|
|
|
|
|
uint8_t mode = uint8_t(bit.read(2) );
|
|
|
@@ -2236,6 +2241,11 @@ namespace bimg
|
|
|
|
|
|
void decodeBlockBc6h(float _dst[16*4], const uint8_t _src[16])
|
|
|
{
|
|
|
+ if (!BX_ENABLED(BIMG_DECODE_BC6) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
uint16_t tmp[16*3];
|
|
|
|
|
|
decodeBlockBc6h(tmp, _src, true);
|
|
|
@@ -2284,6 +2294,11 @@ namespace bimg
|
|
|
|
|
|
void decodeBlockBc7(uint8_t _dst[16*4], const uint8_t _src[16])
|
|
|
{
|
|
|
+ if (!BX_ENABLED(BIMG_DECODE_BC7) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
BitReader bit(_src);
|
|
|
|
|
|
uint8_t mode = 0;
|
|
|
@@ -2473,6 +2488,11 @@ namespace bimg
|
|
|
//
|
|
|
void decodeBlockATC(uint8_t _dst[16*4], const uint8_t _src[8])
|
|
|
{
|
|
|
+ if (!BX_ENABLED(BIMG_DECODE_ATC) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
uint8_t colors[4*4];
|
|
|
|
|
|
uint32_t c0 = _src[0] | (_src[1] << 8);
|
|
|
@@ -2780,6 +2800,11 @@ namespace bimg
|
|
|
|
|
|
void decodeBlockEtc12(uint8_t _dst[16*4], const uint8_t _src[8])
|
|
|
{
|
|
|
+ if (!BX_ENABLED(BIMG_DECODE_ETC1 || BIMG_DECODE_ETC2) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
bool flipBit = 0 != (_src[3] & 0x1);
|
|
|
bool diffBit = 0 != (_src[3] & 0x2);
|
|
|
|
|
|
@@ -4283,6 +4308,11 @@ namespace bimg
|
|
|
{
|
|
|
decodeBlockDxt1(temp, src);
|
|
|
src += 8;
|
|
|
+ if (!BX_ENABLED(BIMG_DECODE_ETC2) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
uint8_t* block = &dst[yy*_dstPitch*4 + xx*16];
|
|
|
bx::memCopy(&block[0*_dstPitch], &temp[ 0], 16);
|
|
|
@@ -4415,6 +4445,7 @@ namespace bimg
|
|
|
break;
|
|
|
|
|
|
case TextureFormat::BC6H:
|
|
|
+ if (BX_ENABLED(BIMG_DECODE_BC6) )
|
|
|
{
|
|
|
ImageContainer* rgba32f = imageAlloc(_allocator
|
|
|
, TextureFormat::RGBA32F
|
|
|
@@ -4429,41 +4460,62 @@ namespace bimg
|
|
|
imageConvert(_allocator, _dst, TextureFormat::BGRA8, rgba32f->m_data, TextureFormat::RGBA32F, _width, _height, 1, _width*16, _dstPitch);
|
|
|
imageFree(rgba32f);
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ BX_WARN(false, "BC6 decoder is disabled (BIMG_DECODE_BC6).");
|
|
|
+ imageCheckerboard(_dst, _width, _height, 16, UINT32_C(0xff000000), UINT32_C(0xff00ff00) );
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
case TextureFormat::BC7:
|
|
|
- for (uint32_t yy = 0; yy < height; ++yy)
|
|
|
+ if (BX_ENABLED(BIMG_DECODE_BC7) )
|
|
|
{
|
|
|
- for (uint32_t xx = 0; xx < width; ++xx)
|
|
|
+ for (uint32_t yy = 0; yy < height; ++yy)
|
|
|
{
|
|
|
- decodeBlockBc7(temp, src);
|
|
|
- src += 16;
|
|
|
+ for (uint32_t xx = 0; xx < width; ++xx)
|
|
|
+ {
|
|
|
+ decodeBlockBc7(temp, src);
|
|
|
+ src += 16;
|
|
|
|
|
|
- uint8_t* block = &dst[yy*_dstPitch*4 + xx*16];
|
|
|
- bx::memCopy(&block[0*_dstPitch], &temp[ 0], 16);
|
|
|
- bx::memCopy(&block[1*_dstPitch], &temp[16], 16);
|
|
|
- bx::memCopy(&block[2*_dstPitch], &temp[32], 16);
|
|
|
- bx::memCopy(&block[3*_dstPitch], &temp[48], 16);
|
|
|
+ uint8_t* block = &dst[yy*_dstPitch*4 + xx*16];
|
|
|
+ bx::memCopy(&block[0*_dstPitch], &temp[ 0], 16);
|
|
|
+ bx::memCopy(&block[1*_dstPitch], &temp[16], 16);
|
|
|
+ bx::memCopy(&block[2*_dstPitch], &temp[32], 16);
|
|
|
+ bx::memCopy(&block[3*_dstPitch], &temp[48], 16);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ BX_WARN(false, "BC7 decoder is disabled (BIMG_DECODE_BC7).");
|
|
|
+ imageCheckerboard(_dst, _width, _height, 16, UINT32_C(0xff000000), UINT32_C(0xff00ff00) );
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
case TextureFormat::ETC1:
|
|
|
case TextureFormat::ETC2:
|
|
|
- for (uint32_t yy = 0; yy < height; ++yy)
|
|
|
+ if (BX_ENABLED(BIMG_DECODE_ETC1 || BIMG_DECODE_ETC2) )
|
|
|
{
|
|
|
- for (uint32_t xx = 0; xx < width; ++xx)
|
|
|
+ for (uint32_t yy = 0; yy < height; ++yy)
|
|
|
{
|
|
|
- decodeBlockEtc12(temp, src);
|
|
|
- src += 8;
|
|
|
+ for (uint32_t xx = 0; xx < width; ++xx)
|
|
|
+ {
|
|
|
+ decodeBlockEtc12(temp, src);
|
|
|
+ src += 8;
|
|
|
|
|
|
- uint8_t* block = &dst[yy*_dstPitch*4 + xx*16];
|
|
|
- bx::memCopy(&block[0*_dstPitch], &temp[ 0], 16);
|
|
|
- bx::memCopy(&block[1*_dstPitch], &temp[16], 16);
|
|
|
- bx::memCopy(&block[2*_dstPitch], &temp[32], 16);
|
|
|
- bx::memCopy(&block[3*_dstPitch], &temp[48], 16);
|
|
|
+ uint8_t* block = &dst[yy*_dstPitch*4 + xx*16];
|
|
|
+ bx::memCopy(&block[0*_dstPitch], &temp[ 0], 16);
|
|
|
+ bx::memCopy(&block[1*_dstPitch], &temp[16], 16);
|
|
|
+ bx::memCopy(&block[2*_dstPitch], &temp[32], 16);
|
|
|
+ bx::memCopy(&block[3*_dstPitch], &temp[48], 16);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ BX_WARN(false, "ETC1/ETC2 decoder is disabled (BIMG_DECODE_ETC1/ETC2).");
|
|
|
+ imageCheckerboard(_dst, _width, _height, 16, UINT32_C(0xff000000), UINT32_C(0xff00ff00) );
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
case TextureFormat::ETC2A:
|
|
|
@@ -5315,7 +5367,7 @@ namespace bimg
|
|
|
|
|
|
uint32_t ddspf = UINT32_MAX;
|
|
|
uint32_t dxgiFormat = UINT32_MAX;
|
|
|
- uint32_t fourccFormat = UINT32_MAX;
|
|
|
+ uint32_t fourccFormat = UINT32_MAX;
|
|
|
|
|
|
for (uint32_t ii = 0; ii < BX_COUNTOF(s_translateDdsPixelFormat); ++ii)
|
|
|
{
|
|
|
@@ -5404,13 +5456,17 @@ namespace bimg
|
|
|
total += bx::write(_writer, uint32_t(8*sizeof(uint32_t) ), _err); // pixelFormatSize
|
|
|
total += bx::write(_writer, uint32_t(DDPF_FOURCC), _err);
|
|
|
|
|
|
- if (UINT32_MAX != fourccFormat)
|
|
|
- total += bx::write(_writer, fourccFormat, _err);
|
|
|
- else
|
|
|
- total += bx::write(_writer, uint32_t(DDS_DX10), _err);
|
|
|
+ if (UINT32_MAX != fourccFormat)
|
|
|
+ {
|
|
|
+ total += bx::write(_writer, fourccFormat, _err);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ total += bx::write(_writer, uint32_t(DDS_DX10), _err);
|
|
|
+ }
|
|
|
|
|
|
- total += bx::write(_writer, uint32_t(0), _err); // bitCount
|
|
|
- total += bx::writeRep(_writer, 0, 4*sizeof(uint32_t), _err); // bitmask
|
|
|
+ total += bx::write(_writer, uint32_t(0), _err); // bitCount
|
|
|
+ total += bx::writeRep(_writer, 0, 4*sizeof(uint32_t), _err); // bitmask
|
|
|
}
|
|
|
|
|
|
uint32_t caps[4] =
|