X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fformats.h;h=2afa886782b9be52b9b7d9a45b137276d10a24a7;hb=ca721b3d894a49d7342f5aa053ed132017e9352a;hp=dd07c35f5d9417bb87e53ab41532c10d8ff1b10e;hpb=3c19251f28e6b4feff81f48b1c73f1f2e09e38e1;p=mesa.git diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index dd07c35f5d9..2afa886782b 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -36,7 +36,6 @@ #include #include #include -#include "compiler.h" #ifdef __cplusplus extern "C" { @@ -64,6 +63,14 @@ extern "C" { enum mesa_format_layout { MESA_FORMAT_LAYOUT_ARRAY, MESA_FORMAT_LAYOUT_PACKED, + MESA_FORMAT_LAYOUT_S3TC, + MESA_FORMAT_LAYOUT_RGTC, + MESA_FORMAT_LAYOUT_LATC, + MESA_FORMAT_LAYOUT_FXT1, + MESA_FORMAT_LAYOUT_ETC1, + MESA_FORMAT_LAYOUT_ETC2, + MESA_FORMAT_LAYOUT_BPTC, + MESA_FORMAT_LAYOUT_ASTC, MESA_FORMAT_LAYOUT_OTHER, }; @@ -191,6 +198,11 @@ static inline void _mesa_array_format_set_swizzle(mesa_array_format *f, int32_t x, int32_t y, int32_t z, int32_t w) { + *f &= ~(MESA_ARRAY_FORMAT_SWIZZLE_X_MASK | + MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK | + MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK | + MESA_ARRAY_FORMAT_SWIZZLE_W_MASK); + *f |= ((x << 8 ) & MESA_ARRAY_FORMAT_SWIZZLE_X_MASK) | ((y << 11) & MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK) | ((z << 14) & MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK) | @@ -337,6 +349,7 @@ typedef enum MESA_FORMAT_B4G4R4X4_UNORM, /* xxxx RRRR GGGG BBBB */ MESA_FORMAT_A4R4G4B4_UNORM, /* BBBB GGGG RRRR AAAA */ MESA_FORMAT_A1B5G5R5_UNORM, /* RRRR RGGG GGBB BBBA */ + MESA_FORMAT_X1B5G5R5_UNORM, /* BBBB BGGG GGRR RRRX */ MESA_FORMAT_B5G5R5A1_UNORM, /* ARRR RRGG GGGB BBBB */ MESA_FORMAT_B5G5R5X1_UNORM, /* xRRR RRGG GGGB BBBB */ MESA_FORMAT_A1R5G5B5_UNORM, /* BBBB BGGG GGRR RRRA */ @@ -352,12 +365,21 @@ typedef enum MESA_FORMAT_B10G10R10A2_UNORM,/* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ MESA_FORMAT_B10G10R10X2_UNORM,/* xxRR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ MESA_FORMAT_R10G10B10A2_UNORM,/* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */ + MESA_FORMAT_R10G10B10X2_UNORM,/* xxBB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */ MESA_FORMAT_S8_UINT_Z24_UNORM,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */ MESA_FORMAT_X8_UINT_Z24_UNORM,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */ MESA_FORMAT_Z24_UNORM_S8_UINT,/* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ MESA_FORMAT_Z24_UNORM_X8_UINT,/* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ + /* Other formats */ + MESA_FORMAT_R3G3B2_UNORM, /* BBGG GRRR */ + MESA_FORMAT_A4B4G4R4_UNORM, /* RRRR GGGG BBBB AAAA */ + MESA_FORMAT_R4G4B4A4_UNORM, /* AAAA BBBB GGGG RRRR */ + MESA_FORMAT_R5G5B5A1_UNORM, /* ABBB BBGG GGGR RRRR */ + MESA_FORMAT_A2B10G10R10_UNORM,/* RRRR RRRR RRGG GGGG GGGG BBBB BBBB BBAA */ + MESA_FORMAT_A2R10G10B10_UNORM,/* BBBB BBBB BBGG GGGG GGGG RRRR RRRR RRAA */ + MESA_FORMAT_YCBCR, /* YYYY YYYY UorV UorV */ MESA_FORMAT_YCBCR_REV, /* UorV UorV YYYY YYYY */ @@ -450,8 +472,27 @@ typedef enum MESA_FORMAT_Z_FLOAT32, /* Packed signed/unsigned non-normalized integer formats */ + + MESA_FORMAT_A8B8G8R8_UINT, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ + MESA_FORMAT_A8R8G8B8_UINT, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */ + MESA_FORMAT_R8G8B8A8_UINT, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ + MESA_FORMAT_B8G8R8A8_UINT, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ MESA_FORMAT_B10G10R10A2_UINT, /* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ MESA_FORMAT_R10G10B10A2_UINT, /* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */ + MESA_FORMAT_A2B10G10R10_UINT, /* RRRR RRRR RRGG GGGG GGGG BBBB BBBB BBAA */ + MESA_FORMAT_A2R10G10B10_UINT, /* BBBB BBBB BBGG GGGG GGGG RRRR RRRR RRAA */ + MESA_FORMAT_B5G6R5_UINT, /* RRRR RGGG GGGB BBBB */ + MESA_FORMAT_R5G6B5_UINT, /* BBBB BGGG GGGR RRRR */ + MESA_FORMAT_B2G3R3_UINT, /* RRRG GGBB */ + MESA_FORMAT_R3G3B2_UINT, /* BBGG GRRR */ + MESA_FORMAT_A4B4G4R4_UINT, /* RRRR GGGG BBBB AAAA */ + MESA_FORMAT_R4G4B4A4_UINT, /* AAAA BBBB GGGG RRRR */ + MESA_FORMAT_B4G4R4A4_UINT, /* AAAA RRRR GGGG BBBB */ + MESA_FORMAT_A4R4G4B4_UINT, /* BBBB GGGG RRRR AAAA */ + MESA_FORMAT_A1B5G5R5_UINT, /* RRRR RGGG GGBB BBBA */ + MESA_FORMAT_B5G5R5A1_UINT, /* ARRR RRGG GGGB BBBB */ + MESA_FORMAT_A1R5G5B5_UINT, /* BBBB BGGG GGRR RRRA */ + MESA_FORMAT_R5G5B5A1_UINT, /* ABBB BBGG GGGR RRRR */ /* Array signed/unsigned non-normalized integer formats */ MESA_FORMAT_A_UINT8, @@ -564,6 +605,57 @@ typedef enum MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT, MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT, + /* ASTC compressed formats */ + MESA_FORMAT_RGBA_ASTC_4x4, + MESA_FORMAT_RGBA_ASTC_5x4, + MESA_FORMAT_RGBA_ASTC_5x5, + MESA_FORMAT_RGBA_ASTC_6x5, + MESA_FORMAT_RGBA_ASTC_6x6, + MESA_FORMAT_RGBA_ASTC_8x5, + MESA_FORMAT_RGBA_ASTC_8x6, + MESA_FORMAT_RGBA_ASTC_8x8, + MESA_FORMAT_RGBA_ASTC_10x5, + MESA_FORMAT_RGBA_ASTC_10x6, + MESA_FORMAT_RGBA_ASTC_10x8, + MESA_FORMAT_RGBA_ASTC_10x10, + MESA_FORMAT_RGBA_ASTC_12x10, + MESA_FORMAT_RGBA_ASTC_12x12, + + MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12, + + MESA_FORMAT_RGBA_ASTC_3x3x3, + MESA_FORMAT_RGBA_ASTC_4x3x3, + MESA_FORMAT_RGBA_ASTC_4x4x3, + MESA_FORMAT_RGBA_ASTC_4x4x4, + MESA_FORMAT_RGBA_ASTC_5x4x4, + MESA_FORMAT_RGBA_ASTC_5x5x4, + MESA_FORMAT_RGBA_ASTC_5x5x5, + MESA_FORMAT_RGBA_ASTC_6x5x5, + MESA_FORMAT_RGBA_ASTC_6x6x5, + MESA_FORMAT_RGBA_ASTC_6x6x6, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_3x3x3, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x3x3, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4x3, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4x4, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4x4, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5x4, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5x5, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5x5, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x5, + MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x6, MESA_FORMAT_COUNT } mesa_format; @@ -592,6 +684,10 @@ _mesa_get_format_base_format(uint32_t format); extern void _mesa_get_format_block_size(mesa_format format, GLuint *bw, GLuint *bh); +extern void +_mesa_get_format_block_size_3d(mesa_format format, GLuint *bw, + GLuint *bh, GLuint *bd); + extern mesa_array_format _mesa_array_format_flip_channels(mesa_array_format format); @@ -625,6 +721,9 @@ _mesa_is_format_integer(mesa_format format); extern bool _mesa_is_format_etc2(mesa_format format); +GLenum +_mesa_is_format_color_format(mesa_format format); + extern GLenum _mesa_get_format_color_encoding(mesa_format format); @@ -640,7 +739,7 @@ extern GLint _mesa_format_row_stride(mesa_format format, GLsizei width); extern void -_mesa_format_to_type_and_comps(mesa_format format, +_mesa_uncompressed_format_to_type_and_comps(mesa_format format, GLenum *datatype, GLuint *comps); extern void @@ -649,6 +748,9 @@ _mesa_test_formats(void); extern mesa_format _mesa_get_srgb_format_linear(mesa_format format); +extern mesa_format +_mesa_get_linear_format_srgb(mesa_format format); + extern mesa_format _mesa_get_uncompressed_format(mesa_format format); @@ -661,7 +763,10 @@ _mesa_format_has_color_component(mesa_format format, int component); GLboolean _mesa_format_matches_format_and_type(mesa_format mesa_format, GLenum format, GLenum type, - GLboolean swapBytes); + GLboolean swapBytes, GLenum *error); + +mesa_format +_mesa_format_fallback_rgbx_to_rgba(mesa_format format); #ifdef __cplusplus }