bc1_common_kernel.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "common_def.h"
  2. #include "bcn_common_api.h"
  3. #ifdef USE_CMP
  4. #include "bc1_cmp.h"
  5. #endif
  6. //=================================
  7. // External Codecs For Base Testing
  8. //=================================
  9. #ifdef USE_BETSY
  10. #include "./external/bc1_betsy.h"
  11. #endif
  12. #ifdef USE_ICBC
  13. #include "./external/bc1_icbc.h"
  14. #endif
  15. #ifdef USE_RGBCX
  16. // CMP setting ranges vs levels map as
  17. // quality = Level
  18. // 0.0 = 0
  19. // 0.1 = 1
  20. // 0.2 = 2
  21. // ...
  22. // 0.19 = 19
  23. // > 0.19 = 19
  24. //
  25. #include "./external/bc1_cmprgbcx.h"
  26. #endif
  27. #ifdef USE_INT
  28. #include "./external/bc1_int.h"
  29. #endif
  30. #ifdef USE_STB
  31. #include "./external/bc1_stb.h"
  32. #endif
  33. #ifdef USE_SQUISH
  34. #include "./external/bc1_squish.h"
  35. #endif
  36. #ifdef USE_HUMUS
  37. #include "./external/bc1_humus.h"
  38. #endif
  39. // Compress a BC1 block
  40. static CGU_Vec2ui CompressBlockBC1_UNORM2(CGU_Vec4f rgbblockf[BLOCK_SIZE_4X4], CMP_BC15Options BC15options)
  41. {
  42. #if (defined(USE_CMP)||defined(USE_BETSY)||defined(USE_ICBC)||defined(USE_INT)||defined(USE_RGBCX)||defined(USE_SQUISH)||defined(USE_HUMUS))
  43. #ifdef USE_CMP
  44. return CompressBlockBC1_NORMALIZED( rgbblockf,
  45. BC15options);
  46. #endif
  47. #ifdef USE_BETSY
  48. CGU_Vec3f rgbblock3f[BLOCK_SIZE_4X4];
  49. for (int i=0; i<= BLOCK_SIZE_4X4; i++)
  50. rgbblock3f[i] = rgbblockf[i].rgb;
  51. return CompressBlockBC1_BETSY(rgbblock3f, BC15options.m_fquality, BC15options.m_bIsSRGB);
  52. #endif
  53. #ifdef USE_ICBC
  54. return CompressBlockBC1_ICBC(rgbblockf, BC15options.m_fquality, BC15options.m_bIsSRGB);
  55. #endif
  56. #ifdef USE_INT
  57. return CompressBlockBC1_INT(rgbblockf, BC15options.m_fquality, BC15options.m_bIsSRGB);
  58. #endif
  59. #ifdef USE_RGBCX
  60. return CompressBlockBC1_RGBCX(rgbblockf, BC15options.m_fquality, BC15options.m_bIsSRGB);
  61. #endif
  62. #ifdef USE_STB
  63. return CompressBlockBC1_STB(rgbblockf, BC15options.m_fquality, BC15options.m_bIsSRGB);
  64. #endif
  65. #ifdef USE_SQUISH
  66. return CompressBlockBC1_SQUISH(rgbblockf, BC15options.m_fquality, BC15options.m_bIsSRGB);
  67. #endif
  68. #ifdef USE_HUMUS
  69. CGU_Vec3f rgbblock3f[BLOCK_SIZE_4X4];
  70. for (int i=0; i<= BLOCK_SIZE_4X4; i++)
  71. rgbblock3f[i] = rgbblockf[i].rgb;
  72. return CompressBlockBC1_HUMUS(rgbblock3f, BC15options.m_fquality, BC15options.m_bIsSRGB);
  73. #endif
  74. #else
  75. CMP_UNUSED(BC15options);
  76. CMP_UNUSED(rgbblockf);
  77. CGU_Vec2ui cmpBlock = {0,0};
  78. return cmpBlock;
  79. #endif
  80. }