aboutsummaryrefslogtreecommitdiff
path: root/xbmc/guilib/TextureFormats.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/guilib/TextureFormats.h')
-rw-r--r--xbmc/guilib/TextureFormats.h155
1 files changed, 155 insertions, 0 deletions
diff --git a/xbmc/guilib/TextureFormats.h b/xbmc/guilib/TextureFormats.h
index 2aab71a947..5b7d87c5fb 100644
--- a/xbmc/guilib/TextureFormats.h
+++ b/xbmc/guilib/TextureFormats.h
@@ -25,4 +25,159 @@ enum XB_FMT
XB_FMT_MASK = 0xFFFF,
XB_FMT_OPAQUE = 0x10000,
};
+
+enum KD_TEX_FMT
+{
+ KD_TEX_FMT_UNKNOWN = 0x0000,
+
+ // Legacy XB_FMT formats family
+ KD_TEX_FMT_LEGACY = 0x0000,
+
+ // SDR texture family
+ KD_TEX_FMT_SDR = 0x1000,
+ KD_TEX_FMT_SDR_R8 = 0x1000, // 8bpp, single channel
+ KD_TEX_FMT_SDR_RG8 = 0x1100, // 16bpp, dual channel
+ KD_TEX_FMT_SDR_R5G6B5 = 0x1200, // 16bpp, 5/6 bit per color channel
+ KD_TEX_FMT_SDR_RGB5_A1 = 0x1300, // 16bpp, 5 bit per color channel, pt-alpha
+ KD_TEX_FMT_SDR_RGBA4 = 0x1400, // 16bpp, 4 bit per channel
+ KD_TEX_FMT_SDR_RGB8 = 0x1500, // 24bpp, 8 bit per channel, no alpha (unsuitable for GPUs!)
+ KD_TEX_FMT_SDR_RGBA8 = 0x1600, // 32bpp, 8 bit per channel, RGBA order
+ KD_TEX_FMT_SDR_BGRA8 = 0x1700, // 32bpp, 8 bit per channel, BGRA order
+
+ // HDR texture family
+ KD_TEX_FMT_HDR = 0x2000,
+ KD_TEX_FMT_HDR_R16f = 0x2100, // 16bpp, single channel float
+ KD_TEX_FMT_HDR_RG16f = 0x2200, // 32bpp, dual channel float
+ KD_TEX_FMT_HDR_R11F_G11F_B10F = 0x2300, // 32bpp, 6e5/5e5 per color channel
+ KD_TEX_FMT_HDR_RGB9_E5 = 0x2400, // 32bpp, 9 bit color, shared 5 bit exponent
+ KD_TEX_FMT_HDR_RGB10_A2 = 0x2500, // 32bpp, 10 bit color, 2 bit alpha
+ KD_TEX_FMT_HDR_RGBA16f = 0x2600, // 64bpp, four channel float
+
+ // YUV texture family
+ KD_TEX_FMT_YUV = 0x3000,
+ KD_TEX_FMT_YUV_YUYV8 = 0x3000, // 16bpp, 4:2:2 packed
+
+ // S3TC texture family
+ KD_TEX_FMT_S3TC = 0x4000,
+ KD_TEX_FMT_S3TC_RGB8 = 0x4000, // 4bpp, RGB (BC1)
+ KD_TEX_FMT_S3TC_RGB8_A1 = 0x4100, // 4bpp, RGB, pt-alpha (BC1)
+ KD_TEX_FMT_S3TC_RGB8_A4 = 0x4200, // 8bpp, RGB, 4 bit alpha (BC2)
+ KD_TEX_FMT_S3TC_RGBA8 = 0x4300, // 8bpp, RGBA (BC3)
+
+ // RGTC (LATC) texture family
+ KD_TEX_FMT_RGTC = 0x5000,
+ KD_TEX_FMT_RGTC_R11 = 0x5000, // 4bpp, single channel (BC4)
+ KD_TEX_FMT_RGTC_RG11 = 0x5100, // 8bpp, dual channel (BC5)
+
+ // BPTC texture family
+ KD_TEX_FMT_BPTC = 0x6000,
+ KD_TEX_FMT_BPTC_RGB16F = 0x6000, // 8bpp, HDR (BC6H float)
+ KD_TEX_FMT_BPTC_RGBA8 = 0x6100, // 8bpp, LDR (BC7 unorm)
+
+ // ETC1 texture family
+ KD_TEX_FMT_ETC1 = 0x7000,
+ KD_TEX_FMT_ETC1_RGB8 = 0x7000, // 4bpp, RGB
+
+ // ETC2 texture family
+ KD_TEX_FMT_ETC2 = 0x8000,
+ KD_TEX_FMT_ETC2_R11 = 0x8100, // 4bpp, single channel (EAC)
+ KD_TEX_FMT_ETC2_RG11 = 0x8200, // 8bpp, dual channel (EAC)
+ KD_TEX_FMT_ETC2_RGB8 = 0x8300, // 4bpp, RGB
+ KD_TEX_FMT_ETC2_RGB8_A1 = 0x8400, // 4bpp, RGB, pt-alpha
+ KD_TEX_FMT_ETC2_RGBA8 = 0x8500, // 8bpp, RGB, alpha EAC
+
+ // ASTC LDR texture family
+ // Bitrate varies from 8bpp (4x4 tile) to 0.89bpp (12x12 tile).
+ KD_TEX_FMT_ASTC_LDR = 0x9000,
+ KD_TEX_FMT_ASTC_LDR_4x4 = 0x9000,
+ KD_TEX_FMT_ASTC_LDR_5x4 = 0x9100,
+ KD_TEX_FMT_ASTC_LDR_5x5 = 0x9200,
+ KD_TEX_FMT_ASTC_LDR_6x5 = 0x9300,
+ KD_TEX_FMT_ASTC_LDR_6x6 = 0x9400,
+ KD_TEX_FMT_ASTC_LDR_8x5 = 0x9500,
+ KD_TEX_FMT_ASTC_LDR_8x6 = 0x9600,
+ KD_TEX_FMT_ASTC_LDR_8x8 = 0x9700,
+ KD_TEX_FMT_ASTC_LDR_10x5 = 0x9800,
+ KD_TEX_FMT_ASTC_LDR_10x6 = 0x9900,
+ KD_TEX_FMT_ASTC_LDR_10x8 = 0x9A00,
+ KD_TEX_FMT_ASTC_LDR_10x10 = 0x9B00,
+ KD_TEX_FMT_ASTC_LDR_12x10 = 0x9C00,
+ KD_TEX_FMT_ASTC_LDR_12x12 = 0x9D00,
+
+ // ASTC HDR texture family
+ // Bitrate varies from 8bpp (4x4 tile) to 0.89bpp (12x12 tile).
+ KD_TEX_FMT_ASTC_HDR = 0xA000,
+ KD_TEX_FMT_ASTC_HDR_4x4 = 0xA000,
+ KD_TEX_FMT_ASTC_HDR_5x4 = 0xA100,
+ KD_TEX_FMT_ASTC_HDR_5x5 = 0xA200,
+ KD_TEX_FMT_ASTC_HDR_6x5 = 0xA300,
+ KD_TEX_FMT_ASTC_HDR_6x6 = 0xA400,
+ KD_TEX_FMT_ASTC_HDR_8x5 = 0xA500,
+ KD_TEX_FMT_ASTC_HDR_8x6 = 0xA600,
+ KD_TEX_FMT_ASTC_HDR_8x8 = 0xA700,
+ KD_TEX_FMT_ASTC_HDR_10x5 = 0xA800,
+ KD_TEX_FMT_ASTC_HDR_10x6 = 0xA900,
+ KD_TEX_FMT_ASTC_HDR_10x8 = 0xAA00,
+ KD_TEX_FMT_ASTC_HDR_10x10 = 0xAB00,
+ KD_TEX_FMT_ASTC_HDR_12x10 = 0xAC00,
+ KD_TEX_FMT_ASTC_HDR_12x12 = 0xAD00,
+
+ KD_TEX_FMT_TYPE_MASK = 0xF000,
+
+ KD_TEX_FMT_MASK = 0xFFFF,
+};
+
+// Alpha handling
+enum KD_TEX_ALPHA
+{
+ KD_TEX_ALPHA_STRAIGHT = 0x00000, // Straight (unmultiplied) alpha
+ KD_TEX_ALPHA_OPAQUE = 0x10000, // No alpha
+ KD_TEX_ALPHA_PREMULTIPLIED = 0x20000, // Premultiplied alpha
+
+ KD_TEX_ALPHA_MASK = 0xF0000,
+};
+
+// Texture component swizzle or effect
+enum KD_TEX_SWIZ
+{
+ KD_TEX_SWIZ_RGBA = 0x000000, // No swizzling
+ KD_TEX_SWIZ_RGB1 = 0x100000, // Normal swizzle, ignoring alpha
+ KD_TEX_SWIZ_RRR1 = 0x200000, // Luminance
+ KD_TEX_SWIZ_111R = 0x300000, // Alpha
+ KD_TEX_SWIZ_RRRG = 0x400000, // Luminance-Alpha
+ KD_TEX_SWIZ_RRRR = 0x500000, // Intensity
+ KD_TEX_SWIZ_GGG1 = 0x600000, // Luminance (ETC1/BC1)
+ KD_TEX_SWIZ_111G = 0x700000, // Alpha (ETC1/BC1)
+ KD_TEX_SWIZ_GGGA = 0x800000, // Luminance-Alpha (BC2/BC3)
+ KD_TEX_SWIZ_GGGG = 0x900000, // Intensity (ETC1/BC1)
+
+ KD_TEX_SWIZ_SDF = 0xa00000, // Red channel contains a SDF
+ KD_TEX_SWIZ_RGB_SDF = 0xb00000, // RGB8 texture with a SDF packed in the alpha channel
+ KD_TEX_SWIZ_MSDF = 0xc00000, // Encoded MSDF in the color channels, Alpha is ignored
+
+ KD_TEX_SWIZ_MASK = 0xF00000,
+};
+
+// Color space
+enum KD_TEX_COL
+{
+ KD_TEX_COL_REC709 = 0x0000000, // REC709/sRGB color space
+ KD_TEX_COL_REC2020 = 0x1000000, // REC2020 color space
+
+ KD_TEX_COL_MASK = 0xF000000,
+};
+
+// Transfer function
+enum KD_TEX_TRANSFER
+{
+ KD_TEX_TRANSFER_SRGB = 0x00000000,
+ KD_TEX_TRANSFER_REC709 = 0x10000000,
+ KD_TEX_TRANSFER_HLG = 0x20000000,
+ KD_TEX_TRANSFER_LINEAR = 0x30000000,
+ KD_TEX_TRANSFER_SQUARED = 0x40000000,
+ KD_TEX_TRANSFER_PQ = 0x50000000,
+
+ KD_TEX_TRANSFER_MASK = 0xF0000000,
+};
+
// clang-format on