mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 04:30:10 +01:00
util: Kill array vs arith layouts. Revamp UTIL_FORMAT_LAYOUT_xxx.
Too confusing. I now can get the same information through other means.
This commit is contained in:
parent
b64b78e7c3
commit
816d23505a
4 changed files with 163 additions and 180 deletions
|
|
@ -1,135 +1,135 @@
|
|||
# Typical rendertarget formats
|
||||
PIPE_FORMAT_A8R8G8B8_UNORM , arith , 1, 1, un8 , un8 , un8 , un8 , zyxw, rgb
|
||||
PIPE_FORMAT_X8R8G8B8_UNORM , arith , 1, 1, un8 , un8 , un8 , un8 , zyx1, rgb
|
||||
PIPE_FORMAT_B8G8R8A8_UNORM , arith , 1, 1, un8 , un8 , un8 , un8 , yzwx, rgb
|
||||
PIPE_FORMAT_B8G8R8X8_UNORM , arith , 1, 1, un8 , un8 , un8 , un8 , yzw1, rgb
|
||||
PIPE_FORMAT_A1R5G5B5_UNORM , arith , 1, 1, un5 , un5 , un5 , un1 , zyxw, rgb
|
||||
PIPE_FORMAT_A4R4G4B4_UNORM , arith , 1, 1, un4 , un4 , un4 , un4 , zyxw, rgb
|
||||
PIPE_FORMAT_R5G6B5_UNORM , arith , 1, 1, un5 , un6 , un5 , , zyx1, rgb
|
||||
PIPE_FORMAT_A2B10G10R10_UNORM , arith , 1, 1, un10, un10, un10, un2 , xyzw, rgb
|
||||
PIPE_FORMAT_A8R8G8B8_UNORM , plain, 1, 1, un8 , un8 , un8 , un8 , zyxw, rgb
|
||||
PIPE_FORMAT_X8R8G8B8_UNORM , plain, 1, 1, un8 , un8 , un8 , un8 , zyx1, rgb
|
||||
PIPE_FORMAT_B8G8R8A8_UNORM , plain, 1, 1, un8 , un8 , un8 , un8 , yzwx, rgb
|
||||
PIPE_FORMAT_B8G8R8X8_UNORM , plain, 1, 1, un8 , un8 , un8 , un8 , yzw1, rgb
|
||||
PIPE_FORMAT_A1R5G5B5_UNORM , plain, 1, 1, un5 , un5 , un5 , un1 , zyxw, rgb
|
||||
PIPE_FORMAT_A4R4G4B4_UNORM , plain, 1, 1, un4 , un4 , un4 , un4 , zyxw, rgb
|
||||
PIPE_FORMAT_R5G6B5_UNORM , plain, 1, 1, un5 , un6 , un5 , , zyx1, rgb
|
||||
PIPE_FORMAT_A2B10G10R10_UNORM , plain, 1, 1, un10, un10, un10, un2 , xyzw, rgb
|
||||
|
||||
# Luminance/Intensity/Alpha formats
|
||||
PIPE_FORMAT_L8_UNORM , arith , 1, 1, un8 , , , , xxx1, rgb
|
||||
PIPE_FORMAT_A8_UNORM , arith , 1, 1, un8 , , , , 000x, rgb
|
||||
PIPE_FORMAT_I8_UNORM , arith , 1, 1, un8 , , , , xxxx, rgb
|
||||
PIPE_FORMAT_A8L8_UNORM , arith , 1, 1, un8 , un8 , , , xxxy, rgb
|
||||
PIPE_FORMAT_L16_UNORM , arith , 1, 1, un16, , , , xxx1, rgb
|
||||
PIPE_FORMAT_L8_UNORM , plain, 1, 1, un8 , , , , xxx1, rgb
|
||||
PIPE_FORMAT_A8_UNORM , plain, 1, 1, un8 , , , , 000x, rgb
|
||||
PIPE_FORMAT_I8_UNORM , plain, 1, 1, un8 , , , , xxxx, rgb
|
||||
PIPE_FORMAT_A8L8_UNORM , plain, 1, 1, un8 , un8 , , , xxxy, rgb
|
||||
PIPE_FORMAT_L16_UNORM , plain, 1, 1, un16, , , , xxx1, rgb
|
||||
|
||||
# SRGB formats
|
||||
PIPE_FORMAT_L8_SRGB , arith , 1, 1, u8 , , , , xxx1, srgb
|
||||
PIPE_FORMAT_A8L8_SRGB , arith , 1, 1, u8 , u8 , , , xxxy, srgb
|
||||
PIPE_FORMAT_R8G8B8_SRGB , arith , 1, 1, u8 , u8 , u8 , , zyx1, srgb
|
||||
PIPE_FORMAT_R8G8B8A8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , wzyx, srgb
|
||||
PIPE_FORMAT_R8G8B8X8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , wzy1, srgb
|
||||
PIPE_FORMAT_A8R8G8B8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , zyxw, srgb
|
||||
PIPE_FORMAT_X8R8G8B8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , zyx1, srgb
|
||||
PIPE_FORMAT_B8G8R8A8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , yzwx, srgb
|
||||
PIPE_FORMAT_B8G8R8X8_SRGB , arith , 1, 1, u8 , u8 , u8 , u8 , yzw1, srgb
|
||||
PIPE_FORMAT_L8_SRGB , plain, 1, 1, u8 , , , , xxx1, srgb
|
||||
PIPE_FORMAT_A8L8_SRGB , plain, 1, 1, u8 , u8 , , , xxxy, srgb
|
||||
PIPE_FORMAT_R8G8B8_SRGB , plain, 1, 1, u8 , u8 , u8 , , zyx1, srgb
|
||||
PIPE_FORMAT_R8G8B8A8_SRGB , plain, 1, 1, u8 , u8 , u8 , u8 , wzyx, srgb
|
||||
PIPE_FORMAT_R8G8B8X8_SRGB , plain, 1, 1, u8 , u8 , u8 , u8 , wzy1, srgb
|
||||
PIPE_FORMAT_A8R8G8B8_SRGB , plain, 1, 1, u8 , u8 , u8 , u8 , zyxw, srgb
|
||||
PIPE_FORMAT_X8R8G8B8_SRGB , plain, 1, 1, u8 , u8 , u8 , u8 , zyx1, srgb
|
||||
PIPE_FORMAT_B8G8R8A8_SRGB , plain, 1, 1, u8 , u8 , u8 , u8 , yzwx, srgb
|
||||
PIPE_FORMAT_B8G8R8X8_SRGB , plain, 1, 1, u8 , u8 , u8 , u8 , yzw1, srgb
|
||||
|
||||
# Signed formats (typically used for bump map textures)
|
||||
PIPE_FORMAT_A8B8G8R8_SNORM , arith , 1, 1, sn8 , sn8 , sn8 , sn8 , wzyx, rgb
|
||||
PIPE_FORMAT_X8B8G8R8_SNORM , arith , 1, 1, sn8 , sn8 , sn8 , sn8 , wzy1, rgb
|
||||
PIPE_FORMAT_X8UB8UG8SR8S_NORM , arith , 1, 1, sn8 , sn8 , un8 , x8 , xyz1, rgb
|
||||
PIPE_FORMAT_B6UG5SR5S_NORM , arith , 1, 1, sn5 , sn5 , un6 , , xyz1, rgb
|
||||
PIPE_FORMAT_A8B8G8R8_SNORM , plain, 1, 1, sn8 , sn8 , sn8 , sn8 , wzyx, rgb
|
||||
PIPE_FORMAT_X8B8G8R8_SNORM , plain, 1, 1, sn8 , sn8 , sn8 , sn8 , wzy1, rgb
|
||||
PIPE_FORMAT_X8UB8UG8SR8S_NORM , plain, 1, 1, sn8 , sn8 , un8 , x8 , xyz1, rgb
|
||||
PIPE_FORMAT_B6UG5SR5S_NORM , plain, 1, 1, sn5 , sn5 , un6 , , xyz1, rgb
|
||||
|
||||
# Depth-stencil formats
|
||||
PIPE_FORMAT_S8_UNORM , array , 1, 1, un8 , , , , _x__, zs
|
||||
PIPE_FORMAT_Z16_UNORM , array , 1, 1, un16, , , , x___, zs
|
||||
PIPE_FORMAT_Z32_UNORM , array , 1, 1, un32, , , , x___, zs
|
||||
PIPE_FORMAT_Z32_FLOAT , array , 1, 1, f32 , , , , x___, zs
|
||||
PIPE_FORMAT_S8Z24_UNORM , arith , 1, 1, un24, un8 , , , xy__, zs
|
||||
PIPE_FORMAT_Z24S8_UNORM , arith , 1, 1, un8 , un24, , , yx__, zs
|
||||
PIPE_FORMAT_X8Z24_UNORM , arith , 1, 1, un24, un8 , , , x___, zs
|
||||
PIPE_FORMAT_Z24X8_UNORM , arith , 1, 1, un8 , un24, , , y___, zs
|
||||
PIPE_FORMAT_S8_UNORM , plain, 1, 1, un8 , , , , _x__, zs
|
||||
PIPE_FORMAT_Z16_UNORM , plain, 1, 1, un16, , , , x___, zs
|
||||
PIPE_FORMAT_Z32_UNORM , plain, 1, 1, un32, , , , x___, zs
|
||||
PIPE_FORMAT_Z32_FLOAT , plain, 1, 1, f32 , , , , x___, zs
|
||||
PIPE_FORMAT_S8Z24_UNORM , plain, 1, 1, un24, un8 , , , xy__, zs
|
||||
PIPE_FORMAT_Z24S8_UNORM , plain, 1, 1, un8 , un24, , , yx__, zs
|
||||
PIPE_FORMAT_X8Z24_UNORM , plain, 1, 1, un24, un8 , , , x___, zs
|
||||
PIPE_FORMAT_Z24X8_UNORM , plain, 1, 1, un8 , un24, , , y___, zs
|
||||
|
||||
# YUV formats
|
||||
PIPE_FORMAT_YCBCR , yuv , 2, 1, x32 , , , , xyz1, yuv
|
||||
PIPE_FORMAT_YCBCR_REV , yuv , 2, 1, x32 , , , , xyz1, yuv
|
||||
PIPE_FORMAT_YCBCR , subsampled, 2, 1, x32 , , , , xyz1, yuv
|
||||
PIPE_FORMAT_YCBCR_REV , subsampled, 2, 1, x32 , , , , xyz1, yuv
|
||||
|
||||
# Compressed formats
|
||||
PIPE_FORMAT_DXT1_RGB , dxt , 4, 4, x64 , , , , xyz1, rgb
|
||||
PIPE_FORMAT_DXT1_RGBA , dxt , 4, 4, x64 , , , , xyzw, rgb
|
||||
PIPE_FORMAT_DXT3_RGBA , dxt , 4, 4, x128, , , , xyzw, rgb
|
||||
PIPE_FORMAT_DXT5_RGBA , dxt , 4, 4, x128, , , , xyzw, rgb
|
||||
PIPE_FORMAT_DXT1_SRGB , dxt , 4, 4, x64 , , , , xyz1, srgb
|
||||
PIPE_FORMAT_DXT1_SRGBA , dxt , 4, 4, x64 , , , , xyzw, srgb
|
||||
PIPE_FORMAT_DXT3_SRGBA , dxt , 4, 4, x128, , , , xyzw, srgb
|
||||
PIPE_FORMAT_DXT5_SRGBA , dxt , 4, 4, x128, , , , xyzw, srgb
|
||||
PIPE_FORMAT_DXT1_RGB , compressed, 4, 4, x64 , , , , xyz1, rgb
|
||||
PIPE_FORMAT_DXT1_RGBA , compressed, 4, 4, x64 , , , , xyzw, rgb
|
||||
PIPE_FORMAT_DXT3_RGBA , compressed, 4, 4, x128, , , , xyzw, rgb
|
||||
PIPE_FORMAT_DXT5_RGBA , compressed, 4, 4, x128, , , , xyzw, rgb
|
||||
PIPE_FORMAT_DXT1_SRGB , compressed, 4, 4, x64 , , , , xyz1, srgb
|
||||
PIPE_FORMAT_DXT1_SRGBA , compressed, 4, 4, x64 , , , , xyzw, srgb
|
||||
PIPE_FORMAT_DXT3_SRGBA , compressed, 4, 4, x128, , , , xyzw, srgb
|
||||
PIPE_FORMAT_DXT5_SRGBA , compressed, 4, 4, x128, , , , xyzw, srgb
|
||||
|
||||
# Old vector formats
|
||||
# XXX: Swizzle notation is reversed for these!
|
||||
# See also:
|
||||
# - src/gallium/auxiliary/translate/translate_generic.c
|
||||
# - src/mesa/state_tracker/st_draw.c
|
||||
PIPE_FORMAT_R64_FLOAT , array , 1, 1, f64 , , , , x001, rgb
|
||||
PIPE_FORMAT_R64G64_FLOAT , array , 1, 1, f64 , f64 , , , xy01, rgb
|
||||
PIPE_FORMAT_R64G64B64_FLOAT , array , 1, 1, f64 , f64 , f64 , , xyz1, rgb
|
||||
PIPE_FORMAT_R64G64B64A64_FLOAT , array , 1, 1, f64 , f64 , f64 , f64 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_FLOAT , array , 1, 1, f32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_FLOAT , array , 1, 1, f32 , f32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_FLOAT , array , 1, 1, f32 , f32 , f32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_FLOAT , array , 1, 1, f32 , f32 , f32 , f32 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_UNORM , array , 1, 1, un32, , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_UNORM , array , 1, 1, un32, un32, , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_UNORM , array , 1, 1, un32, un32, un32, , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_UNORM , array , 1, 1, un32, un32, un32, un32, xyzw, rgb
|
||||
PIPE_FORMAT_R32_USCALED , array , 1, 1, u32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_USCALED , array , 1, 1, u32 , u32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_USCALED , array , 1, 1, u32 , u32 , u32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_USCALED , array , 1, 1, u32 , u32 , u32 , u32 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_SNORM , array , 1, 1, sn32, , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_SNORM , array , 1, 1, sn32, sn32, , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_SNORM , array , 1, 1, sn32, sn32, sn32, , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_SNORM , array , 1, 1, sn32, sn32, sn32, sn32, xyzw, rgb
|
||||
PIPE_FORMAT_R32_SSCALED , array , 1, 1, s32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_SSCALED , array , 1, 1, s32 , s32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_SSCALED , array , 1, 1, s32 , s32 , s32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_SSCALED , array , 1, 1, s32 , s32 , s32 , s32 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_FIXED , array , 1, 1, h32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_FIXED , array , 1, 1, h32 , h32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_FIXED , array , 1, 1, h32 , h32 , h32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_FIXED , array , 1, 1, h32 , h32 , h32 , h32 , xyzw, rgb
|
||||
PIPE_FORMAT_R16_UNORM , array , 1, 1, un16, , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_UNORM , array , 1, 1, un16, un16, , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_UNORM , array , 1, 1, un16, un16, un16, , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_UNORM , array , 1, 1, un16, un16, un16, un16, xyzw, rgb
|
||||
PIPE_FORMAT_R16_USCALED , array , 1, 1, u16 , , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_USCALED , array , 1, 1, u16 , u16 , , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_USCALED , array , 1, 1, u16 , u16 , u16 , , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_USCALED , array , 1, 1, u16 , u16 , u16 , u16 , xyzw, rgb
|
||||
PIPE_FORMAT_R16_SNORM , array , 1, 1, sn16, , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_SNORM , array , 1, 1, sn16, sn16, , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_SNORM , array , 1, 1, sn16, sn16, sn16, , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_SNORM , array , 1, 1, sn16, sn16, sn16, sn16, xyzw, rgb
|
||||
PIPE_FORMAT_R16_SSCALED , array , 1, 1, s16 , , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_SSCALED , array , 1, 1, s16 , s16 , , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_SSCALED , array , 1, 1, s16 , s16 , s16 , , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_SSCALED , array , 1, 1, s16 , s16 , s16 , s16 , xyzw, rgb
|
||||
PIPE_FORMAT_R8_UNORM , array , 1, 1, un8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_UNORM , array , 1, 1, un8 , un8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8_USCALED , array , 1, 1, u8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_USCALED , array , 1, 1, u8 , u8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8G8B8_USCALED , array , 1, 1, u8 , u8 , u8 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_USCALED , array , 1, 1, u8 , u8 , u8 , u8 , xyzw, rgb
|
||||
PIPE_FORMAT_R8_SNORM , array , 1, 1, sn8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_SNORM , array , 1, 1, sn8 , sn8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8G8B8_SNORM , array , 1, 1, sn8 , sn8 , sn8 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_SNORM , array , 1, 1, sn8 , sn8 , sn8 , sn8 , xyzw, rgb
|
||||
PIPE_FORMAT_R8_SSCALED , array , 1, 1, s8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_SSCALED , array , 1, 1, s8 , s8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8G8B8_SSCALED , array , 1, 1, s8 , s8 , s8 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_SSCALED , array , 1, 1, s8 , s8 , s8 , s8 , xyzw, rgb
|
||||
PIPE_FORMAT_R64_FLOAT , plain, 1, 1, f64 , , , , x001, rgb
|
||||
PIPE_FORMAT_R64G64_FLOAT , plain, 1, 1, f64 , f64 , , , xy01, rgb
|
||||
PIPE_FORMAT_R64G64B64_FLOAT , plain, 1, 1, f64 , f64 , f64 , , xyz1, rgb
|
||||
PIPE_FORMAT_R64G64B64A64_FLOAT , plain, 1, 1, f64 , f64 , f64 , f64 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_FLOAT , plain, 1, 1, f32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_FLOAT , plain, 1, 1, f32 , f32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_FLOAT , plain, 1, 1, f32 , f32 , f32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_FLOAT , plain, 1, 1, f32 , f32 , f32 , f32 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_UNORM , plain, 1, 1, un32, , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_UNORM , plain, 1, 1, un32, un32, , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_UNORM , plain, 1, 1, un32, un32, un32, , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_UNORM , plain, 1, 1, un32, un32, un32, un32, xyzw, rgb
|
||||
PIPE_FORMAT_R32_USCALED , plain, 1, 1, u32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_USCALED , plain, 1, 1, u32 , u32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_USCALED , plain, 1, 1, u32 , u32 , u32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_USCALED , plain, 1, 1, u32 , u32 , u32 , u32 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_SNORM , plain, 1, 1, sn32, , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_SNORM , plain, 1, 1, sn32, sn32, , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_SNORM , plain, 1, 1, sn32, sn32, sn32, , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_SNORM , plain, 1, 1, sn32, sn32, sn32, sn32, xyzw, rgb
|
||||
PIPE_FORMAT_R32_SSCALED , plain, 1, 1, s32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_SSCALED , plain, 1, 1, s32 , s32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_SSCALED , plain, 1, 1, s32 , s32 , s32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_SSCALED , plain, 1, 1, s32 , s32 , s32 , s32 , xyzw, rgb
|
||||
PIPE_FORMAT_R32_FIXED , plain, 1, 1, h32 , , , , x001, rgb
|
||||
PIPE_FORMAT_R32G32_FIXED , plain, 1, 1, h32 , h32 , , , xy01, rgb
|
||||
PIPE_FORMAT_R32G32B32_FIXED , plain, 1, 1, h32 , h32 , h32 , , xyz1, rgb
|
||||
PIPE_FORMAT_R32G32B32A32_FIXED , plain, 1, 1, h32 , h32 , h32 , h32 , xyzw, rgb
|
||||
PIPE_FORMAT_R16_UNORM , plain, 1, 1, un16, , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_UNORM , plain, 1, 1, un16, un16, , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_UNORM , plain, 1, 1, un16, un16, un16, , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_UNORM , plain, 1, 1, un16, un16, un16, un16, xyzw, rgb
|
||||
PIPE_FORMAT_R16_USCALED , plain, 1, 1, u16 , , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_USCALED , plain, 1, 1, u16 , u16 , , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_USCALED , plain, 1, 1, u16 , u16 , u16 , , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_USCALED , plain, 1, 1, u16 , u16 , u16 , u16 , xyzw, rgb
|
||||
PIPE_FORMAT_R16_SNORM , plain, 1, 1, sn16, , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_SNORM , plain, 1, 1, sn16, sn16, , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_SNORM , plain, 1, 1, sn16, sn16, sn16, , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_SNORM , plain, 1, 1, sn16, sn16, sn16, sn16, xyzw, rgb
|
||||
PIPE_FORMAT_R16_SSCALED , plain, 1, 1, s16 , , , , x001, rgb
|
||||
PIPE_FORMAT_R16G16_SSCALED , plain, 1, 1, s16 , s16 , , , xy01, rgb
|
||||
PIPE_FORMAT_R16G16B16_SSCALED , plain, 1, 1, s16 , s16 , s16 , , xyz1, rgb
|
||||
PIPE_FORMAT_R16G16B16A16_SSCALED , plain, 1, 1, s16 , s16 , s16 , s16 , xyzw, rgb
|
||||
PIPE_FORMAT_R8_UNORM , plain, 1, 1, un8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_UNORM , plain, 1, 1, un8 , un8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8_USCALED , plain, 1, 1, u8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_USCALED , plain, 1, 1, u8 , u8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8G8B8_USCALED , plain, 1, 1, u8 , u8 , u8 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_USCALED , plain, 1, 1, u8 , u8 , u8 , u8 , xyzw, rgb
|
||||
PIPE_FORMAT_R8_SNORM , plain, 1, 1, sn8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_SNORM , plain, 1, 1, sn8 , sn8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8G8B8_SNORM , plain, 1, 1, sn8 , sn8 , sn8 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_SNORM , plain, 1, 1, sn8 , sn8 , sn8 , sn8 , xyzw, rgb
|
||||
PIPE_FORMAT_R8_SSCALED , plain, 1, 1, s8 , , , , x001, rgb
|
||||
PIPE_FORMAT_R8G8_SSCALED , plain, 1, 1, s8 , s8 , , , xy01, rgb
|
||||
PIPE_FORMAT_R8G8B8_SSCALED , plain, 1, 1, s8 , s8 , s8 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_SSCALED , plain, 1, 1, s8 , s8 , s8 , s8 , xyzw, rgb
|
||||
|
||||
# Ambiguous formats
|
||||
# FIXME: They are used with different meanings in different places!!!
|
||||
PIPE_FORMAT_R8G8B8_UNORM , arith , 1, 1, un8 , un8 , un8 , , zyx1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_UNORM , arith , 1, 1, un8 , un8 , un8 , un8 , wzyx, rgb
|
||||
PIPE_FORMAT_R8G8B8_UNORM , plain, 1, 1, un8 , un8 , un8 , , zyx1, rgb
|
||||
PIPE_FORMAT_R8G8B8A8_UNORM , plain, 1, 1, un8 , un8 , un8 , un8 , wzyx, rgb
|
||||
|
||||
# Unused formats
|
||||
# XXX: Couldn't find any state tracker using them!!
|
||||
PIPE_FORMAT_B6G5R5_SNORM , arith , 1, 1, sn5 , sn5 , sn6 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8X8_SNORM , arith , 1, 1, sn8 , sn8 , sn8 , sn8 , wzy1, rgb
|
||||
PIPE_FORMAT_R8G8B8X8_USCALED , arith , 1, 1, u8 , u8 , u8 , u8 , wzy1, rgb
|
||||
PIPE_FORMAT_R8G8B8X8_SSCALED , arith , 1, 1, s8 , s8 , s8 , s8 , wzy1, rgb
|
||||
PIPE_FORMAT_B6G5R5_SNORM , plain, 1, 1, sn5 , sn5 , sn6 , , xyz1, rgb
|
||||
PIPE_FORMAT_R8G8B8X8_SNORM , plain, 1, 1, sn8 , sn8 , sn8 , sn8 , wzy1, rgb
|
||||
PIPE_FORMAT_R8G8B8X8_USCALED , plain, 1, 1, u8 , u8 , u8 , u8 , wzy1, rgb
|
||||
PIPE_FORMAT_R8G8B8X8_SSCALED , plain, 1, 1, s8 , s8 , s8 , s8 , wzy1, rgb
|
||||
# XXX: This one is mentioned in mesa and r300, but not anywhere else. Not sure it is actually needed
|
||||
PIPE_FORMAT_R8G8B8X8_UNORM , arith , 1, 1, un8 , un8 , un8 , un8 , wzy1, rgb
|
||||
PIPE_FORMAT_R8G8B8X8_UNORM , plain, 1, 1, un8 , un8 , un8 , un8 , wzy1, rgb
|
||||
|
|
|
|||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2009 Vmware, Inc.
|
||||
* Copyright 2009-2010 Vmware, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
|
|
@ -39,42 +39,32 @@ extern "C" {
|
|||
|
||||
|
||||
/**
|
||||
* Describe how to best pack/unpack pixels into/from the prescribed format.
|
||||
* Describe how to pack/unpack pixels into/from the prescribed format.
|
||||
*
|
||||
* These are used for automatic code generation of pixel packing and unpacking
|
||||
* routines (in compile time, e.g., u_format_access.py, or in runtime, like
|
||||
* llvmpipe does).
|
||||
*
|
||||
* Thumb rule is: if you're not code generating pixel packing/unpacking then
|
||||
* these are irrelevant for you.
|
||||
*
|
||||
* Note that this can be deduced from other values in util_format_description
|
||||
* structure. This is by design, to make code generation of pixel
|
||||
* packing/unpacking/sampling routines simple and efficient.
|
||||
*
|
||||
* XXX: This should be renamed to something like util_format_pack.
|
||||
* XXX: This could be renamed to something like util_format_pack, or broke down
|
||||
* in flags inside util_format_block that said exactly what we want.
|
||||
*/
|
||||
enum util_format_layout {
|
||||
/**
|
||||
* One or more components of mixed integer formats, arithmetically encoded
|
||||
* in a word up to 32bits.
|
||||
* Formats with util_format_block::width == util_format_block::height == 1
|
||||
* that can be described as an ordinary data structure.
|
||||
*/
|
||||
UTIL_FORMAT_LAYOUT_ARITH = 1,
|
||||
UTIL_FORMAT_LAYOUT_PLAIN = 0,
|
||||
|
||||
/**
|
||||
* One or more components, no mixed formats, each with equal power of two
|
||||
* number of bytes.
|
||||
* Formats with sub-sampled channels.
|
||||
*
|
||||
* This is for formats like YV12 where there is less than one sample per
|
||||
* pixel.
|
||||
*
|
||||
* XXX: This could actually b
|
||||
*/
|
||||
UTIL_FORMAT_LAYOUT_ARRAY = 2,
|
||||
UTIL_FORMAT_LAYOUT_SUBSAMPLED = 3,
|
||||
|
||||
/**
|
||||
* XXX: Not used yet. These might go away and be replaced by a single entry,
|
||||
* for formats where multiple pixels have to be
|
||||
* read in order to determine a single pixel value (i.e., block.width > 1
|
||||
* || block.height > 1)
|
||||
* An unspecified compression algorithm.
|
||||
*/
|
||||
UTIL_FORMAT_LAYOUT_YUV = 3,
|
||||
UTIL_FORMAT_LAYOUT_DXT = 4
|
||||
UTIL_FORMAT_LAYOUT_COMPRESSED = 4
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -131,7 +121,12 @@ struct util_format_description
|
|||
{
|
||||
enum pipe_format format;
|
||||
const char *name;
|
||||
|
||||
/**
|
||||
* Pixel block dimensions.
|
||||
*/
|
||||
struct util_format_block block;
|
||||
|
||||
enum util_format_layout layout;
|
||||
|
||||
/**
|
||||
|
|
@ -140,7 +135,7 @@ struct util_format_description
|
|||
unsigned nr_channels:3;
|
||||
|
||||
/**
|
||||
* Whether all channels have the same number of whole bytes.
|
||||
* Whether all channels have the same number of (whole) bytes.
|
||||
*/
|
||||
unsigned is_array:1;
|
||||
|
||||
|
|
@ -149,10 +144,27 @@ struct util_format_description
|
|||
*/
|
||||
unsigned is_mixed:1;
|
||||
|
||||
/**
|
||||
* Input channel description.
|
||||
*
|
||||
* Only valid for UTIL_FORMAT_LAYOUT_PLAIN formats.
|
||||
*/
|
||||
struct util_format_channel_description channel[4];
|
||||
|
||||
/**
|
||||
* Output channel swizzle.
|
||||
*
|
||||
* The order is either:
|
||||
* - RGBA
|
||||
* - YUV(A)
|
||||
* - ZS
|
||||
* depending on the colorspace.
|
||||
*/
|
||||
unsigned char swizzle[4];
|
||||
|
||||
/**
|
||||
* Colorspace transformation.
|
||||
*/
|
||||
enum util_format_colorspace colorspace;
|
||||
};
|
||||
|
||||
|
|
@ -192,7 +204,7 @@ util_format_is_compressed(enum pipe_format format)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
return desc->layout == UTIL_FORMAT_LAYOUT_DXT ? TRUE : FALSE;
|
||||
return desc->layout == UTIL_FORMAT_LAYOUT_COMPRESSED ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static INLINE boolean
|
||||
|
|
@ -266,14 +278,7 @@ util_format_get_blockwidth(enum pipe_format format)
|
|||
return 1;
|
||||
}
|
||||
|
||||
switch (desc->layout) {
|
||||
case UTIL_FORMAT_LAYOUT_YUV:
|
||||
return 2;
|
||||
case UTIL_FORMAT_LAYOUT_DXT:
|
||||
return 4;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
return desc->block.width;
|
||||
}
|
||||
|
||||
static INLINE uint
|
||||
|
|
@ -286,12 +291,7 @@ util_format_get_blockheight(enum pipe_format format)
|
|||
return 1;
|
||||
}
|
||||
|
||||
switch (desc->layout) {
|
||||
case UTIL_FORMAT_LAYOUT_DXT:
|
||||
return 4;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
return desc->block.height;
|
||||
}
|
||||
|
||||
static INLINE unsigned
|
||||
|
|
@ -386,30 +386,14 @@ util_format_has_alpha(enum pipe_format format)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
switch (desc->layout) {
|
||||
case UTIL_FORMAT_LAYOUT_ARITH:
|
||||
case UTIL_FORMAT_LAYOUT_ARRAY:
|
||||
/* FIXME: pf_get_component_bits( PIPE_FORMAT_A8L8_UNORM, PIPE_FORMAT_COMP_A ) should not return 0 right? */
|
||||
if (format == PIPE_FORMAT_A8_UNORM ||
|
||||
format == PIPE_FORMAT_A8L8_UNORM ||
|
||||
format == PIPE_FORMAT_A8L8_SRGB) {
|
||||
return TRUE;
|
||||
}
|
||||
return util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_RGB, 3) != 0;
|
||||
case UTIL_FORMAT_LAYOUT_YUV:
|
||||
switch (desc->colorspace) {
|
||||
case UTIL_FORMAT_COLORSPACE_RGB:
|
||||
case UTIL_FORMAT_COLORSPACE_SRGB:
|
||||
return desc->swizzle[3] != UTIL_FORMAT_SWIZZLE_1;
|
||||
case UTIL_FORMAT_COLORSPACE_YUV:
|
||||
return FALSE;
|
||||
case UTIL_FORMAT_COLORSPACE_ZS:
|
||||
return FALSE;
|
||||
case UTIL_FORMAT_LAYOUT_DXT:
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_DXT1_RGBA:
|
||||
case PIPE_FORMAT_DXT3_RGBA:
|
||||
case PIPE_FORMAT_DXT5_RGBA:
|
||||
case PIPE_FORMAT_DXT1_SRGBA:
|
||||
case PIPE_FORMAT_DXT3_SRGBA:
|
||||
case PIPE_FORMAT_DXT5_SRGBA:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
default:
|
||||
assert(0);
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ def is_format_supported(format):
|
|||
if format.colorspace not in ('rgb', 'zs'):
|
||||
return False
|
||||
|
||||
if format.layout not in (ARITH, ARRAY):
|
||||
if format.layout != PLAIN:
|
||||
return False
|
||||
|
||||
for i in range(4):
|
||||
|
|
@ -70,7 +70,7 @@ def is_format_supported(format):
|
|||
def native_type(format):
|
||||
'''Get the native appropriate for a format.'''
|
||||
|
||||
if format.layout in (ARITH, ARRAY):
|
||||
if format.layout == PLAIN:
|
||||
if not format.is_array():
|
||||
# For arithmetic pixel formats return the integer type that matches the whole pixel
|
||||
return 'uint%u_t' % format.block_size()
|
||||
|
|
@ -299,7 +299,7 @@ def generate_format_read(format, dst_type, dst_native_type, dst_suffix):
|
|||
else:
|
||||
assert False
|
||||
|
||||
if format.layout in (ARITH, ARRAY):
|
||||
if format.layout == PLAIN:
|
||||
if not format.is_array():
|
||||
print ' %s pixel = *src_pixel++;' % src_native_type
|
||||
shift = 0;
|
||||
|
|
@ -374,7 +374,7 @@ def generate_format_write(format, src_type, src_native_type, src_suffix):
|
|||
|
||||
inv_swizzle = compute_inverse_swizzle(format)
|
||||
|
||||
if format.layout in (ARITH, ARRAY):
|
||||
if format.layout == PLAIN:
|
||||
if not format.is_array():
|
||||
print ' %s pixel = 0;' % dst_native_type
|
||||
shift = 0;
|
||||
|
|
|
|||
|
|
@ -37,8 +37,7 @@ VOID, UNSIGNED, SIGNED, FIXED, FLOAT = range(5)
|
|||
|
||||
SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W, SWIZZLE_0, SWIZZLE_1, SWIZZLE_NONE, = range(7)
|
||||
|
||||
ARITH = 'arith'
|
||||
ARRAY = 'array'
|
||||
PLAIN = 'plain'
|
||||
|
||||
|
||||
class Type:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue