diff --git a/crates/renderer/src/images.rs b/crates/renderer/src/images.rs index c8d655e..7575aa0 100644 --- a/crates/renderer/src/images.rs +++ b/crates/renderer/src/images.rs @@ -624,3 +624,630 @@ pub const SUBRESOURCERANGE_COLOR_ALL: vk::ImageSubresourceRange = vk::ImageSubre base_array_layer: 0, layer_count: vk::REMAINING_ARRAY_LAYERS, }; + +// pub(crate) enum FormatClass { +// Bit8, +// Bit8Alpha, +// Bit16, +// Bit24, +// Bit32, +// Bit48, +// Bit64, +// Bit96, +// Bit128, +// Bit192, +// Bit256, +// D16, +// D24, +// D32, +// S8, +// D16S8, +// D24S8, +// D32S8, +// Bc1Rrb, +// Bc1Rgba, +// Bc2, +// Bc3, +// Bc4, +// Bc5, +// Bc6H, +// BC7, +// Etc2Rgb, +// Etc2Rgba, +// Etc2EacRgba, +// EacR, +// EacRg, + +// // Astc formats: +// Astc4x4, +// Astc5x4, +// Astc5x5, +// Astc6x5, +// Astc6x6, +// Astc8x5, +// Astc8x6, +// Astc8x8, +// Astc10x5, +// Astc10x6, +// Astc10x8, +// Astc10x10, +// Astc12x10, +// Astc12x12, + +// // Astc 3d formats: +// Astc3x3x3, +// Astc4x3x3, +// Astc4x4x3, +// Astc4x4x4, +// Astc5x4x4, +// Astc5x5x4, +// Astc5x5x5, +// Astc6x5x5, +// Astc6x6x5, +// Astc6x6x6, + +// // padded color formats: +// Bit32Gbgr8, +// Bit32Gbrg8, +// Bit64Rgba10, +// Bit64Gbgr10, +// Bit64Bgrg10, +// Bit64Rgba12, +// Bit64Gbgr12, +// Bit64Bgrg12, + +// Bit64Rgba14, + +// Bit64Rgba16, +// Bit64Gbgr16, +// Bit64Bgrg16, + +// // planar formats: +// Bit8Biplane420, +// Bit8Biplane422, +// Bit8Biplane444, +// Bit8Triplane420, +// Bit8Triplane422, +// Bit8Triplane444, + +// Bit10Biplane420, +// Bit10Biplane422, +// Bit10Biplane444, +// Bit10Triplane420, +// Bit10Triplane422, +// Bit10Triplane444, + +// Bit12Biplane420, +// Bit12Biplane422, +// Bit12Biplane444, +// Bit12Triplane420, +// Bit12Triplane422, +// Bit12Triplane444, + +// Bit16Biplane420, +// Bit16Biplane422, +// Bit16Biplane444, +// Bit16Triplane420, +// Bit16Triplane422, +// Bit16Triplane444, + +// // PVRTC formats: +// Pvrtc1Bpp2, +// Pvrtc1Bpp4, +// Pvrtc2Bpp2, +// Pvrtc2Bpp4, +// } +// pub(crate) struct FormatInfo { +// class: FormatClass, +// texel_size: u32, +// block_extent: (u32, u32, u32), +// texels_per_block: u32, +// } + +// impl From for FormatClass { +// fn from(value: vk::Format) -> Self { +// use vk::Format as F; +// #[rustfmt::skip] +// match value { +// F::R4G4_UNORM_PACK8 +// | F::R8_SNORM +// | F::R8_USCALED +// | F::R8_SSCALED +// | F::R8_UINT +// | F::R8_SINT +// | F::R8_SRGB +// => Self::Bit8, +// F::A1R5G5B5_UNORM_PACK16 +// | F::R4G4B4A4_UNORM_PACK16 +// | F::B4G4R4A4_UNORM_PACK16 +// | F::R5G6B5_UNORM_PACK16 +// | F::R10X6_UNORM_PACK16 +// |F::R12X4_UNORM_PACK16 +// | F::R8G8_UNORM => Self::Bit16, +// _ => unimplemented!("format class for format {:?}", value), +// } +// } +// } + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum FormatClass { + Bits8, + Bits16, + Alpha8, + Bits24, + Bits32, + Bits48, + Bits64, + Bits96, + Bits128, + Bits192, + Bits256, + + D16, + D24, + D32, + S8, + D16S8, + D24S8, + D32S8, + + Bc1Rgb, + Bc1Rgba, + Bc2, + Bc3, + Bc4, + Bc5, + Bc6h, + Bc7, + + Etc2Rgb, + Etc2Rgba, + Etc2EacRgba, + EacR, + EacRg, + + Astc4x4, + Astc5x4, + Astc5x5, + Astc6x5, + Astc6x6, + Astc8x5, + Astc8x6, + Astc8x8, + Astc10x5, + Astc10x6, + Astc10x8, + Astc10x10, + Astc12x10, + Astc12x12, + + YuvG8B8G8R8_422, + YuvB8G8R8G8_422, + + YuvG8B8R8Triplane420, + YuvG8B8R8Biplane420, + YuvG8B8R8Triplane422, + YuvG8B8R8Biplane422, + YuvG8B8R8Triplane444, + YuvG10X6B10X6R10X6Triplane420, + YuvG10X6B10X6R10X6Biplane420, + YuvG10X6B10X6R10X6Triplane422, + YuvG10X6B10X6R10X6Biplane422, + YuvG10X6B10X6R10X6Triplane444, + YuvG12X4B12X4R12X4Triplane420, + YuvG12X4B12X4R12X4Biplane420, + YuvG12X4B12X4R12X4Triplane422, + YuvG12X4B12X4R12X4Biplane422, + YuvG12X4B12X4R12X4Triplane444, + YuvG16B16R16Triplane420, + YuvG16B16R16Biplane420, + YuvG16B16R16Triplane422, + YuvG16B16R16Biplane422, + YuvG16B16R16Triplane444, + + YuvG8B8R8Biplane444, + YuvG10X6B10X6R10X6Biplane444, + YuvG12X4B12X4R12X4Biplane444, + YuvG16B16R16Biplane444, + + Bits64R10G10B10A10, + Bits64G10B10G10R10_422, + Bits64B10G10R10G10_422, + Bits64R12G12B12A12, + Bits64G12B12G12R12_422, + Bits64B12G12R12G12_422, + Bits64G16B16G16R16_422, + Bits64B16G16R16G16_422, + Bits64R14G14B14A14, + + Pvrtc1_2bpp, + Pvrtc1_4bpp, + Pvrtc2_2bpp, + Pvrtc2_4bpp, + + Astc3x3x3, + Astc4x3x3, + Astc4x4x3, + Astc4x4x4, + Astc5x4x4, + Astc5x5x4, + Astc5x5x5, + Astc6x5x5, + Astc6x6x5, + Astc6x6x6, + + YuvG14X2B14X2R14X2Biplane420, + YuvG14X2B14X2R14X2Biplane422, +} + +impl From for FormatClass { + fn from(format: vk::Format) -> Self { + use vk::Format as F; + match format { + // 8-bit + F::R4G4_UNORM_PACK8 + | F::R8_UNORM + | F::R8_SNORM + | F::R8_USCALED + | F::R8_SSCALED + // | F::R8_BOOL_ARM + // | F::R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM + // | F::R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM + | F::R8_UINT + | F::R8_SINT + | F::R8_SRGB => FormatClass::Bits8, + + // 16-bit + F::A1B5G5R5_UNORM_PACK16_KHR + | F::R10X6_UNORM_PACK16 + | F::R12X4_UNORM_PACK16 + | F::A4R4G4B4_UNORM_PACK16 + | F::A4B4G4R4_UNORM_PACK16 + // | F::R10X6_UINT_PACK16_ARM + // | F::R12X4_UINT_PACK16_ARM + // | F::R14X2_UINT_PACK16_ARM + // | F::R14X2_UNORM_PACK16_ARM + // | F::R16_SFLOAT_FPENCODING_BFLOAT16_ARM + | F::R4G4B4A4_UNORM_PACK16 + | F::B4G4R4A4_UNORM_PACK16 + | F::R5G6B5_UNORM_PACK16 + | F::B5G6R5_UNORM_PACK16 + | F::R5G5B5A1_UNORM_PACK16 + | F::B5G5R5A1_UNORM_PACK16 + | F::A1R5G5B5_UNORM_PACK16 + | F::R8G8_UNORM + | F::R8G8_SNORM + | F::R8G8_USCALED + | F::R8G8_SSCALED + | F::R8G8_UINT + | F::R8G8_SINT + | F::R8G8_SRGB + | F::R16_UNORM + | F::R16_SNORM + | F::R16_USCALED + | F::R16_SSCALED + | F::R16_UINT + | F::R16_SINT + | F::R16_SFLOAT => FormatClass::Bits16, + + // 8-bit alpha + F::A8_UNORM_KHR => FormatClass::Alpha8, + + // 24-bit + F::R8G8B8_UNORM + | F::R8G8B8_SNORM + | F::R8G8B8_USCALED + | F::R8G8B8_SSCALED + | F::R8G8B8_UINT + | F::R8G8B8_SINT + | F::R8G8B8_SRGB + | F::B8G8R8_UNORM + | F::B8G8R8_SNORM + | F::B8G8R8_USCALED + | F::B8G8R8_SSCALED + | F::B8G8R8_UINT + | F::B8G8R8_SINT + | F::B8G8R8_SRGB => FormatClass::Bits24, + + // 32-bit + F::R10X6G10X6_UNORM_2PACK16 + | F::R12X4G12X4_UNORM_2PACK16 + // | F::R16G16_SFIXED5_NV + // | F::R10X6G10X6_UINT_2PACK16_ARM + // | F::R12X4G12X4_UINT_2PACK16_ARM + // | F::R14X2G14X2_UINT_2PACK16_ARM + // | F::R14X2G14X2_UNORM_2PACK16_ARM + | F::R8G8B8A8_UNORM + | F::R8G8B8A8_SNORM + | F::R8G8B8A8_USCALED + | F::R8G8B8A8_SSCALED + | F::R8G8B8A8_UINT + | F::R8G8B8A8_SINT + | F::R8G8B8A8_SRGB + | F::B8G8R8A8_UNORM + | F::B8G8R8A8_SNORM + | F::B8G8R8A8_USCALED + | F::B8G8R8A8_SSCALED + | F::B8G8R8A8_UINT + | F::B8G8R8A8_SINT + | F::B8G8R8A8_SRGB + | F::A8B8G8R8_UNORM_PACK32 + | F::A8B8G8R8_SNORM_PACK32 + | F::A8B8G8R8_USCALED_PACK32 + | F::A8B8G8R8_SSCALED_PACK32 + | F::A8B8G8R8_UINT_PACK32 + | F::A8B8G8R8_SINT_PACK32 + | F::A8B8G8R8_SRGB_PACK32 + | F::A2R10G10B10_UNORM_PACK32 + | F::A2R10G10B10_SNORM_PACK32 + | F::A2R10G10B10_USCALED_PACK32 + | F::A2R10G10B10_SSCALED_PACK32 + | F::A2R10G10B10_UINT_PACK32 + | F::A2R10G10B10_SINT_PACK32 + | F::A2B10G10R10_UNORM_PACK32 + | F::A2B10G10R10_SNORM_PACK32 + | F::A2B10G10R10_USCALED_PACK32 + | F::A2B10G10R10_SSCALED_PACK32 + | F::A2B10G10R10_UINT_PACK32 + | F::A2B10G10R10_SINT_PACK32 + | F::R16G16_UNORM + | F::R16G16_SNORM + | F::R16G16_USCALED + | F::R16G16_SSCALED + | F::R16G16_UINT + | F::R16G16_SINT + | F::R16G16_SFLOAT + | F::R32_UINT + | F::R32_SINT + | F::R32_SFLOAT + | F::B10G11R11_UFLOAT_PACK32 + | F::E5B9G9R9_UFLOAT_PACK32 => FormatClass::Bits32, + + // 48-bit + F::R16G16B16_UNORM + | F::R16G16B16_SNORM + | F::R16G16B16_USCALED + | F::R16G16B16_SSCALED + | F::R16G16B16_UINT + | F::R16G16B16_SINT + | F::R16G16B16_SFLOAT => FormatClass::Bits48, + + // 64-bit + F::R16G16B16A16_UNORM + | F::R16G16B16A16_SNORM + | F::R16G16B16A16_USCALED + | F::R16G16B16A16_SSCALED + | F::R16G16B16A16_UINT + | F::R16G16B16A16_SINT + | F::R16G16B16A16_SFLOAT + | F::R32G32_UINT + | F::R32G32_SINT + | F::R32G32_SFLOAT + | F::R64_UINT + | F::R64_SINT + | F::R64_SFLOAT => FormatClass::Bits64, + + // 96-bit + F::R32G32B32_UINT | F::R32G32B32_SINT | F::R32G32B32_SFLOAT => FormatClass::Bits96, + + // 128-bit + F::R32G32B32A32_UINT + | F::R32G32B32A32_SINT + | F::R32G32B32A32_SFLOAT + | F::R64G64_UINT + | F::R64G64_SINT + | F::R64G64_SFLOAT => FormatClass::Bits128, + + // 192-bit + F::R64G64B64_UINT | F::R64G64B64_SINT | F::R64G64B64_SFLOAT => FormatClass::Bits192, + + // 256-bit + F::R64G64B64A64_UINT | F::R64G64B64A64_SINT | F::R64G64B64A64_SFLOAT => { + FormatClass::Bits256 + } + + // Depth / Stencil + F::D16_UNORM => FormatClass::D16, + F::X8_D24_UNORM_PACK32 => FormatClass::D24, + F::D32_SFLOAT => FormatClass::D32, + F::S8_UINT => FormatClass::S8, + F::D16_UNORM_S8_UINT => FormatClass::D16S8, + F::D24_UNORM_S8_UINT => FormatClass::D24S8, + F::D32_SFLOAT_S8_UINT => FormatClass::D32S8, + + // BCn + F::BC1_RGB_UNORM_BLOCK | F::BC1_RGB_SRGB_BLOCK => FormatClass::Bc1Rgb, + F::BC1_RGBA_UNORM_BLOCK | F::BC1_RGBA_SRGB_BLOCK => FormatClass::Bc1Rgba, + F::BC2_UNORM_BLOCK | F::BC2_SRGB_BLOCK => FormatClass::Bc2, + F::BC3_UNORM_BLOCK | F::BC3_SRGB_BLOCK => FormatClass::Bc3, + F::BC4_UNORM_BLOCK | F::BC4_SNORM_BLOCK => FormatClass::Bc4, + F::BC5_UNORM_BLOCK | F::BC5_SNORM_BLOCK => FormatClass::Bc5, + F::BC6H_UFLOAT_BLOCK | F::BC6H_SFLOAT_BLOCK => FormatClass::Bc6h, + F::BC7_UNORM_BLOCK | F::BC7_SRGB_BLOCK => FormatClass::Bc7, + + // ETC2 / EAC + F::ETC2_R8G8B8_UNORM_BLOCK | F::ETC2_R8G8B8_SRGB_BLOCK => FormatClass::Etc2Rgb, + F::ETC2_R8G8B8A1_UNORM_BLOCK | F::ETC2_R8G8B8A1_SRGB_BLOCK => FormatClass::Etc2Rgba, + F::ETC2_R8G8B8A8_UNORM_BLOCK | F::ETC2_R8G8B8A8_SRGB_BLOCK => FormatClass::Etc2EacRgba, + F::EAC_R11_UNORM_BLOCK | F::EAC_R11_SNORM_BLOCK => FormatClass::EacR, + F::EAC_R11G11_UNORM_BLOCK | F::EAC_R11G11_SNORM_BLOCK => FormatClass::EacRg, + + // ASTC 2D + F::ASTC_4X4_SFLOAT_BLOCK | F::ASTC_4X4_UNORM_BLOCK | F::ASTC_4X4_SRGB_BLOCK => { + FormatClass::Astc4x4 + } + F::ASTC_5X4_SFLOAT_BLOCK | F::ASTC_5X4_UNORM_BLOCK | F::ASTC_5X4_SRGB_BLOCK => { + FormatClass::Astc5x4 + } + F::ASTC_5X5_SFLOAT_BLOCK | F::ASTC_5X5_UNORM_BLOCK | F::ASTC_5X5_SRGB_BLOCK => { + FormatClass::Astc5x5 + } + F::ASTC_6X5_SFLOAT_BLOCK | F::ASTC_6X5_UNORM_BLOCK | F::ASTC_6X5_SRGB_BLOCK => { + FormatClass::Astc6x5 + } + F::ASTC_6X6_SFLOAT_BLOCK | F::ASTC_6X6_UNORM_BLOCK | F::ASTC_6X6_SRGB_BLOCK => { + FormatClass::Astc6x6 + } + F::ASTC_8X5_SFLOAT_BLOCK | F::ASTC_8X5_UNORM_BLOCK | F::ASTC_8X5_SRGB_BLOCK => { + FormatClass::Astc8x5 + } + F::ASTC_8X6_SFLOAT_BLOCK | F::ASTC_8X6_UNORM_BLOCK | F::ASTC_8X6_SRGB_BLOCK => { + FormatClass::Astc8x6 + } + F::ASTC_8X8_SFLOAT_BLOCK | F::ASTC_8X8_UNORM_BLOCK | F::ASTC_8X8_SRGB_BLOCK => { + FormatClass::Astc8x8 + } + F::ASTC_10X5_SFLOAT_BLOCK | F::ASTC_10X5_UNORM_BLOCK | F::ASTC_10X5_SRGB_BLOCK => { + FormatClass::Astc10x5 + } + F::ASTC_10X6_SFLOAT_BLOCK | F::ASTC_10X6_UNORM_BLOCK | F::ASTC_10X6_SRGB_BLOCK => { + FormatClass::Astc10x6 + } + F::ASTC_10X8_SFLOAT_BLOCK | F::ASTC_10X8_UNORM_BLOCK | F::ASTC_10X8_SRGB_BLOCK => { + FormatClass::Astc10x8 + } + F::ASTC_10X10_SFLOAT_BLOCK | F::ASTC_10X10_UNORM_BLOCK | F::ASTC_10X10_SRGB_BLOCK => { + FormatClass::Astc10x10 + } + F::ASTC_12X10_SFLOAT_BLOCK | F::ASTC_12X10_UNORM_BLOCK | F::ASTC_12X10_SRGB_BLOCK => { + FormatClass::Astc12x10 + } + F::ASTC_12X12_SFLOAT_BLOCK | F::ASTC_12X12_UNORM_BLOCK | F::ASTC_12X12_SRGB_BLOCK => { + FormatClass::Astc12x12 + } + + // Packed/YCbCr-ish (as listed) + F::G8B8G8R8_422_UNORM => FormatClass::YuvG8B8G8R8_422, + F::B8G8R8G8_422_UNORM => FormatClass::YuvB8G8R8G8_422, + + F::G8_B8_R8_3PLANE_420_UNORM => FormatClass::YuvG8_B8_R8_3Plane_420, + F::G8_B8R8_2PLANE_420_UNORM => FormatClass::YuvG8_B8R8_2Plane_420, + F::G8_B8_R8_3PLANE_422_UNORM => FormatClass::YuvG8_B8_R8_3Plane_422, + F::G8_B8R8_2PLANE_422_UNORM => FormatClass::YuvG8_B8R8_2Plane_422, + F::G8_B8_R8_3PLANE_444_UNORM => FormatClass::YuvG8_B8_R8_3Plane_444, + + F::G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 => { + FormatClass::YuvG10X6_B10X6_R10X6_3Plane_420 + } + F::G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 => { + FormatClass::YuvG10X6_B10X6R10X6_2Plane_420 + } + F::G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 => { + FormatClass::YuvG10X6_B10X6_R10X6_3Plane_422 + } + F::G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 => { + FormatClass::YuvG10X6_B10X6R10X6_2Plane_422 + } + F::G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 => { + FormatClass::YuvG10X6_B10X6_R10X6_3Plane_444 + } + + F::G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 => { + FormatClass::YuvG12X4_B12X4_R12X4_3Plane_420 + } + F::G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 => { + FormatClass::YuvG12X4_B12X4R12X4_2Plane_420 + } + F::G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 => { + FormatClass::YuvG12X4_B12X4_R12X4_3Plane_422 + } + F::G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 => { + FormatClass::YuvG12X4_B12X4R12X4_2Plane_422 + } + F::G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 => { + FormatClass::YuvG12X4_B12X4_R12X4_3Plane_444 + } + + F::G16_B16_R16_3PLANE_420_UNORM => FormatClass::YuvG16_B16_R16_3Plane_420, + F::G16_B16R16_2PLANE_420_UNORM => FormatClass::YuvG16_B16R16_2Plane_420, + F::G16_B16_R16_3PLANE_422_UNORM => FormatClass::YuvG16_B16_R16_3Plane_422, + F::G16_B16R16_2PLANE_422_UNORM => FormatClass::YuvG16_B16R16_2Plane_422, + F::G16_B16_R16_3PLANE_444_UNORM => FormatClass::YuvG16_B16_R16_3Plane_444, + + // 2-plane 444 (additional section) + F::G8_B8R8_2PLANE_444_UNORM => FormatClass::YuvG8_B8R8_2Plane_444, + F::G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 => { + FormatClass::YuvG10X6_B10X6R10X6_2Plane_444 + } + F::G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 => { + FormatClass::YuvG12X4_B12X4R12X4_2Plane_444 + } + F::G16_B16R16_2PLANE_444_UNORM => FormatClass::YuvG16_B16R16_2Plane_444, + + // 64-bit special grouped headings from the markdown + F::R10X6G10X6B10X6A10X6_UNORM_4PACK16 /* | F::R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM */ + => { + FormatClass::Bits64_R10G10B10A10 + } + F::G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 => FormatClass::Bits64_G10B10G10R10_422, + F::B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 => FormatClass::Bits64_B10G10R10G10_422, + F::R12X4G12X4B12X4A12X4_UNORM_4PACK16 /*| F::R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM */ + => { + FormatClass::Bits64_R12G12B12A12 + } + F::G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 => FormatClass::Bits64_G12B12G12R12_422, + F::B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 => FormatClass::Bits64_B12G12R12G12_422, + F::G16B16G16R16_422_UNORM => FormatClass::Bits64_G16B16G16R16_422, + F::B16G16R16G16_422_UNORM => FormatClass::Bits64_B16G16R16G16_422, + + // F::R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM + // | F::R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM => FormatClass::Bits64_R14G14B14A14, + + // PVRTC + F::PVRTC1_2BPP_UNORM_BLOCK_IMG | F::PVRTC1_2BPP_SRGB_BLOCK_IMG => { + FormatClass::Pvrtc1_2bpp + } + F::PVRTC1_4BPP_UNORM_BLOCK_IMG | F::PVRTC1_4BPP_SRGB_BLOCK_IMG => { + FormatClass::Pvrtc1_4bpp + } + F::PVRTC2_2BPP_UNORM_BLOCK_IMG | F::PVRTC2_2BPP_SRGB_BLOCK_IMG => { + FormatClass::Pvrtc2_2bpp + } + F::PVRTC2_4BPP_UNORM_BLOCK_IMG | F::PVRTC2_4BPP_SRGB_BLOCK_IMG => { + FormatClass::Pvrtc2_4bpp + } + + // ASTC 3D (EXT) + // F::ASTC_3X3X3_UNORM_BLOCK_EXT + // | F::ASTC_3X3X3_SRGB_BLOCK_EXT + // | F::ASTC_3X3X3_SFLOAT_BLOCK_EXT => FormatClass::Astc3x3x3, + // F::ASTC_4X3X3_UNORM_BLOCK_EXT + // | F::ASTC_4X3X3_SRGB_BLOCK_EXT + // | F::ASTC_4X3X3_SFLOAT_BLOCK_EXT => FormatClass::Astc4x3x3, + // F::ASTC_4X4X3_UNORM_BLOCK_EXT + // | F::ASTC_4X4X3_SRGB_BLOCK_EXT + // | F::ASTC_4X4X3_SFLOAT_BLOCK_EXT => FormatClass::Astc4x4x3, + // F::ASTC_4X4X4_UNORM_BLOCK_EXT + // | F::ASTC_4X4X4_SRGB_BLOCK_EXT + // | F::ASTC_4X4X4_SFLOAT_BLOCK_EXT => FormatClass::Astc4x4x4, + // F::ASTC_5X4X4_UNORM_BLOCK_EXT + // | F::ASTC_5X4X4_SRGB_BLOCK_EXT + // | F::ASTC_5X4X4_SFLOAT_BLOCK_EXT => FormatClass::Astc5x4x4, + // F::ASTC_5X5X4_UNORM_BLOCK_EXT + // | F::ASTC_5X5X4_SRGB_BLOCK_EXT + // | F::ASTC_5X5X4_SFLOAT_BLOCK_EXT => FormatClass::Astc5x5x4, + // F::ASTC_5X5X5_UNORM_BLOCK_EXT + // | F::ASTC_5X5X5_SRGB_BLOCK_EXT + // | F::ASTC_5X5X5_SFLOAT_BLOCK_EXT => FormatClass::Astc5x5x5, + // F::ASTC_6X5X5_UNORM_BLOCK_EXT + // | F::ASTC_6X5X5_SRGB_BLOCK_EXT + // | F::ASTC_6X5X5_SFLOAT_BLOCK_EXT => FormatClass::Astc6x5x5, + // F::ASTC_6X6X5_UNORM_BLOCK_EXT + // | F::ASTC_6X6X5_SRGB_BLOCK_EXT + // | F::ASTC_6X6X5_SFLOAT_BLOCK_EXT => FormatClass::Astc6x6x5, + // F::ASTC_6X6X6_UNORM_BLOCK_EXT + // | F::ASTC_6X6X6_SRGB_BLOCK_EXT + // | F::ASTC_6X6X6_SFLOAT_BLOCK_EXT => FormatClass::Astc6x6x6, + + // // 14-bit 2-plane + // F::G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM => { + // FormatClass::YuvG14X2_B14X2R14X2_2Plane_420 + // } + // F::G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM => { + // FormatClass::YuvG14X2_B14X2R14X2_2Plane_422 + // } + + _ => todo!(), + } + } +}