#[cfg(feature = "rafx-vulkan")]
use ash::vk;
#[cfg(feature = "rafx-metal")]
use metal_rs::MTLPixelFormat;
#[cfg(feature = "rafx-metal")]
use metal_rs::MTLVertexFormat;
#[cfg(feature = "serde-support")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde-support", derive(Serialize, Deserialize))]
#[allow(non_camel_case_types)]
pub enum RafxFormat {
UNDEFINED,
R4G4_UNORM_PACK8,
R4G4B4A4_UNORM_PACK16,
B4G4R4A4_UNORM_PACK16,
R5G6B5_UNORM_PACK16,
B5G6R5_UNORM_PACK16,
R5G5B5A1_UNORM_PACK16,
B5G5R5A1_UNORM_PACK16,
A1R5G5B5_UNORM_PACK16,
R8_UNORM,
R8_SNORM,
R8_USCALED,
R8_SSCALED,
R8_UINT,
R8_SINT,
R8_SRGB,
R8G8_UNORM,
R8G8_SNORM,
R8G8_USCALED,
R8G8_SSCALED,
R8G8_UINT,
R8G8_SINT,
R8G8_SRGB,
R8G8B8_UNORM,
R8G8B8_SNORM,
R8G8B8_USCALED,
R8G8B8_SSCALED,
R8G8B8_UINT,
R8G8B8_SINT,
R8G8B8_SRGB,
B8G8R8_UNORM,
B8G8R8_SNORM,
B8G8R8_USCALED,
B8G8R8_SSCALED,
B8G8R8_UINT,
B8G8R8_SINT,
B8G8R8_SRGB,
R8G8B8A8_UNORM,
R8G8B8A8_SNORM,
R8G8B8A8_USCALED,
R8G8B8A8_SSCALED,
R8G8B8A8_UINT,
R8G8B8A8_SINT,
R8G8B8A8_SRGB,
B8G8R8A8_UNORM,
B8G8R8A8_SNORM,
B8G8R8A8_USCALED,
B8G8R8A8_SSCALED,
B8G8R8A8_UINT,
B8G8R8A8_SINT,
B8G8R8A8_SRGB,
A8B8G8R8_UNORM_PACK32,
A8B8G8R8_SNORM_PACK32,
A8B8G8R8_USCALED_PACK32,
A8B8G8R8_SSCALED_PACK32,
A8B8G8R8_UINT_PACK32,
A8B8G8R8_SINT_PACK32,
A8B8G8R8_SRGB_PACK32,
A2R10G10B10_UNORM_PACK32,
A2R10G10B10_SNORM_PACK32,
A2R10G10B10_USCALED_PACK32,
A2R10G10B10_SSCALED_PACK32,
A2R10G10B10_UINT_PACK32,
A2R10G10B10_SINT_PACK32,
A2B10G10R10_UNORM_PACK32,
A2B10G10R10_SNORM_PACK32,
A2B10G10R10_USCALED_PACK32,
A2B10G10R10_SSCALED_PACK32,
A2B10G10R10_UINT_PACK32,
A2B10G10R10_SINT_PACK32,
R16_UNORM,
R16_SNORM,
R16_USCALED,
R16_SSCALED,
R16_UINT,
R16_SINT,
R16_SFLOAT,
R16G16_UNORM,
R16G16_SNORM,
R16G16_USCALED,
R16G16_SSCALED,
R16G16_UINT,
R16G16_SINT,
R16G16_SFLOAT,
R16G16B16_UNORM,
R16G16B16_SNORM,
R16G16B16_USCALED,
R16G16B16_SSCALED,
R16G16B16_UINT,
R16G16B16_SINT,
R16G16B16_SFLOAT,
R16G16B16A16_UNORM,
R16G16B16A16_SNORM,
R16G16B16A16_USCALED,
R16G16B16A16_SSCALED,
R16G16B16A16_UINT,
R16G16B16A16_SINT,
R16G16B16A16_SFLOAT,
R32_UINT,
R32_SINT,
R32_SFLOAT,
R32G32_UINT,
R32G32_SINT,
R32G32_SFLOAT,
R32G32B32_UINT,
R32G32B32_SINT,
R32G32B32_SFLOAT,
R32G32B32A32_UINT,
R32G32B32A32_SINT,
R32G32B32A32_SFLOAT,
R64_UINT,
R64_SINT,
R64_SFLOAT,
R64G64_UINT,
R64G64_SINT,
R64G64_SFLOAT,
R64G64B64_UINT,
R64G64B64_SINT,
R64G64B64_SFLOAT,
R64G64B64A64_UINT,
R64G64B64A64_SINT,
R64G64B64A64_SFLOAT,
B10G11R11_UFLOAT_PACK32,
E5B9G9R9_UFLOAT_PACK32,
D16_UNORM,
X8_D24_UNORM_PACK32,
D32_SFLOAT,
S8_UINT,
D16_UNORM_S8_UINT,
D24_UNORM_S8_UINT,
D32_SFLOAT_S8_UINT,
BC1_RGB_UNORM_BLOCK,
BC1_RGB_SRGB_BLOCK,
BC1_RGBA_UNORM_BLOCK,
BC1_RGBA_SRGB_BLOCK,
BC2_UNORM_BLOCK,
BC2_SRGB_BLOCK,
BC3_UNORM_BLOCK,
BC3_SRGB_BLOCK,
BC4_UNORM_BLOCK,
BC4_SNORM_BLOCK,
BC5_UNORM_BLOCK,
BC5_SNORM_BLOCK,
BC6H_UFLOAT_BLOCK,
BC6H_SFLOAT_BLOCK,
BC7_UNORM_BLOCK,
BC7_SRGB_BLOCK,
ETC2_R8G8B8_UNORM_BLOCK,
ETC2_R8G8B8_SRGB_BLOCK,
ETC2_R8G8B8A1_UNORM_BLOCK,
ETC2_R8G8B8A1_SRGB_BLOCK,
ETC2_R8G8B8A8_UNORM_BLOCK,
ETC2_R8G8B8A8_SRGB_BLOCK,
EAC_R11_UNORM_BLOCK,
EAC_R11_SNORM_BLOCK,
EAC_R11G11_UNORM_BLOCK,
EAC_R11G11_SNORM_BLOCK,
ASTC_4X4_UNORM_BLOCK,
ASTC_4X4_SRGB_BLOCK,
ASTC_5X4_UNORM_BLOCK,
ASTC_5X4_SRGB_BLOCK,
ASTC_5X5_UNORM_BLOCK,
ASTC_5X5_SRGB_BLOCK,
ASTC_6X5_UNORM_BLOCK,
ASTC_6X5_SRGB_BLOCK,
ASTC_6X6_UNORM_BLOCK,
ASTC_6X6_SRGB_BLOCK,
ASTC_8X5_UNORM_BLOCK,
ASTC_8X5_SRGB_BLOCK,
ASTC_8X6_UNORM_BLOCK,
ASTC_8X6_SRGB_BLOCK,
ASTC_8X8_UNORM_BLOCK,
ASTC_8X8_SRGB_BLOCK,
ASTC_10X5_UNORM_BLOCK,
ASTC_10X5_SRGB_BLOCK,
ASTC_10X6_UNORM_BLOCK,
ASTC_10X6_SRGB_BLOCK,
ASTC_10X8_UNORM_BLOCK,
ASTC_10X8_SRGB_BLOCK,
ASTC_10X10_UNORM_BLOCK,
ASTC_10X10_SRGB_BLOCK,
ASTC_12X10_UNORM_BLOCK,
ASTC_12X10_SRGB_BLOCK,
ASTC_12X12_UNORM_BLOCK,
ASTC_12X12_SRGB_BLOCK,
}
impl Default for RafxFormat {
fn default() -> Self {
RafxFormat::UNDEFINED
}
}
#[cfg(feature = "rafx-vulkan")]
impl Into<vk::Format> for RafxFormat {
fn into(self) -> vk::Format {
match self {
RafxFormat::UNDEFINED => vk::Format::UNDEFINED,
RafxFormat::R4G4_UNORM_PACK8 => vk::Format::R4G4_UNORM_PACK8,
RafxFormat::R4G4B4A4_UNORM_PACK16 => vk::Format::R4G4B4A4_UNORM_PACK16,
RafxFormat::B4G4R4A4_UNORM_PACK16 => vk::Format::B4G4R4A4_UNORM_PACK16,
RafxFormat::R5G6B5_UNORM_PACK16 => vk::Format::R5G6B5_UNORM_PACK16,
RafxFormat::B5G6R5_UNORM_PACK16 => vk::Format::B5G6R5_UNORM_PACK16,
RafxFormat::R5G5B5A1_UNORM_PACK16 => vk::Format::R5G5B5A1_UNORM_PACK16,
RafxFormat::B5G5R5A1_UNORM_PACK16 => vk::Format::B5G5R5A1_UNORM_PACK16,
RafxFormat::A1R5G5B5_UNORM_PACK16 => vk::Format::A1R5G5B5_UNORM_PACK16,
RafxFormat::R8_UNORM => vk::Format::R8_UNORM,
RafxFormat::R8_SNORM => vk::Format::R8_SNORM,
RafxFormat::R8_USCALED => vk::Format::R8_USCALED,
RafxFormat::R8_SSCALED => vk::Format::R8_SSCALED,
RafxFormat::R8_UINT => vk::Format::R8_UINT,
RafxFormat::R8_SINT => vk::Format::R8_SINT,
RafxFormat::R8_SRGB => vk::Format::R8_SRGB,
RafxFormat::R8G8_UNORM => vk::Format::R8G8_UNORM,
RafxFormat::R8G8_SNORM => vk::Format::R8G8_SNORM,
RafxFormat::R8G8_USCALED => vk::Format::R8G8_USCALED,
RafxFormat::R8G8_SSCALED => vk::Format::R8G8_SSCALED,
RafxFormat::R8G8_UINT => vk::Format::R8G8_UINT,
RafxFormat::R8G8_SINT => vk::Format::R8G8_SINT,
RafxFormat::R8G8_SRGB => vk::Format::R8G8_SRGB,
RafxFormat::R8G8B8_UNORM => vk::Format::R8G8B8_UNORM,
RafxFormat::R8G8B8_SNORM => vk::Format::R8G8B8_SNORM,
RafxFormat::R8G8B8_USCALED => vk::Format::R8G8B8_USCALED,
RafxFormat::R8G8B8_SSCALED => vk::Format::R8G8B8_SSCALED,
RafxFormat::R8G8B8_UINT => vk::Format::R8G8B8_UINT,
RafxFormat::R8G8B8_SINT => vk::Format::R8G8B8_SINT,
RafxFormat::R8G8B8_SRGB => vk::Format::R8G8B8_SRGB,
RafxFormat::B8G8R8_UNORM => vk::Format::B8G8R8_UNORM,
RafxFormat::B8G8R8_SNORM => vk::Format::B8G8R8_SNORM,
RafxFormat::B8G8R8_USCALED => vk::Format::B8G8R8_USCALED,
RafxFormat::B8G8R8_SSCALED => vk::Format::B8G8R8_SSCALED,
RafxFormat::B8G8R8_UINT => vk::Format::B8G8R8_UINT,
RafxFormat::B8G8R8_SINT => vk::Format::B8G8R8_SINT,
RafxFormat::B8G8R8_SRGB => vk::Format::B8G8R8_SRGB,
RafxFormat::R8G8B8A8_UNORM => vk::Format::R8G8B8A8_UNORM,
RafxFormat::R8G8B8A8_SNORM => vk::Format::R8G8B8A8_SNORM,
RafxFormat::R8G8B8A8_USCALED => vk::Format::R8G8B8A8_USCALED,
RafxFormat::R8G8B8A8_SSCALED => vk::Format::R8G8B8A8_SSCALED,
RafxFormat::R8G8B8A8_UINT => vk::Format::R8G8B8A8_UINT,
RafxFormat::R8G8B8A8_SINT => vk::Format::R8G8B8A8_SINT,
RafxFormat::R8G8B8A8_SRGB => vk::Format::R8G8B8A8_SRGB,
RafxFormat::B8G8R8A8_UNORM => vk::Format::B8G8R8A8_UNORM,
RafxFormat::B8G8R8A8_SNORM => vk::Format::B8G8R8A8_SNORM,
RafxFormat::B8G8R8A8_USCALED => vk::Format::B8G8R8A8_USCALED,
RafxFormat::B8G8R8A8_SSCALED => vk::Format::B8G8R8A8_SSCALED,
RafxFormat::B8G8R8A8_UINT => vk::Format::B8G8R8A8_UINT,
RafxFormat::B8G8R8A8_SINT => vk::Format::B8G8R8A8_SINT,
RafxFormat::B8G8R8A8_SRGB => vk::Format::B8G8R8A8_SRGB,
RafxFormat::A8B8G8R8_UNORM_PACK32 => vk::Format::A8B8G8R8_UNORM_PACK32,
RafxFormat::A8B8G8R8_SNORM_PACK32 => vk::Format::A8B8G8R8_SNORM_PACK32,
RafxFormat::A8B8G8R8_USCALED_PACK32 => vk::Format::A8B8G8R8_USCALED_PACK32,
RafxFormat::A8B8G8R8_SSCALED_PACK32 => vk::Format::A8B8G8R8_SSCALED_PACK32,
RafxFormat::A8B8G8R8_UINT_PACK32 => vk::Format::A8B8G8R8_UINT_PACK32,
RafxFormat::A8B8G8R8_SINT_PACK32 => vk::Format::A8B8G8R8_SINT_PACK32,
RafxFormat::A8B8G8R8_SRGB_PACK32 => vk::Format::A8B8G8R8_SRGB_PACK32,
RafxFormat::A2R10G10B10_UNORM_PACK32 => vk::Format::A2R10G10B10_UNORM_PACK32,
RafxFormat::A2R10G10B10_SNORM_PACK32 => vk::Format::A2R10G10B10_SNORM_PACK32,
RafxFormat::A2R10G10B10_USCALED_PACK32 => vk::Format::A2R10G10B10_USCALED_PACK32,
RafxFormat::A2R10G10B10_SSCALED_PACK32 => vk::Format::A2R10G10B10_SSCALED_PACK32,
RafxFormat::A2R10G10B10_UINT_PACK32 => vk::Format::A2R10G10B10_UINT_PACK32,
RafxFormat::A2R10G10B10_SINT_PACK32 => vk::Format::A2R10G10B10_SINT_PACK32,
RafxFormat::A2B10G10R10_UNORM_PACK32 => vk::Format::A2B10G10R10_UNORM_PACK32,
RafxFormat::A2B10G10R10_SNORM_PACK32 => vk::Format::A2B10G10R10_SNORM_PACK32,
RafxFormat::A2B10G10R10_USCALED_PACK32 => vk::Format::A2B10G10R10_USCALED_PACK32,
RafxFormat::A2B10G10R10_SSCALED_PACK32 => vk::Format::A2B10G10R10_SSCALED_PACK32,
RafxFormat::A2B10G10R10_UINT_PACK32 => vk::Format::A2B10G10R10_UINT_PACK32,
RafxFormat::A2B10G10R10_SINT_PACK32 => vk::Format::A2B10G10R10_SINT_PACK32,
RafxFormat::R16_UNORM => vk::Format::R16_UNORM,
RafxFormat::R16_SNORM => vk::Format::R16_SNORM,
RafxFormat::R16_USCALED => vk::Format::R16_USCALED,
RafxFormat::R16_SSCALED => vk::Format::R16_SSCALED,
RafxFormat::R16_UINT => vk::Format::R16_UINT,
RafxFormat::R16_SINT => vk::Format::R16_SINT,
RafxFormat::R16_SFLOAT => vk::Format::R16_SFLOAT,
RafxFormat::R16G16_UNORM => vk::Format::R16G16_UNORM,
RafxFormat::R16G16_SNORM => vk::Format::R16G16_SNORM,
RafxFormat::R16G16_USCALED => vk::Format::R16G16_USCALED,
RafxFormat::R16G16_SSCALED => vk::Format::R16G16_SSCALED,
RafxFormat::R16G16_UINT => vk::Format::R16G16_UINT,
RafxFormat::R16G16_SINT => vk::Format::R16G16_SINT,
RafxFormat::R16G16_SFLOAT => vk::Format::R16G16_SFLOAT,
RafxFormat::R16G16B16_UNORM => vk::Format::R16G16B16_UNORM,
RafxFormat::R16G16B16_SNORM => vk::Format::R16G16B16_SNORM,
RafxFormat::R16G16B16_USCALED => vk::Format::R16G16B16_USCALED,
RafxFormat::R16G16B16_SSCALED => vk::Format::R16G16B16_SSCALED,
RafxFormat::R16G16B16_UINT => vk::Format::R16G16B16_UINT,
RafxFormat::R16G16B16_SINT => vk::Format::R16G16B16_SINT,
RafxFormat::R16G16B16_SFLOAT => vk::Format::R16G16B16_SFLOAT,
RafxFormat::R16G16B16A16_UNORM => vk::Format::R16G16B16A16_UNORM,
RafxFormat::R16G16B16A16_SNORM => vk::Format::R16G16B16A16_SNORM,
RafxFormat::R16G16B16A16_USCALED => vk::Format::R16G16B16A16_USCALED,
RafxFormat::R16G16B16A16_SSCALED => vk::Format::R16G16B16A16_SSCALED,
RafxFormat::R16G16B16A16_UINT => vk::Format::R16G16B16A16_UINT,
RafxFormat::R16G16B16A16_SINT => vk::Format::R16G16B16A16_SINT,
RafxFormat::R16G16B16A16_SFLOAT => vk::Format::R16G16B16A16_SFLOAT,
RafxFormat::R32_UINT => vk::Format::R32_UINT,
RafxFormat::R32_SINT => vk::Format::R32_SINT,
RafxFormat::R32_SFLOAT => vk::Format::R32_SFLOAT,
RafxFormat::R32G32_UINT => vk::Format::R32G32_UINT,
RafxFormat::R32G32_SINT => vk::Format::R32G32_SINT,
RafxFormat::R32G32_SFLOAT => vk::Format::R32G32_SFLOAT,
RafxFormat::R32G32B32_UINT => vk::Format::R32G32B32_UINT,
RafxFormat::R32G32B32_SINT => vk::Format::R32G32B32_SINT,
RafxFormat::R32G32B32_SFLOAT => vk::Format::R32G32B32_SFLOAT,
RafxFormat::R32G32B32A32_UINT => vk::Format::R32G32B32A32_UINT,
RafxFormat::R32G32B32A32_SINT => vk::Format::R32G32B32A32_SINT,
RafxFormat::R32G32B32A32_SFLOAT => vk::Format::R32G32B32A32_SFLOAT,
RafxFormat::R64_UINT => vk::Format::R64_UINT,
RafxFormat::R64_SINT => vk::Format::R64_SINT,
RafxFormat::R64_SFLOAT => vk::Format::R64_SFLOAT,
RafxFormat::R64G64_UINT => vk::Format::R64G64_UINT,
RafxFormat::R64G64_SINT => vk::Format::R64G64_SINT,
RafxFormat::R64G64_SFLOAT => vk::Format::R64G64_SFLOAT,
RafxFormat::R64G64B64_UINT => vk::Format::R64G64B64_UINT,
RafxFormat::R64G64B64_SINT => vk::Format::R64G64B64_SINT,
RafxFormat::R64G64B64_SFLOAT => vk::Format::R64G64B64_SFLOAT,
RafxFormat::R64G64B64A64_UINT => vk::Format::R64G64B64A64_UINT,
RafxFormat::R64G64B64A64_SINT => vk::Format::R64G64B64A64_SINT,
RafxFormat::R64G64B64A64_SFLOAT => vk::Format::R64G64B64A64_SFLOAT,
RafxFormat::B10G11R11_UFLOAT_PACK32 => vk::Format::B10G11R11_UFLOAT_PACK32,
RafxFormat::E5B9G9R9_UFLOAT_PACK32 => vk::Format::E5B9G9R9_UFLOAT_PACK32,
RafxFormat::D16_UNORM => vk::Format::D16_UNORM,
RafxFormat::X8_D24_UNORM_PACK32 => vk::Format::X8_D24_UNORM_PACK32,
RafxFormat::D32_SFLOAT => vk::Format::D32_SFLOAT,
RafxFormat::S8_UINT => vk::Format::S8_UINT,
RafxFormat::D16_UNORM_S8_UINT => vk::Format::D16_UNORM_S8_UINT,
RafxFormat::D24_UNORM_S8_UINT => vk::Format::D24_UNORM_S8_UINT,
RafxFormat::D32_SFLOAT_S8_UINT => vk::Format::D32_SFLOAT_S8_UINT,
RafxFormat::BC1_RGB_UNORM_BLOCK => vk::Format::BC1_RGB_UNORM_BLOCK,
RafxFormat::BC1_RGB_SRGB_BLOCK => vk::Format::BC1_RGB_SRGB_BLOCK,
RafxFormat::BC1_RGBA_UNORM_BLOCK => vk::Format::BC1_RGBA_UNORM_BLOCK,
RafxFormat::BC1_RGBA_SRGB_BLOCK => vk::Format::BC1_RGBA_SRGB_BLOCK,
RafxFormat::BC2_UNORM_BLOCK => vk::Format::BC2_UNORM_BLOCK,
RafxFormat::BC2_SRGB_BLOCK => vk::Format::BC2_SRGB_BLOCK,
RafxFormat::BC3_UNORM_BLOCK => vk::Format::BC3_UNORM_BLOCK,
RafxFormat::BC3_SRGB_BLOCK => vk::Format::BC3_SRGB_BLOCK,
RafxFormat::BC4_UNORM_BLOCK => vk::Format::BC4_UNORM_BLOCK,
RafxFormat::BC4_SNORM_BLOCK => vk::Format::BC4_SNORM_BLOCK,
RafxFormat::BC5_UNORM_BLOCK => vk::Format::BC5_UNORM_BLOCK,
RafxFormat::BC5_SNORM_BLOCK => vk::Format::BC5_SNORM_BLOCK,
RafxFormat::BC6H_UFLOAT_BLOCK => vk::Format::BC6H_UFLOAT_BLOCK,
RafxFormat::BC6H_SFLOAT_BLOCK => vk::Format::BC6H_SFLOAT_BLOCK,
RafxFormat::BC7_UNORM_BLOCK => vk::Format::BC7_UNORM_BLOCK,
RafxFormat::BC7_SRGB_BLOCK => vk::Format::BC7_SRGB_BLOCK,
RafxFormat::ETC2_R8G8B8_UNORM_BLOCK => vk::Format::ETC2_R8G8B8_UNORM_BLOCK,
RafxFormat::ETC2_R8G8B8_SRGB_BLOCK => vk::Format::ETC2_R8G8B8_SRGB_BLOCK,
RafxFormat::ETC2_R8G8B8A1_UNORM_BLOCK => vk::Format::ETC2_R8G8B8A1_UNORM_BLOCK,
RafxFormat::ETC2_R8G8B8A1_SRGB_BLOCK => vk::Format::ETC2_R8G8B8A1_SRGB_BLOCK,
RafxFormat::ETC2_R8G8B8A8_UNORM_BLOCK => vk::Format::ETC2_R8G8B8A8_UNORM_BLOCK,
RafxFormat::ETC2_R8G8B8A8_SRGB_BLOCK => vk::Format::ETC2_R8G8B8A8_SRGB_BLOCK,
RafxFormat::EAC_R11_UNORM_BLOCK => vk::Format::EAC_R11_UNORM_BLOCK,
RafxFormat::EAC_R11_SNORM_BLOCK => vk::Format::EAC_R11_SNORM_BLOCK,
RafxFormat::EAC_R11G11_UNORM_BLOCK => vk::Format::EAC_R11G11_UNORM_BLOCK,
RafxFormat::EAC_R11G11_SNORM_BLOCK => vk::Format::EAC_R11G11_SNORM_BLOCK,
RafxFormat::ASTC_4X4_UNORM_BLOCK => vk::Format::ASTC_4X4_UNORM_BLOCK,
RafxFormat::ASTC_4X4_SRGB_BLOCK => vk::Format::ASTC_4X4_SRGB_BLOCK,
RafxFormat::ASTC_5X4_UNORM_BLOCK => vk::Format::ASTC_5X4_UNORM_BLOCK,
RafxFormat::ASTC_5X4_SRGB_BLOCK => vk::Format::ASTC_5X4_SRGB_BLOCK,
RafxFormat::ASTC_5X5_UNORM_BLOCK => vk::Format::ASTC_5X5_UNORM_BLOCK,
RafxFormat::ASTC_5X5_SRGB_BLOCK => vk::Format::ASTC_5X5_SRGB_BLOCK,
RafxFormat::ASTC_6X5_UNORM_BLOCK => vk::Format::ASTC_6X5_UNORM_BLOCK,
RafxFormat::ASTC_6X5_SRGB_BLOCK => vk::Format::ASTC_6X5_SRGB_BLOCK,
RafxFormat::ASTC_6X6_UNORM_BLOCK => vk::Format::ASTC_6X6_UNORM_BLOCK,
RafxFormat::ASTC_6X6_SRGB_BLOCK => vk::Format::ASTC_6X6_SRGB_BLOCK,
RafxFormat::ASTC_8X5_UNORM_BLOCK => vk::Format::ASTC_8X5_UNORM_BLOCK,
RafxFormat::ASTC_8X5_SRGB_BLOCK => vk::Format::ASTC_8X5_SRGB_BLOCK,
RafxFormat::ASTC_8X6_UNORM_BLOCK => vk::Format::ASTC_8X6_UNORM_BLOCK,
RafxFormat::ASTC_8X6_SRGB_BLOCK => vk::Format::ASTC_8X6_SRGB_BLOCK,
RafxFormat::ASTC_8X8_UNORM_BLOCK => vk::Format::ASTC_8X8_UNORM_BLOCK,
RafxFormat::ASTC_8X8_SRGB_BLOCK => vk::Format::ASTC_8X8_SRGB_BLOCK,
RafxFormat::ASTC_10X5_UNORM_BLOCK => vk::Format::ASTC_10X5_UNORM_BLOCK,
RafxFormat::ASTC_10X5_SRGB_BLOCK => vk::Format::ASTC_10X5_SRGB_BLOCK,
RafxFormat::ASTC_10X6_UNORM_BLOCK => vk::Format::ASTC_10X6_UNORM_BLOCK,
RafxFormat::ASTC_10X6_SRGB_BLOCK => vk::Format::ASTC_10X6_SRGB_BLOCK,
RafxFormat::ASTC_10X8_UNORM_BLOCK => vk::Format::ASTC_10X8_UNORM_BLOCK,
RafxFormat::ASTC_10X8_SRGB_BLOCK => vk::Format::ASTC_10X8_SRGB_BLOCK,
RafxFormat::ASTC_10X10_UNORM_BLOCK => vk::Format::ASTC_10X10_UNORM_BLOCK,
RafxFormat::ASTC_10X10_SRGB_BLOCK => vk::Format::ASTC_10X10_SRGB_BLOCK,
RafxFormat::ASTC_12X10_UNORM_BLOCK => vk::Format::ASTC_12X10_UNORM_BLOCK,
RafxFormat::ASTC_12X10_SRGB_BLOCK => vk::Format::ASTC_12X10_SRGB_BLOCK,
RafxFormat::ASTC_12X12_UNORM_BLOCK => vk::Format::ASTC_12X12_UNORM_BLOCK,
RafxFormat::ASTC_12X12_SRGB_BLOCK => vk::Format::ASTC_12X12_SRGB_BLOCK,
}
}
}
#[cfg(feature = "rafx-vulkan")]
impl From<vk::Format> for RafxFormat {
fn from(format: vk::Format) -> RafxFormat {
match format {
vk::Format::UNDEFINED => RafxFormat::UNDEFINED,
vk::Format::R4G4_UNORM_PACK8 => RafxFormat::R4G4_UNORM_PACK8,
vk::Format::R4G4B4A4_UNORM_PACK16 => RafxFormat::R4G4B4A4_UNORM_PACK16,
vk::Format::B4G4R4A4_UNORM_PACK16 => RafxFormat::B4G4R4A4_UNORM_PACK16,
vk::Format::R5G6B5_UNORM_PACK16 => RafxFormat::R5G6B5_UNORM_PACK16,
vk::Format::B5G6R5_UNORM_PACK16 => RafxFormat::B5G6R5_UNORM_PACK16,
vk::Format::R5G5B5A1_UNORM_PACK16 => RafxFormat::R5G5B5A1_UNORM_PACK16,
vk::Format::B5G5R5A1_UNORM_PACK16 => RafxFormat::B5G5R5A1_UNORM_PACK16,
vk::Format::A1R5G5B5_UNORM_PACK16 => RafxFormat::A1R5G5B5_UNORM_PACK16,
vk::Format::R8_UNORM => RafxFormat::R8_UNORM,
vk::Format::R8_SNORM => RafxFormat::R8_SNORM,
vk::Format::R8_USCALED => RafxFormat::R8_USCALED,
vk::Format::R8_SSCALED => RafxFormat::R8_SSCALED,
vk::Format::R8_UINT => RafxFormat::R8_UINT,
vk::Format::R8_SINT => RafxFormat::R8_SINT,
vk::Format::R8_SRGB => RafxFormat::R8_SRGB,
vk::Format::R8G8_UNORM => RafxFormat::R8G8_UNORM,
vk::Format::R8G8_SNORM => RafxFormat::R8G8_SNORM,
vk::Format::R8G8_USCALED => RafxFormat::R8G8_USCALED,
vk::Format::R8G8_SSCALED => RafxFormat::R8G8_SSCALED,
vk::Format::R8G8_UINT => RafxFormat::R8G8_UINT,
vk::Format::R8G8_SINT => RafxFormat::R8G8_SINT,
vk::Format::R8G8_SRGB => RafxFormat::R8G8_SRGB,
vk::Format::R8G8B8_UNORM => RafxFormat::R8G8B8_UNORM,
vk::Format::R8G8B8_SNORM => RafxFormat::R8G8B8_SNORM,
vk::Format::R8G8B8_USCALED => RafxFormat::R8G8B8_USCALED,
vk::Format::R8G8B8_SSCALED => RafxFormat::R8G8B8_SSCALED,
vk::Format::R8G8B8_UINT => RafxFormat::R8G8B8_UINT,
vk::Format::R8G8B8_SINT => RafxFormat::R8G8B8_SINT,
vk::Format::R8G8B8_SRGB => RafxFormat::R8G8B8_SRGB,
vk::Format::B8G8R8_UNORM => RafxFormat::B8G8R8_UNORM,
vk::Format::B8G8R8_SNORM => RafxFormat::B8G8R8_SNORM,
vk::Format::B8G8R8_USCALED => RafxFormat::B8G8R8_USCALED,
vk::Format::B8G8R8_SSCALED => RafxFormat::B8G8R8_SSCALED,
vk::Format::B8G8R8_UINT => RafxFormat::B8G8R8_UINT,
vk::Format::B8G8R8_SINT => RafxFormat::B8G8R8_SINT,
vk::Format::B8G8R8_SRGB => RafxFormat::B8G8R8_SRGB,
vk::Format::R8G8B8A8_UNORM => RafxFormat::R8G8B8A8_UNORM,
vk::Format::R8G8B8A8_SNORM => RafxFormat::R8G8B8A8_SNORM,
vk::Format::R8G8B8A8_USCALED => RafxFormat::R8G8B8A8_USCALED,
vk::Format::R8G8B8A8_SSCALED => RafxFormat::R8G8B8A8_SSCALED,
vk::Format::R8G8B8A8_UINT => RafxFormat::R8G8B8A8_UINT,
vk::Format::R8G8B8A8_SINT => RafxFormat::R8G8B8A8_SINT,
vk::Format::R8G8B8A8_SRGB => RafxFormat::R8G8B8A8_SRGB,
vk::Format::B8G8R8A8_UNORM => RafxFormat::B8G8R8A8_UNORM,
vk::Format::B8G8R8A8_SNORM => RafxFormat::B8G8R8A8_SNORM,
vk::Format::B8G8R8A8_USCALED => RafxFormat::B8G8R8A8_USCALED,
vk::Format::B8G8R8A8_SSCALED => RafxFormat::B8G8R8A8_SSCALED,
vk::Format::B8G8R8A8_UINT => RafxFormat::B8G8R8A8_UINT,
vk::Format::B8G8R8A8_SINT => RafxFormat::B8G8R8A8_SINT,
vk::Format::B8G8R8A8_SRGB => RafxFormat::B8G8R8A8_SRGB,
vk::Format::A8B8G8R8_UNORM_PACK32 => RafxFormat::A8B8G8R8_UNORM_PACK32,
vk::Format::A8B8G8R8_SNORM_PACK32 => RafxFormat::A8B8G8R8_SNORM_PACK32,
vk::Format::A8B8G8R8_USCALED_PACK32 => RafxFormat::A8B8G8R8_USCALED_PACK32,
vk::Format::A8B8G8R8_SSCALED_PACK32 => RafxFormat::A8B8G8R8_SSCALED_PACK32,
vk::Format::A8B8G8R8_UINT_PACK32 => RafxFormat::A8B8G8R8_UINT_PACK32,
vk::Format::A8B8G8R8_SINT_PACK32 => RafxFormat::A8B8G8R8_SINT_PACK32,
vk::Format::A8B8G8R8_SRGB_PACK32 => RafxFormat::A8B8G8R8_SRGB_PACK32,
vk::Format::A2R10G10B10_UNORM_PACK32 => RafxFormat::A2R10G10B10_UNORM_PACK32,
vk::Format::A2R10G10B10_SNORM_PACK32 => RafxFormat::A2R10G10B10_SNORM_PACK32,
vk::Format::A2R10G10B10_USCALED_PACK32 => RafxFormat::A2R10G10B10_USCALED_PACK32,
vk::Format::A2R10G10B10_SSCALED_PACK32 => RafxFormat::A2R10G10B10_SSCALED_PACK32,
vk::Format::A2R10G10B10_UINT_PACK32 => RafxFormat::A2R10G10B10_UINT_PACK32,
vk::Format::A2R10G10B10_SINT_PACK32 => RafxFormat::A2R10G10B10_SINT_PACK32,
vk::Format::A2B10G10R10_UNORM_PACK32 => RafxFormat::A2B10G10R10_UNORM_PACK32,
vk::Format::A2B10G10R10_SNORM_PACK32 => RafxFormat::A2B10G10R10_SNORM_PACK32,
vk::Format::A2B10G10R10_USCALED_PACK32 => RafxFormat::A2B10G10R10_USCALED_PACK32,
vk::Format::A2B10G10R10_SSCALED_PACK32 => RafxFormat::A2B10G10R10_SSCALED_PACK32,
vk::Format::A2B10G10R10_UINT_PACK32 => RafxFormat::A2B10G10R10_UINT_PACK32,
vk::Format::A2B10G10R10_SINT_PACK32 => RafxFormat::A2B10G10R10_SINT_PACK32,
vk::Format::R16_UNORM => RafxFormat::R16_UNORM,
vk::Format::R16_SNORM => RafxFormat::R16_SNORM,
vk::Format::R16_USCALED => RafxFormat::R16_USCALED,
vk::Format::R16_SSCALED => RafxFormat::R16_SSCALED,
vk::Format::R16_UINT => RafxFormat::R16_UINT,
vk::Format::R16_SINT => RafxFormat::R16_SINT,
vk::Format::R16_SFLOAT => RafxFormat::R16_SFLOAT,
vk::Format::R16G16_UNORM => RafxFormat::R16G16_UNORM,
vk::Format::R16G16_SNORM => RafxFormat::R16G16_SNORM,
vk::Format::R16G16_USCALED => RafxFormat::R16G16_USCALED,
vk::Format::R16G16_SSCALED => RafxFormat::R16G16_SSCALED,
vk::Format::R16G16_UINT => RafxFormat::R16G16_UINT,
vk::Format::R16G16_SINT => RafxFormat::R16G16_SINT,
vk::Format::R16G16_SFLOAT => RafxFormat::R16G16_SFLOAT,
vk::Format::R16G16B16_UNORM => RafxFormat::R16G16B16_UNORM,
vk::Format::R16G16B16_SNORM => RafxFormat::R16G16B16_SNORM,
vk::Format::R16G16B16_USCALED => RafxFormat::R16G16B16_USCALED,
vk::Format::R16G16B16_SSCALED => RafxFormat::R16G16B16_SSCALED,
vk::Format::R16G16B16_UINT => RafxFormat::R16G16B16_UINT,
vk::Format::R16G16B16_SINT => RafxFormat::R16G16B16_SINT,
vk::Format::R16G16B16_SFLOAT => RafxFormat::R16G16B16_SFLOAT,
vk::Format::R16G16B16A16_UNORM => RafxFormat::R16G16B16A16_UNORM,
vk::Format::R16G16B16A16_SNORM => RafxFormat::R16G16B16A16_SNORM,
vk::Format::R16G16B16A16_USCALED => RafxFormat::R16G16B16A16_USCALED,
vk::Format::R16G16B16A16_SSCALED => RafxFormat::R16G16B16A16_SSCALED,
vk::Format::R16G16B16A16_UINT => RafxFormat::R16G16B16A16_UINT,
vk::Format::R16G16B16A16_SINT => RafxFormat::R16G16B16A16_SINT,
vk::Format::R16G16B16A16_SFLOAT => RafxFormat::R16G16B16A16_SFLOAT,
vk::Format::R32_UINT => RafxFormat::R32_UINT,
vk::Format::R32_SINT => RafxFormat::R32_SINT,
vk::Format::R32_SFLOAT => RafxFormat::R32_SFLOAT,
vk::Format::R32G32_UINT => RafxFormat::R32G32_UINT,
vk::Format::R32G32_SINT => RafxFormat::R32G32_SINT,
vk::Format::R32G32_SFLOAT => RafxFormat::R32G32_SFLOAT,
vk::Format::R32G32B32_UINT => RafxFormat::R32G32B32_UINT,
vk::Format::R32G32B32_SINT => RafxFormat::R32G32B32_SINT,
vk::Format::R32G32B32_SFLOAT => RafxFormat::R32G32B32_SFLOAT,
vk::Format::R32G32B32A32_UINT => RafxFormat::R32G32B32A32_UINT,
vk::Format::R32G32B32A32_SINT => RafxFormat::R32G32B32A32_SINT,
vk::Format::R32G32B32A32_SFLOAT => RafxFormat::R32G32B32A32_SFLOAT,
vk::Format::R64_UINT => RafxFormat::R64_UINT,
vk::Format::R64_SINT => RafxFormat::R64_SINT,
vk::Format::R64_SFLOAT => RafxFormat::R64_SFLOAT,
vk::Format::R64G64_UINT => RafxFormat::R64G64_UINT,
vk::Format::R64G64_SINT => RafxFormat::R64G64_SINT,
vk::Format::R64G64_SFLOAT => RafxFormat::R64G64_SFLOAT,
vk::Format::R64G64B64_UINT => RafxFormat::R64G64B64_UINT,
vk::Format::R64G64B64_SINT => RafxFormat::R64G64B64_SINT,
vk::Format::R64G64B64_SFLOAT => RafxFormat::R64G64B64_SFLOAT,
vk::Format::R64G64B64A64_UINT => RafxFormat::R64G64B64A64_UINT,
vk::Format::R64G64B64A64_SINT => RafxFormat::R64G64B64A64_SINT,
vk::Format::R64G64B64A64_SFLOAT => RafxFormat::R64G64B64A64_SFLOAT,
vk::Format::B10G11R11_UFLOAT_PACK32 => RafxFormat::B10G11R11_UFLOAT_PACK32,
vk::Format::E5B9G9R9_UFLOAT_PACK32 => RafxFormat::E5B9G9R9_UFLOAT_PACK32,
vk::Format::D16_UNORM => RafxFormat::D16_UNORM,
vk::Format::X8_D24_UNORM_PACK32 => RafxFormat::X8_D24_UNORM_PACK32,
vk::Format::D32_SFLOAT => RafxFormat::D32_SFLOAT,
vk::Format::S8_UINT => RafxFormat::S8_UINT,
vk::Format::D16_UNORM_S8_UINT => RafxFormat::D16_UNORM_S8_UINT,
vk::Format::D24_UNORM_S8_UINT => RafxFormat::D24_UNORM_S8_UINT,
vk::Format::D32_SFLOAT_S8_UINT => RafxFormat::D32_SFLOAT_S8_UINT,
vk::Format::BC1_RGB_UNORM_BLOCK => RafxFormat::BC1_RGB_UNORM_BLOCK,
vk::Format::BC1_RGB_SRGB_BLOCK => RafxFormat::BC1_RGB_SRGB_BLOCK,
vk::Format::BC1_RGBA_UNORM_BLOCK => RafxFormat::BC1_RGBA_UNORM_BLOCK,
vk::Format::BC1_RGBA_SRGB_BLOCK => RafxFormat::BC1_RGBA_SRGB_BLOCK,
vk::Format::BC2_UNORM_BLOCK => RafxFormat::BC2_UNORM_BLOCK,
vk::Format::BC2_SRGB_BLOCK => RafxFormat::BC2_SRGB_BLOCK,
vk::Format::BC3_UNORM_BLOCK => RafxFormat::BC3_UNORM_BLOCK,
vk::Format::BC3_SRGB_BLOCK => RafxFormat::BC3_SRGB_BLOCK,
vk::Format::BC4_UNORM_BLOCK => RafxFormat::BC4_UNORM_BLOCK,
vk::Format::BC4_SNORM_BLOCK => RafxFormat::BC4_SNORM_BLOCK,
vk::Format::BC5_UNORM_BLOCK => RafxFormat::BC5_UNORM_BLOCK,
vk::Format::BC5_SNORM_BLOCK => RafxFormat::BC5_SNORM_BLOCK,
vk::Format::BC6H_UFLOAT_BLOCK => RafxFormat::BC6H_UFLOAT_BLOCK,
vk::Format::BC6H_SFLOAT_BLOCK => RafxFormat::BC6H_SFLOAT_BLOCK,
vk::Format::BC7_UNORM_BLOCK => RafxFormat::BC7_UNORM_BLOCK,
vk::Format::BC7_SRGB_BLOCK => RafxFormat::BC7_SRGB_BLOCK,
vk::Format::ETC2_R8G8B8_UNORM_BLOCK => RafxFormat::ETC2_R8G8B8_UNORM_BLOCK,
vk::Format::ETC2_R8G8B8_SRGB_BLOCK => RafxFormat::ETC2_R8G8B8_SRGB_BLOCK,
vk::Format::ETC2_R8G8B8A1_UNORM_BLOCK => RafxFormat::ETC2_R8G8B8A1_UNORM_BLOCK,
vk::Format::ETC2_R8G8B8A1_SRGB_BLOCK => RafxFormat::ETC2_R8G8B8A1_SRGB_BLOCK,
vk::Format::ETC2_R8G8B8A8_UNORM_BLOCK => RafxFormat::ETC2_R8G8B8A8_UNORM_BLOCK,
vk::Format::ETC2_R8G8B8A8_SRGB_BLOCK => RafxFormat::ETC2_R8G8B8A8_SRGB_BLOCK,
vk::Format::EAC_R11_UNORM_BLOCK => RafxFormat::EAC_R11_UNORM_BLOCK,
vk::Format::EAC_R11_SNORM_BLOCK => RafxFormat::EAC_R11_SNORM_BLOCK,
vk::Format::EAC_R11G11_UNORM_BLOCK => RafxFormat::EAC_R11G11_UNORM_BLOCK,
vk::Format::EAC_R11G11_SNORM_BLOCK => RafxFormat::EAC_R11G11_SNORM_BLOCK,
vk::Format::ASTC_4X4_UNORM_BLOCK => RafxFormat::ASTC_4X4_UNORM_BLOCK,
vk::Format::ASTC_4X4_SRGB_BLOCK => RafxFormat::ASTC_4X4_SRGB_BLOCK,
vk::Format::ASTC_5X4_UNORM_BLOCK => RafxFormat::ASTC_5X4_UNORM_BLOCK,
vk::Format::ASTC_5X4_SRGB_BLOCK => RafxFormat::ASTC_5X4_SRGB_BLOCK,
vk::Format::ASTC_5X5_UNORM_BLOCK => RafxFormat::ASTC_5X5_UNORM_BLOCK,
vk::Format::ASTC_5X5_SRGB_BLOCK => RafxFormat::ASTC_5X5_SRGB_BLOCK,
vk::Format::ASTC_6X5_UNORM_BLOCK => RafxFormat::ASTC_6X5_UNORM_BLOCK,
vk::Format::ASTC_6X5_SRGB_BLOCK => RafxFormat::ASTC_6X5_SRGB_BLOCK,
vk::Format::ASTC_6X6_UNORM_BLOCK => RafxFormat::ASTC_6X6_UNORM_BLOCK,
vk::Format::ASTC_6X6_SRGB_BLOCK => RafxFormat::ASTC_6X6_SRGB_BLOCK,
vk::Format::ASTC_8X5_UNORM_BLOCK => RafxFormat::ASTC_8X5_UNORM_BLOCK,
vk::Format::ASTC_8X5_SRGB_BLOCK => RafxFormat::ASTC_8X5_SRGB_BLOCK,
vk::Format::ASTC_8X6_UNORM_BLOCK => RafxFormat::ASTC_8X6_UNORM_BLOCK,
vk::Format::ASTC_8X6_SRGB_BLOCK => RafxFormat::ASTC_8X6_SRGB_BLOCK,
vk::Format::ASTC_8X8_UNORM_BLOCK => RafxFormat::ASTC_8X8_UNORM_BLOCK,
vk::Format::ASTC_8X8_SRGB_BLOCK => RafxFormat::ASTC_8X8_SRGB_BLOCK,
vk::Format::ASTC_10X5_UNORM_BLOCK => RafxFormat::ASTC_10X5_UNORM_BLOCK,
vk::Format::ASTC_10X5_SRGB_BLOCK => RafxFormat::ASTC_10X5_SRGB_BLOCK,
vk::Format::ASTC_10X6_UNORM_BLOCK => RafxFormat::ASTC_10X6_UNORM_BLOCK,
vk::Format::ASTC_10X6_SRGB_BLOCK => RafxFormat::ASTC_10X6_SRGB_BLOCK,
vk::Format::ASTC_10X8_UNORM_BLOCK => RafxFormat::ASTC_10X8_UNORM_BLOCK,
vk::Format::ASTC_10X8_SRGB_BLOCK => RafxFormat::ASTC_10X8_SRGB_BLOCK,
vk::Format::ASTC_10X10_UNORM_BLOCK => RafxFormat::ASTC_10X10_UNORM_BLOCK,
vk::Format::ASTC_10X10_SRGB_BLOCK => RafxFormat::ASTC_10X10_SRGB_BLOCK,
vk::Format::ASTC_12X10_UNORM_BLOCK => RafxFormat::ASTC_12X10_UNORM_BLOCK,
vk::Format::ASTC_12X10_SRGB_BLOCK => RafxFormat::ASTC_12X10_SRGB_BLOCK,
vk::Format::ASTC_12X12_UNORM_BLOCK => RafxFormat::ASTC_12X12_UNORM_BLOCK,
vk::Format::ASTC_12X12_SRGB_BLOCK => RafxFormat::ASTC_12X12_SRGB_BLOCK,
_ => unimplemented!(),
}
}
}
#[cfg(feature = "rafx-metal")]
impl Into<MTLPixelFormat> for RafxFormat {
fn into(self) -> MTLPixelFormat {
match self {
RafxFormat::UNDEFINED => MTLPixelFormat::Invalid,
RafxFormat::B5G6R5_UNORM_PACK16 => MTLPixelFormat::B5G6R5Unorm,
RafxFormat::B5G5R5A1_UNORM_PACK16 => MTLPixelFormat::BGR5A1Unorm,
RafxFormat::R8_UNORM => MTLPixelFormat::R8Unorm,
RafxFormat::R8_SNORM => MTLPixelFormat::R8Snorm,
RafxFormat::R8_UINT => MTLPixelFormat::R8Uint,
RafxFormat::R8_SINT => MTLPixelFormat::R8Sint,
RafxFormat::R8_SRGB => MTLPixelFormat::R8Unorm_sRGB,
RafxFormat::R8G8_UNORM => MTLPixelFormat::RG8Unorm,
RafxFormat::R8G8_SNORM => MTLPixelFormat::RG8Snorm,
RafxFormat::R8G8_UINT => MTLPixelFormat::RG8Uint,
RafxFormat::R8G8_SINT => MTLPixelFormat::RG8Sint,
RafxFormat::R8G8_SRGB => MTLPixelFormat::RG8Unorm_sRGB,
RafxFormat::R8G8B8A8_UNORM => MTLPixelFormat::RGBA8Unorm,
RafxFormat::R8G8B8A8_SNORM => MTLPixelFormat::RGBA8Snorm,
RafxFormat::R8G8B8A8_UINT => MTLPixelFormat::RGBA8Uint,
RafxFormat::R8G8B8A8_SINT => MTLPixelFormat::RGBA8Sint,
RafxFormat::R8G8B8A8_SRGB => MTLPixelFormat::RGBA8Unorm_sRGB,
RafxFormat::B8G8R8A8_UNORM => MTLPixelFormat::BGRA8Unorm,
RafxFormat::B8G8R8A8_SRGB => MTLPixelFormat::BGRA8Unorm_sRGB,
RafxFormat::R16_UNORM => MTLPixelFormat::R16Unorm,
RafxFormat::R16_SNORM => MTLPixelFormat::R16Snorm,
RafxFormat::R16_UINT => MTLPixelFormat::R16Uint,
RafxFormat::R16_SINT => MTLPixelFormat::R16Sint,
RafxFormat::R16_SFLOAT => MTLPixelFormat::R16Float,
RafxFormat::R16G16_UNORM => MTLPixelFormat::RG16Float,
RafxFormat::R16G16_SNORM => MTLPixelFormat::RG16Snorm,
RafxFormat::R16G16_UINT => MTLPixelFormat::RG16Uint,
RafxFormat::R16G16_SINT => MTLPixelFormat::RG16Sint,
RafxFormat::R16G16_SFLOAT => MTLPixelFormat::RG16Float,
RafxFormat::R16G16B16A16_UNORM => MTLPixelFormat::RGBA16Unorm,
RafxFormat::R16G16B16A16_SNORM => MTLPixelFormat::RGBA16Snorm,
RafxFormat::R16G16B16A16_UINT => MTLPixelFormat::RGBA16Uint,
RafxFormat::R16G16B16A16_SINT => MTLPixelFormat::RGBA16Sint,
RafxFormat::R16G16B16A16_SFLOAT => MTLPixelFormat::RGBA16Float,
RafxFormat::R32_UINT => MTLPixelFormat::R32Uint,
RafxFormat::R32_SINT => MTLPixelFormat::R32Sint,
RafxFormat::R32_SFLOAT => MTLPixelFormat::R32Float,
RafxFormat::R32G32_UINT => MTLPixelFormat::RG32Uint,
RafxFormat::R32G32_SINT => MTLPixelFormat::RG32Sint,
RafxFormat::R32G32_SFLOAT => MTLPixelFormat::RG32Float,
RafxFormat::R32G32B32A32_UINT => MTLPixelFormat::RGBA32Uint,
RafxFormat::R32G32B32A32_SINT => MTLPixelFormat::RGBA32Sint,
RafxFormat::R32G32B32A32_SFLOAT => MTLPixelFormat::RGBA32Float,
RafxFormat::D16_UNORM => MTLPixelFormat::Depth16Unorm,
RafxFormat::D32_SFLOAT => MTLPixelFormat::Depth32Float,
RafxFormat::S8_UINT => MTLPixelFormat::Stencil8,
RafxFormat::D24_UNORM_S8_UINT => MTLPixelFormat::Depth24Unorm_Stencil8,
RafxFormat::D32_SFLOAT_S8_UINT => MTLPixelFormat::Depth32Float_Stencil8,
RafxFormat::BC1_RGBA_UNORM_BLOCK => MTLPixelFormat::BC1_RGBA,
RafxFormat::BC1_RGBA_SRGB_BLOCK => MTLPixelFormat::BC1_RGBA_sRGB,
RafxFormat::BC2_UNORM_BLOCK => MTLPixelFormat::BC2_RGBA,
RafxFormat::BC2_SRGB_BLOCK => MTLPixelFormat::BC2_RGBA_sRGB,
RafxFormat::BC3_UNORM_BLOCK => MTLPixelFormat::BC3_RGBA,
RafxFormat::BC3_SRGB_BLOCK => MTLPixelFormat::BC3_RGBA_sRGB,
RafxFormat::BC4_UNORM_BLOCK => MTLPixelFormat::BC4_RUnorm,
RafxFormat::BC4_SNORM_BLOCK => MTLPixelFormat::BC4_RSnorm,
RafxFormat::BC5_UNORM_BLOCK => MTLPixelFormat::BC5_RGUnorm,
RafxFormat::BC5_SNORM_BLOCK => MTLPixelFormat::BC5_RGSnorm,
RafxFormat::BC6H_UFLOAT_BLOCK => MTLPixelFormat::BC6H_RGBUfloat,
RafxFormat::BC6H_SFLOAT_BLOCK => MTLPixelFormat::BC6H_RGBFloat,
RafxFormat::BC7_UNORM_BLOCK => MTLPixelFormat::BC7_RGBAUnorm,
RafxFormat::BC7_SRGB_BLOCK => MTLPixelFormat::BC7_RGBAUnorm_sRGB,
RafxFormat::ETC2_R8G8B8_UNORM_BLOCK => MTLPixelFormat::ETC2_RGB8,
RafxFormat::ETC2_R8G8B8_SRGB_BLOCK => MTLPixelFormat::ETC2_RGB8_sRGB,
RafxFormat::ETC2_R8G8B8A1_UNORM_BLOCK => MTLPixelFormat::ETC2_RGB8A1,
RafxFormat::ETC2_R8G8B8A1_SRGB_BLOCK => MTLPixelFormat::ETC2_RGB8A1_sRGB,
RafxFormat::EAC_R11_UNORM_BLOCK => MTLPixelFormat::EAC_R11Unorm,
RafxFormat::EAC_R11_SNORM_BLOCK => MTLPixelFormat::EAC_R11Snorm,
RafxFormat::EAC_R11G11_UNORM_BLOCK => MTLPixelFormat::EAC_RG11Unorm,
RafxFormat::EAC_R11G11_SNORM_BLOCK => MTLPixelFormat::EAC_RG11Snorm,
RafxFormat::ASTC_4X4_UNORM_BLOCK => MTLPixelFormat::ASTC_4x4_LDR,
RafxFormat::ASTC_4X4_SRGB_BLOCK => MTLPixelFormat::ASTC_4x4_sRGB,
RafxFormat::ASTC_5X4_UNORM_BLOCK => MTLPixelFormat::ASTC_5x4_LDR,
RafxFormat::ASTC_5X4_SRGB_BLOCK => MTLPixelFormat::ASTC_5x4_sRGB,
RafxFormat::ASTC_5X5_UNORM_BLOCK => MTLPixelFormat::ASTC_5x5_LDR,
RafxFormat::ASTC_5X5_SRGB_BLOCK => MTLPixelFormat::ASTC_5x5_sRGB,
RafxFormat::ASTC_6X5_UNORM_BLOCK => MTLPixelFormat::ASTC_6x5_LDR,
RafxFormat::ASTC_6X5_SRGB_BLOCK => MTLPixelFormat::ASTC_6x5_sRGB,
RafxFormat::ASTC_6X6_UNORM_BLOCK => MTLPixelFormat::ASTC_6x6_LDR,
RafxFormat::ASTC_6X6_SRGB_BLOCK => MTLPixelFormat::ASTC_6x6_sRGB,
RafxFormat::ASTC_8X5_UNORM_BLOCK => MTLPixelFormat::ASTC_8x5_LDR,
RafxFormat::ASTC_8X5_SRGB_BLOCK => MTLPixelFormat::ASTC_8x5_sRGB,
RafxFormat::ASTC_8X6_UNORM_BLOCK => MTLPixelFormat::ASTC_8x6_LDR,
RafxFormat::ASTC_8X6_SRGB_BLOCK => MTLPixelFormat::ASTC_8x6_sRGB,
RafxFormat::ASTC_8X8_UNORM_BLOCK => MTLPixelFormat::ASTC_8x8_LDR,
RafxFormat::ASTC_8X8_SRGB_BLOCK => MTLPixelFormat::ASTC_8x8_sRGB,
RafxFormat::ASTC_10X5_UNORM_BLOCK => MTLPixelFormat::ASTC_10x5_LDR,
RafxFormat::ASTC_10X5_SRGB_BLOCK => MTLPixelFormat::ASTC_10x5_sRGB,
RafxFormat::ASTC_10X6_UNORM_BLOCK => MTLPixelFormat::ASTC_10x6_LDR,
RafxFormat::ASTC_10X6_SRGB_BLOCK => MTLPixelFormat::ASTC_10x6_sRGB,
RafxFormat::ASTC_10X8_UNORM_BLOCK => MTLPixelFormat::ASTC_10x8_LDR,
RafxFormat::ASTC_10X8_SRGB_BLOCK => MTLPixelFormat::ASTC_10x8_sRGB,
RafxFormat::ASTC_10X10_UNORM_BLOCK => MTLPixelFormat::ASTC_10x10_LDR,
RafxFormat::ASTC_10X10_SRGB_BLOCK => MTLPixelFormat::ASTC_10x10_sRGB,
RafxFormat::ASTC_12X10_UNORM_BLOCK => MTLPixelFormat::ASTC_12x10_LDR,
RafxFormat::ASTC_12X10_SRGB_BLOCK => MTLPixelFormat::ASTC_12x10_sRGB,
RafxFormat::ASTC_12X12_UNORM_BLOCK => MTLPixelFormat::ASTC_12x12_LDR,
RafxFormat::ASTC_12X12_SRGB_BLOCK => MTLPixelFormat::ASTC_12x12_sRGB,
_ => unimplemented!(),
}
}
}
#[cfg(feature = "rafx-metal")]
impl Into<MTLVertexFormat> for RafxFormat {
fn into(self) -> MTLVertexFormat {
match self {
RafxFormat::R8_UNORM => MTLVertexFormat::UCharNormalized,
RafxFormat::R8_SNORM => MTLVertexFormat::CharNormalized,
RafxFormat::R8_UINT => MTLVertexFormat::UChar,
RafxFormat::R8_SINT => MTLVertexFormat::Char,
RafxFormat::R8G8_UNORM => MTLVertexFormat::UChar2Normalized,
RafxFormat::R8G8_SNORM => MTLVertexFormat::Char2Normalized,
RafxFormat::R8G8_UINT => MTLVertexFormat::UChar2,
RafxFormat::R8G8_SINT => MTLVertexFormat::Char2,
RafxFormat::R8G8B8_UNORM => MTLVertexFormat::UChar3Normalized,
RafxFormat::R8G8B8_SNORM => MTLVertexFormat::Char3Normalized,
RafxFormat::R8G8B8_UINT => MTLVertexFormat::UChar3,
RafxFormat::R8G8B8_SINT => MTLVertexFormat::Char3,
RafxFormat::R8G8B8A8_UNORM => MTLVertexFormat::UChar4Normalized,
RafxFormat::R8G8B8A8_SNORM => MTLVertexFormat::Char4Normalized,
RafxFormat::R8G8B8A8_UINT => MTLVertexFormat::UChar4,
RafxFormat::R8G8B8A8_SINT => MTLVertexFormat::Char4,
RafxFormat::B8G8R8A8_UNORM => MTLVertexFormat::UChar4Normalized_BGRA,
RafxFormat::R16_UNORM => MTLVertexFormat::UShortNormalized,
RafxFormat::R16_SNORM => MTLVertexFormat::ShortNormalized,
RafxFormat::R16_UINT => MTLVertexFormat::UShort,
RafxFormat::R16_SINT => MTLVertexFormat::Short,
RafxFormat::R16_SFLOAT => MTLVertexFormat::Half,
RafxFormat::R16G16_UNORM => MTLVertexFormat::UShort2Normalized,
RafxFormat::R16G16_SNORM => MTLVertexFormat::Short2Normalized,
RafxFormat::R16G16_UINT => MTLVertexFormat::UShort2,
RafxFormat::R16G16_SINT => MTLVertexFormat::Short2,
RafxFormat::R16G16_SFLOAT => MTLVertexFormat::Half2,
RafxFormat::R16G16B16_UNORM => MTLVertexFormat::UShort3Normalized,
RafxFormat::R16G16B16_SNORM => MTLVertexFormat::Short3Normalized,
RafxFormat::R16G16B16_UINT => MTLVertexFormat::UShort3,
RafxFormat::R16G16B16_SINT => MTLVertexFormat::Short3,
RafxFormat::R16G16B16_SFLOAT => MTLVertexFormat::Half3,
RafxFormat::R16G16B16A16_UNORM => MTLVertexFormat::UShort4Normalized,
RafxFormat::R16G16B16A16_SNORM => MTLVertexFormat::Short4Normalized,
RafxFormat::R16G16B16A16_UINT => MTLVertexFormat::UShort4,
RafxFormat::R16G16B16A16_SINT => MTLVertexFormat::Short4,
RafxFormat::R16G16B16A16_SFLOAT => MTLVertexFormat::Half4,
RafxFormat::R32_UINT => MTLVertexFormat::UInt,
RafxFormat::R32_SINT => MTLVertexFormat::Int,
RafxFormat::R32_SFLOAT => MTLVertexFormat::Float,
RafxFormat::R32G32_UINT => MTLVertexFormat::UInt2,
RafxFormat::R32G32_SINT => MTLVertexFormat::Int2,
RafxFormat::R32G32_SFLOAT => MTLVertexFormat::Float2,
RafxFormat::R32G32B32_UINT => MTLVertexFormat::UInt3,
RafxFormat::R32G32B32_SINT => MTLVertexFormat::Int3,
RafxFormat::R32G32B32_SFLOAT => MTLVertexFormat::Float3,
RafxFormat::R32G32B32A32_UINT => MTLVertexFormat::UInt4,
RafxFormat::R32G32B32A32_SINT => MTLVertexFormat::Int4,
RafxFormat::R32G32B32A32_SFLOAT => MTLVertexFormat::Float4,
_ => unimplemented!(),
}
}
}
impl RafxFormat {
pub fn is_depth_only(self) -> bool {
match self {
RafxFormat::D16_UNORM | RafxFormat::X8_D24_UNORM_PACK32 | RafxFormat::D32_SFLOAT => {
true
}
_ => false,
}
}
pub fn is_stencil_only(self) -> bool {
self == RafxFormat::S8_UINT
}
pub fn is_depth_and_stencil(self) -> bool {
match self {
RafxFormat::D16_UNORM_S8_UINT
| RafxFormat::D24_UNORM_S8_UINT
| RafxFormat::D32_SFLOAT_S8_UINT => true,
_ => false,
}
}
pub fn has_depth(self) -> bool {
self.is_depth_and_stencil() || self.is_depth_only()
}
pub fn has_stencil(self) -> bool {
self.is_depth_and_stencil() || self.is_stencil_only()
}
pub fn has_depth_or_stencil(self) -> bool {
self.is_depth_and_stencil() || self.is_stencil_only() || self.is_depth_only()
}
pub fn is_undefined(self) -> bool {
self == RafxFormat::UNDEFINED
}
pub fn block_or_pixel_size_in_bytes(self) -> u32 {
match self {
RafxFormat::UNDEFINED => unimplemented!(),
RafxFormat::R4G4_UNORM_PACK8 => 1,
RafxFormat::R4G4B4A4_UNORM_PACK16 => 2,
RafxFormat::B4G4R4A4_UNORM_PACK16 => 2,
RafxFormat::R5G6B5_UNORM_PACK16 => 2,
RafxFormat::B5G6R5_UNORM_PACK16 => 2,
RafxFormat::R5G5B5A1_UNORM_PACK16 => 2,
RafxFormat::B5G5R5A1_UNORM_PACK16 => 2,
RafxFormat::A1R5G5B5_UNORM_PACK16 => 2,
RafxFormat::R8_UNORM => 1,
RafxFormat::R8_SNORM => 1,
RafxFormat::R8_USCALED => 1,
RafxFormat::R8_SSCALED => 1,
RafxFormat::R8_UINT => 1,
RafxFormat::R8_SINT => 1,
RafxFormat::R8_SRGB => 1,
RafxFormat::R8G8_UNORM => 2,
RafxFormat::R8G8_SNORM => 2,
RafxFormat::R8G8_USCALED => 2,
RafxFormat::R8G8_SSCALED => 2,
RafxFormat::R8G8_UINT => 2,
RafxFormat::R8G8_SINT => 2,
RafxFormat::R8G8_SRGB => 2,
RafxFormat::R8G8B8_UNORM => 3,
RafxFormat::R8G8B8_SNORM => 3,
RafxFormat::R8G8B8_USCALED => 3,
RafxFormat::R8G8B8_SSCALED => 3,
RafxFormat::R8G8B8_UINT => 3,
RafxFormat::R8G8B8_SINT => 3,
RafxFormat::R8G8B8_SRGB => 3,
RafxFormat::B8G8R8_UNORM => 3,
RafxFormat::B8G8R8_SNORM => 3,
RafxFormat::B8G8R8_USCALED => 3,
RafxFormat::B8G8R8_SSCALED => 3,
RafxFormat::B8G8R8_UINT => 3,
RafxFormat::B8G8R8_SINT => 3,
RafxFormat::B8G8R8_SRGB => 3,
RafxFormat::R8G8B8A8_UNORM => 4,
RafxFormat::R8G8B8A8_SNORM => 4,
RafxFormat::R8G8B8A8_USCALED => 4,
RafxFormat::R8G8B8A8_SSCALED => 4,
RafxFormat::R8G8B8A8_UINT => 4,
RafxFormat::R8G8B8A8_SINT => 4,
RafxFormat::R8G8B8A8_SRGB => 4,
RafxFormat::B8G8R8A8_UNORM => 4,
RafxFormat::B8G8R8A8_SNORM => 4,
RafxFormat::B8G8R8A8_USCALED => 4,
RafxFormat::B8G8R8A8_SSCALED => 4,
RafxFormat::B8G8R8A8_UINT => 4,
RafxFormat::B8G8R8A8_SINT => 4,
RafxFormat::B8G8R8A8_SRGB => 4,
RafxFormat::A8B8G8R8_UNORM_PACK32 => 4,
RafxFormat::A8B8G8R8_SNORM_PACK32 => 4,
RafxFormat::A8B8G8R8_USCALED_PACK32 => 4,
RafxFormat::A8B8G8R8_SSCALED_PACK32 => 4,
RafxFormat::A8B8G8R8_UINT_PACK32 => 4,
RafxFormat::A8B8G8R8_SINT_PACK32 => 4,
RafxFormat::A8B8G8R8_SRGB_PACK32 => 4,
RafxFormat::A2R10G10B10_UNORM_PACK32 => 4,
RafxFormat::A2R10G10B10_SNORM_PACK32 => 4,
RafxFormat::A2R10G10B10_USCALED_PACK32 => 4,
RafxFormat::A2R10G10B10_SSCALED_PACK32 => 4,
RafxFormat::A2R10G10B10_UINT_PACK32 => 4,
RafxFormat::A2R10G10B10_SINT_PACK32 => 4,
RafxFormat::A2B10G10R10_UNORM_PACK32 => 4,
RafxFormat::A2B10G10R10_SNORM_PACK32 => 4,
RafxFormat::A2B10G10R10_USCALED_PACK32 => 4,
RafxFormat::A2B10G10R10_SSCALED_PACK32 => 4,
RafxFormat::A2B10G10R10_UINT_PACK32 => 4,
RafxFormat::A2B10G10R10_SINT_PACK32 => 4,
RafxFormat::R16_UNORM => 2,
RafxFormat::R16_SNORM => 2,
RafxFormat::R16_USCALED => 2,
RafxFormat::R16_SSCALED => 2,
RafxFormat::R16_UINT => 2,
RafxFormat::R16_SINT => 2,
RafxFormat::R16_SFLOAT => 2,
RafxFormat::R16G16_UNORM => 4,
RafxFormat::R16G16_SNORM => 4,
RafxFormat::R16G16_USCALED => 4,
RafxFormat::R16G16_SSCALED => 4,
RafxFormat::R16G16_UINT => 4,
RafxFormat::R16G16_SINT => 4,
RafxFormat::R16G16_SFLOAT => 4,
RafxFormat::R16G16B16_UNORM => 6,
RafxFormat::R16G16B16_SNORM => 6,
RafxFormat::R16G16B16_USCALED => 6,
RafxFormat::R16G16B16_SSCALED => 6,
RafxFormat::R16G16B16_UINT => 6,
RafxFormat::R16G16B16_SINT => 6,
RafxFormat::R16G16B16_SFLOAT => 6,
RafxFormat::R16G16B16A16_UNORM => 8,
RafxFormat::R16G16B16A16_SNORM => 8,
RafxFormat::R16G16B16A16_USCALED => 8,
RafxFormat::R16G16B16A16_SSCALED => 8,
RafxFormat::R16G16B16A16_UINT => 8,
RafxFormat::R16G16B16A16_SINT => 8,
RafxFormat::R16G16B16A16_SFLOAT => 8,
RafxFormat::R32_UINT => 4,
RafxFormat::R32_SINT => 4,
RafxFormat::R32_SFLOAT => 4,
RafxFormat::R32G32_UINT => 8,
RafxFormat::R32G32_SINT => 8,
RafxFormat::R32G32_SFLOAT => 8,
RafxFormat::R32G32B32_UINT => 12,
RafxFormat::R32G32B32_SINT => 12,
RafxFormat::R32G32B32_SFLOAT => 12,
RafxFormat::R32G32B32A32_UINT => 16,
RafxFormat::R32G32B32A32_SINT => 16,
RafxFormat::R32G32B32A32_SFLOAT => 16,
RafxFormat::R64_UINT => 8,
RafxFormat::R64_SINT => 8,
RafxFormat::R64_SFLOAT => 8,
RafxFormat::R64G64_UINT => 16,
RafxFormat::R64G64_SINT => 16,
RafxFormat::R64G64_SFLOAT => 16,
RafxFormat::R64G64B64_UINT => 24,
RafxFormat::R64G64B64_SINT => 24,
RafxFormat::R64G64B64_SFLOAT => 24,
RafxFormat::R64G64B64A64_UINT => 32,
RafxFormat::R64G64B64A64_SINT => 32,
RafxFormat::R64G64B64A64_SFLOAT => 32,
RafxFormat::B10G11R11_UFLOAT_PACK32 => 4,
RafxFormat::E5B9G9R9_UFLOAT_PACK32 => 4,
RafxFormat::D16_UNORM => 2,
RafxFormat::X8_D24_UNORM_PACK32 => 4,
RafxFormat::D32_SFLOAT => 4,
RafxFormat::S8_UINT => 1,
RafxFormat::D16_UNORM_S8_UINT => 3,
RafxFormat::D24_UNORM_S8_UINT => 4,
RafxFormat::D32_SFLOAT_S8_UINT => 5,
RafxFormat::BC1_RGB_UNORM_BLOCK => 8,
RafxFormat::BC1_RGB_SRGB_BLOCK => 8,
RafxFormat::BC1_RGBA_UNORM_BLOCK => 8,
RafxFormat::BC1_RGBA_SRGB_BLOCK => 8,
RafxFormat::BC2_UNORM_BLOCK => 16,
RafxFormat::BC2_SRGB_BLOCK => 16,
RafxFormat::BC3_UNORM_BLOCK => 16,
RafxFormat::BC3_SRGB_BLOCK => 16,
RafxFormat::BC4_UNORM_BLOCK => 8,
RafxFormat::BC4_SNORM_BLOCK => 8,
RafxFormat::BC5_UNORM_BLOCK => 16,
RafxFormat::BC5_SNORM_BLOCK => 16,
RafxFormat::BC6H_UFLOAT_BLOCK => 16,
RafxFormat::BC6H_SFLOAT_BLOCK => 16,
RafxFormat::BC7_UNORM_BLOCK => 16,
RafxFormat::BC7_SRGB_BLOCK => 16,
RafxFormat::ETC2_R8G8B8_UNORM_BLOCK => 8,
RafxFormat::ETC2_R8G8B8_SRGB_BLOCK => 8,
RafxFormat::ETC2_R8G8B8A1_UNORM_BLOCK => 8,
RafxFormat::ETC2_R8G8B8A1_SRGB_BLOCK => 8,
RafxFormat::ETC2_R8G8B8A8_UNORM_BLOCK => 8,
RafxFormat::ETC2_R8G8B8A8_SRGB_BLOCK => 8,
RafxFormat::EAC_R11_UNORM_BLOCK => 8,
RafxFormat::EAC_R11_SNORM_BLOCK => 8,
RafxFormat::EAC_R11G11_UNORM_BLOCK => 8,
RafxFormat::EAC_R11G11_SNORM_BLOCK => 8,
RafxFormat::ASTC_4X4_UNORM_BLOCK => 16,
RafxFormat::ASTC_4X4_SRGB_BLOCK => 16,
RafxFormat::ASTC_5X4_UNORM_BLOCK => 16,
RafxFormat::ASTC_5X4_SRGB_BLOCK => 16,
RafxFormat::ASTC_5X5_UNORM_BLOCK => 16,
RafxFormat::ASTC_5X5_SRGB_BLOCK => 16,
RafxFormat::ASTC_6X5_UNORM_BLOCK => 16,
RafxFormat::ASTC_6X5_SRGB_BLOCK => 16,
RafxFormat::ASTC_6X6_UNORM_BLOCK => 16,
RafxFormat::ASTC_6X6_SRGB_BLOCK => 16,
RafxFormat::ASTC_8X5_UNORM_BLOCK => 16,
RafxFormat::ASTC_8X5_SRGB_BLOCK => 16,
RafxFormat::ASTC_8X6_UNORM_BLOCK => 16,
RafxFormat::ASTC_8X6_SRGB_BLOCK => 16,
RafxFormat::ASTC_8X8_UNORM_BLOCK => 16,
RafxFormat::ASTC_8X8_SRGB_BLOCK => 16,
RafxFormat::ASTC_10X5_UNORM_BLOCK => 16,
RafxFormat::ASTC_10X5_SRGB_BLOCK => 16,
RafxFormat::ASTC_10X6_UNORM_BLOCK => 16,
RafxFormat::ASTC_10X6_SRGB_BLOCK => 16,
RafxFormat::ASTC_10X8_UNORM_BLOCK => 16,
RafxFormat::ASTC_10X8_SRGB_BLOCK => 16,
RafxFormat::ASTC_10X10_UNORM_BLOCK => 16,
RafxFormat::ASTC_10X10_SRGB_BLOCK => 16,
RafxFormat::ASTC_12X10_UNORM_BLOCK => 16,
RafxFormat::ASTC_12X10_SRGB_BLOCK => 16,
RafxFormat::ASTC_12X12_UNORM_BLOCK => 16,
RafxFormat::ASTC_12X12_SRGB_BLOCK => 16,
}
}
pub fn block_width_in_pixels(self) -> u32 {
match self {
RafxFormat::UNDEFINED => unimplemented!(),
RafxFormat::BC1_RGB_UNORM_BLOCK => 4,
RafxFormat::BC1_RGB_SRGB_BLOCK => 4,
RafxFormat::BC1_RGBA_UNORM_BLOCK => 4,
RafxFormat::BC1_RGBA_SRGB_BLOCK => 4,
RafxFormat::BC2_UNORM_BLOCK => 4,
RafxFormat::BC2_SRGB_BLOCK => 4,
RafxFormat::BC3_UNORM_BLOCK => 4,
RafxFormat::BC3_SRGB_BLOCK => 4,
RafxFormat::BC4_UNORM_BLOCK => 4,
RafxFormat::BC4_SNORM_BLOCK => 4,
RafxFormat::BC5_UNORM_BLOCK => 4,
RafxFormat::BC5_SNORM_BLOCK => 4,
RafxFormat::BC6H_UFLOAT_BLOCK => 4,
RafxFormat::BC6H_SFLOAT_BLOCK => 4,
RafxFormat::BC7_UNORM_BLOCK => 4,
RafxFormat::BC7_SRGB_BLOCK => 4,
RafxFormat::ETC2_R8G8B8_UNORM_BLOCK => 4,
RafxFormat::ETC2_R8G8B8_SRGB_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A1_UNORM_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A1_SRGB_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A8_UNORM_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A8_SRGB_BLOCK => 4,
RafxFormat::EAC_R11_UNORM_BLOCK => 4,
RafxFormat::EAC_R11_SNORM_BLOCK => 4,
RafxFormat::EAC_R11G11_UNORM_BLOCK => 4,
RafxFormat::EAC_R11G11_SNORM_BLOCK => 4,
RafxFormat::ASTC_4X4_UNORM_BLOCK => 4,
RafxFormat::ASTC_4X4_SRGB_BLOCK => 4,
RafxFormat::ASTC_5X4_UNORM_BLOCK => 5,
RafxFormat::ASTC_5X4_SRGB_BLOCK => 5,
RafxFormat::ASTC_5X5_UNORM_BLOCK => 5,
RafxFormat::ASTC_5X5_SRGB_BLOCK => 5,
RafxFormat::ASTC_6X5_UNORM_BLOCK => 6,
RafxFormat::ASTC_6X5_SRGB_BLOCK => 6,
RafxFormat::ASTC_6X6_UNORM_BLOCK => 6,
RafxFormat::ASTC_6X6_SRGB_BLOCK => 6,
RafxFormat::ASTC_8X5_UNORM_BLOCK => 8,
RafxFormat::ASTC_8X5_SRGB_BLOCK => 8,
RafxFormat::ASTC_8X6_UNORM_BLOCK => 8,
RafxFormat::ASTC_8X6_SRGB_BLOCK => 8,
RafxFormat::ASTC_8X8_UNORM_BLOCK => 8,
RafxFormat::ASTC_8X8_SRGB_BLOCK => 8,
RafxFormat::ASTC_10X5_UNORM_BLOCK => 10,
RafxFormat::ASTC_10X5_SRGB_BLOCK => 10,
RafxFormat::ASTC_10X6_UNORM_BLOCK => 10,
RafxFormat::ASTC_10X6_SRGB_BLOCK => 10,
RafxFormat::ASTC_10X8_UNORM_BLOCK => 10,
RafxFormat::ASTC_10X8_SRGB_BLOCK => 10,
RafxFormat::ASTC_10X10_UNORM_BLOCK => 10,
RafxFormat::ASTC_10X10_SRGB_BLOCK => 10,
RafxFormat::ASTC_12X10_UNORM_BLOCK => 12,
RafxFormat::ASTC_12X10_SRGB_BLOCK => 12,
RafxFormat::ASTC_12X12_UNORM_BLOCK => 12,
RafxFormat::ASTC_12X12_SRGB_BLOCK => 12,
_ => 1,
}
}
pub fn block_height_in_pixels(self) -> u32 {
match self {
RafxFormat::UNDEFINED => unimplemented!(),
RafxFormat::BC1_RGB_UNORM_BLOCK => 4,
RafxFormat::BC1_RGB_SRGB_BLOCK => 4,
RafxFormat::BC1_RGBA_UNORM_BLOCK => 4,
RafxFormat::BC1_RGBA_SRGB_BLOCK => 4,
RafxFormat::BC2_UNORM_BLOCK => 4,
RafxFormat::BC2_SRGB_BLOCK => 4,
RafxFormat::BC3_UNORM_BLOCK => 4,
RafxFormat::BC3_SRGB_BLOCK => 4,
RafxFormat::BC4_UNORM_BLOCK => 4,
RafxFormat::BC4_SNORM_BLOCK => 4,
RafxFormat::BC5_UNORM_BLOCK => 4,
RafxFormat::BC5_SNORM_BLOCK => 4,
RafxFormat::BC6H_UFLOAT_BLOCK => 4,
RafxFormat::BC6H_SFLOAT_BLOCK => 4,
RafxFormat::BC7_UNORM_BLOCK => 4,
RafxFormat::BC7_SRGB_BLOCK => 4,
RafxFormat::ETC2_R8G8B8_UNORM_BLOCK => 4,
RafxFormat::ETC2_R8G8B8_SRGB_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A1_UNORM_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A1_SRGB_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A8_UNORM_BLOCK => 4,
RafxFormat::ETC2_R8G8B8A8_SRGB_BLOCK => 4,
RafxFormat::EAC_R11_UNORM_BLOCK => 4,
RafxFormat::EAC_R11_SNORM_BLOCK => 4,
RafxFormat::EAC_R11G11_UNORM_BLOCK => 4,
RafxFormat::EAC_R11G11_SNORM_BLOCK => 4,
RafxFormat::ASTC_4X4_UNORM_BLOCK => 4,
RafxFormat::ASTC_4X4_SRGB_BLOCK => 4,
RafxFormat::ASTC_5X4_UNORM_BLOCK => 4,
RafxFormat::ASTC_5X4_SRGB_BLOCK => 4,
RafxFormat::ASTC_5X5_UNORM_BLOCK => 5,
RafxFormat::ASTC_5X5_SRGB_BLOCK => 5,
RafxFormat::ASTC_6X5_UNORM_BLOCK => 5,
RafxFormat::ASTC_6X5_SRGB_BLOCK => 5,
RafxFormat::ASTC_6X6_UNORM_BLOCK => 6,
RafxFormat::ASTC_6X6_SRGB_BLOCK => 6,
RafxFormat::ASTC_8X5_UNORM_BLOCK => 5,
RafxFormat::ASTC_8X5_SRGB_BLOCK => 5,
RafxFormat::ASTC_8X6_UNORM_BLOCK => 6,
RafxFormat::ASTC_8X6_SRGB_BLOCK => 6,
RafxFormat::ASTC_8X8_UNORM_BLOCK => 8,
RafxFormat::ASTC_8X8_SRGB_BLOCK => 8,
RafxFormat::ASTC_10X5_UNORM_BLOCK => 5,
RafxFormat::ASTC_10X5_SRGB_BLOCK => 5,
RafxFormat::ASTC_10X6_UNORM_BLOCK => 6,
RafxFormat::ASTC_10X6_SRGB_BLOCK => 6,
RafxFormat::ASTC_10X8_UNORM_BLOCK => 8,
RafxFormat::ASTC_10X8_SRGB_BLOCK => 8,
RafxFormat::ASTC_10X10_UNORM_BLOCK => 10,
RafxFormat::ASTC_10X10_SRGB_BLOCK => 10,
RafxFormat::ASTC_12X10_UNORM_BLOCK => 10,
RafxFormat::ASTC_12X10_SRGB_BLOCK => 10,
RafxFormat::ASTC_12X12_UNORM_BLOCK => 12,
RafxFormat::ASTC_12X12_SRGB_BLOCK => 12,
_ => 1,
}
}
}
pub mod recommended_formats {
use super::RafxFormat;
pub const COLOR_FORMATS_SDR: [RafxFormat; 1] = [
RafxFormat::R8G8B8A8_SNORM,
];
pub const COLOR_FORMATS_HDR: [RafxFormat; 1] = [
RafxFormat::R32G32B32A32_SFLOAT,
];
pub const DEPTH_FORMATS: [RafxFormat; 3] = [
RafxFormat::D32_SFLOAT,
RafxFormat::D32_SFLOAT_S8_UINT,
RafxFormat::D24_UNORM_S8_UINT,
];
}