MCPcopy Create free account
hub / github.com/BinomialLLC/basis_universal / TinyDDS_EncodeFormat

Function TinyDDS_EncodeFormat

encoder/3rdparty/tinydds.h:1737–1960  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1735#define TDDS_EF_BUMP_RGBA(bits, rm, gm, bm, am) TDDS_EF(bits, rm, gm, bm, am, TINYDDS_DDPF_BUMPLUMINANCE | TINYDDS_DDPF_ALPHAPIXELS)
1736
1737static bool TinyDDS_EncodeFormat(TinyDDS_Format fmt, TinyDDS_Header* header, TinyDDS_HeaderDX10* headerDx10) {
1738 // lets start with the easy part. if its real DXGI_FORMAT we can just fill in the Dx10 part
1739 if(fmt < TDDS_SYNTHESISED_DXGIFORMATS) {
1740 headerDx10->DXGIFormat = (TinyImageFormat_DXGI_FORMAT)fmt;
1741 header->formatFourCC = TINYDDS_MAKE_RIFFCODE('D','X','1','0');
1742 header->formatFlags = TINYDDS_DDPF_FOURCC;
1743 } else {
1744 headerDx10->DXGIFormat = TIF_DXGI_FORMAT_UNKNOWN;
1745 }
1746 // now lets try synthesising if possible
1747 // if we can reset the DX10 fourCC but leave the format in place
1748 // that way if we have slices which can only be DXGI_FORMAT we can use it
1749 switch(fmt) {
1750 case TDDS_UNDEFINED: break;
1751
1752 case TDDS_R1_UNORM: TDDS_EF_RGB(1, 0x1, 0, 0)
1753 case TDDS_R4G4_UNORM: TDDS_EF_RGB(8, 0x0F, 0xF0, 0)
1754 case TDDS_G4R4_UNORM: TDDS_EF_RGB(8, 0xF0, 0x0F, 0)
1755 case TDDS_B2G3R3_UNORM: TDDS_EF_RGB(8, 0x3, 0x7, 0x7 )
1756 case TDDS_R8_UNORM: TDDS_EF_RGB(8, 0xFF, 0, 0 );
1757 case TDDS_A8_UNORM: TDDS_EF_ALPHA( 8, 0xFF);
1758
1759 case TDDS_R16_UNORM:TDDS_EF_RGB( 16,0x0000FFFF, 0, 0)
1760 case TDDS_A4B4G4R4_UNORM:
1761 TDDS_EF_RGBA(16, 0xF000, 0x0F00, 0x00F0, 0x000F);
1762 case TDDS_X4B4G4R4_UNORM:
1763 TDDS_EF_RGBA(16, 0xF000, 0x0F00, 0x00F0, 0x0000);
1764 case TDDS_B4G4R4A4_UNORM:
1765 TDDS_EF_RGBA(16, 0x0F00, 0x00F0, 0x000F, 0xF000);
1766 case TDDS_B4G4R4X4_UNORM:
1767 TDDS_EF_RGBA(16, 0x0F00, 0x00F0, 0x000F, 0x0000);
1768 case TDDS_A4R4G4B4_UNORM:
1769 TDDS_EF_RGBA(16, 0x00F0, 0x0F00, 0xF000, 0x000F);
1770 case TDDS_X4R4G4B4_UNORM:
1771 TDDS_EF_RGBA(16, 0x00F0, 0x0F00, 0xF000, 0x0000);
1772 case TDDS_R4G4B4A4_UNORM:
1773 TDDS_EF_RGBA(16, 0x000F, 0x00F0, 0x0F00, 0xF000);
1774 case TDDS_R4G4B4X4_UNORM:
1775 TDDS_EF_RGBA(16, 0x000F, 0x00F0, 0x0F00, 0x0000);
1776
1777 case TDDS_B5G5R5A1_UNORM:
1778 TDDS_EF_RGBA(16, 0x7C00, 0x03E0, 0x001F, 0x8000);
1779 case TDDS_B5G5R5X1_UNORM:
1780 TDDS_EF_RGBA(16, 0x7C00, 0x03E0, 0x001F, 0x0000);
1781
1782 case TDDS_R5G5B5A1_UNORM:
1783 TDDS_EF_RGBA(16, 0x001F, 0x03E0, 0x7C00, 0x8000);
1784 case TDDS_R5G5B5X1_UNORM:
1785 TDDS_EF_RGBA(16, 0x001F, 0x03E0, 0x7C00, 0x0000);
1786
1787 case TDDS_A1R5G5B5_UNORM:
1788 TDDS_EF_RGBA(16, 0x003E, 0x07C0, 0xF800, 0x0001);
1789 case TDDS_X1R5G5B5_UNORM:
1790 TDDS_EF_RGBA(16, 0x003E, 0x07C0, 0xF800, 0x0000);
1791 case TDDS_A1B5G5R5_UNORM:
1792 TDDS_EF_RGBA(16, 0xF800, 0x07C0, 0x003E, 0x0001);
1793 case TDDS_X1B5G5R5_UNORM:
1794 TDDS_EF_RGBA(16, 0xF800, 0x07C0, 0x003E, 0x0000);

Callers 1

TinyDDS_WriteImageFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected