X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fformats.h;h=3a694a813dedae50da13af9cb3210ea9cf70007d;hb=175ad8050e3337f7065306017ea4eb8eae599f6d;hp=5b8c01781a68290bb50c1d19cc58d5504b851d23;hpb=f7a85f603b0da0770c27b200bff6e239e3aeae95;p=mesa.git diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 5b8c01781a6..3a694a813de 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -35,11 +35,25 @@ #include + +#ifdef __cplusplus +extern "C" { +#endif + + /* OpenGL doesn't have GL_UNSIGNED_BYTE_4_4, so we must define our own type * for GL_LUMINANCE4_ALPHA4. */ #define MESA_UNSIGNED_BYTE_4_4 (GL_UNSIGNED_BYTE<<1) +/** + * Max number of bytes for any non-compressed pixel format below, or for + * intermediate pixel storage in Mesa. This should never be less than + * 16. Maybe 32 someday? + */ +#define MAX_PIXEL_BYTES 16 + + /** * Mesa texture/renderbuffer image formats. */ @@ -57,6 +71,8 @@ typedef enum MESA_FORMAT_RGBA8888_REV, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ MESA_FORMAT_ARGB8888, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ MESA_FORMAT_ARGB8888_REV, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */ + MESA_FORMAT_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB XXXX XXXX */ + MESA_FORMAT_RGBX8888_REV, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */ MESA_FORMAT_XRGB8888, /* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */ MESA_FORMAT_XRGB8888_REV, /* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */ MESA_FORMAT_RGB888, /* RRRR RRRR GGGG GGGG BBBB BBBB */ @@ -80,15 +96,14 @@ typedef enum MESA_FORMAT_L16, /* LLLL LLLL LLLL LLLL */ MESA_FORMAT_I8, /* IIII IIII */ MESA_FORMAT_I16, /* IIII IIII IIII IIII */ - MESA_FORMAT_CI8, /* CCCC CCCC */ MESA_FORMAT_YCBCR, /* YYYY YYYY UorV UorV */ MESA_FORMAT_YCBCR_REV, /* UorV UorV YYYY YYYY */ MESA_FORMAT_R8, /* RRRR RRRR */ - MESA_FORMAT_RG88, /* RRRR RRRR GGGG GGGG */ - MESA_FORMAT_RG88_REV, /* GGGG GGGG RRRR RRRR */ + MESA_FORMAT_GR88, /* GGGG GGGG RRRR RRRR */ + MESA_FORMAT_RG88, /* RRRR RRRR GGGG GGGG */ MESA_FORMAT_R16, /* RRRR RRRR RRRR RRRR */ - MESA_FORMAT_RG1616, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */ - MESA_FORMAT_RG1616_REV, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ + MESA_FORMAT_RG1616, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ + MESA_FORMAT_RG1616_REV, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */ MESA_FORMAT_ARGB2101010, /* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ MESA_FORMAT_Z24_S8, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */ MESA_FORMAT_S8_Z24, /* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ @@ -103,11 +118,11 @@ typedef enum * \name 8-bit/channel sRGB formats */ /*@{*/ - MESA_FORMAT_SRGB8, - MESA_FORMAT_SRGBA8, - MESA_FORMAT_SARGB8, - MESA_FORMAT_SL8, - MESA_FORMAT_SLA8, + MESA_FORMAT_SRGB8, /* RRRR RRRR GGGG GGGG BBBB BBBB */ + MESA_FORMAT_SRGBA8, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ + MESA_FORMAT_SARGB8, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ + MESA_FORMAT_SL8, /* LLLL LLLL */ + MESA_FORMAT_SLA8, /* AAAA AAAA LLLL LLLL */ MESA_FORMAT_SRGB_DXT1, MESA_FORMAT_SRGBA_DXT1, MESA_FORMAT_SRGBA_DXT3, @@ -153,15 +168,61 @@ typedef enum * XXX Note: these are just stand-ins for some better hardware * formats TBD such as BGRA or ARGB. */ + MESA_FORMAT_ALPHA_UINT8, + MESA_FORMAT_ALPHA_UINT16, + MESA_FORMAT_ALPHA_UINT32, + MESA_FORMAT_ALPHA_INT8, + MESA_FORMAT_ALPHA_INT16, + MESA_FORMAT_ALPHA_INT32, + + MESA_FORMAT_INTENSITY_UINT8, + MESA_FORMAT_INTENSITY_UINT16, + MESA_FORMAT_INTENSITY_UINT32, + MESA_FORMAT_INTENSITY_INT8, + MESA_FORMAT_INTENSITY_INT16, + MESA_FORMAT_INTENSITY_INT32, + + MESA_FORMAT_LUMINANCE_UINT8, + MESA_FORMAT_LUMINANCE_UINT16, + MESA_FORMAT_LUMINANCE_UINT32, + MESA_FORMAT_LUMINANCE_INT8, + MESA_FORMAT_LUMINANCE_INT16, + MESA_FORMAT_LUMINANCE_INT32, + + MESA_FORMAT_LUMINANCE_ALPHA_UINT8, + MESA_FORMAT_LUMINANCE_ALPHA_UINT16, + MESA_FORMAT_LUMINANCE_ALPHA_UINT32, + MESA_FORMAT_LUMINANCE_ALPHA_INT8, + MESA_FORMAT_LUMINANCE_ALPHA_INT16, + MESA_FORMAT_LUMINANCE_ALPHA_INT32, + + MESA_FORMAT_R_INT8, + MESA_FORMAT_RG_INT8, + MESA_FORMAT_RGB_INT8, MESA_FORMAT_RGBA_INT8, + MESA_FORMAT_R_INT16, + MESA_FORMAT_RG_INT16, + MESA_FORMAT_RGB_INT16, MESA_FORMAT_RGBA_INT16, + MESA_FORMAT_R_INT32, + MESA_FORMAT_RG_INT32, + MESA_FORMAT_RGB_INT32, MESA_FORMAT_RGBA_INT32, /** * \name Non-normalized unsigned integer formats. */ + MESA_FORMAT_R_UINT8, + MESA_FORMAT_RG_UINT8, + MESA_FORMAT_RGB_UINT8, MESA_FORMAT_RGBA_UINT8, + MESA_FORMAT_R_UINT16, + MESA_FORMAT_RG_UINT16, + MESA_FORMAT_RGB_UINT16, MESA_FORMAT_RGBA_UINT16, + MESA_FORMAT_R_UINT32, + MESA_FORMAT_RG_UINT32, + MESA_FORMAT_RGB_UINT32, MESA_FORMAT_RGBA_UINT32, /* msb <------ TEXEL BITS -----------> lsb */ @@ -197,6 +258,8 @@ typedef enum MESA_FORMAT_SIGNED_LA_LATC2, /*@}*/ + MESA_FORMAT_ETC1_RGB8, + MESA_FORMAT_SIGNED_A8, /* AAAA AAAA */ MESA_FORMAT_SIGNED_L8, /* LLLL LLLL */ MESA_FORMAT_SIGNED_AL88, /* AAAA AAAA LLLL LLLL */ @@ -212,6 +275,8 @@ typedef enum MESA_FORMAT_Z32_FLOAT, MESA_FORMAT_Z32_FLOAT_X24S8, + MESA_FORMAT_ARGB2101010_UINT, + MESA_FORMAT_COUNT } gl_format; @@ -225,6 +290,9 @@ _mesa_get_format_bytes(gl_format format); extern GLint _mesa_get_format_bits(gl_format format, GLenum pname); +extern GLuint +_mesa_get_format_max_bits(gl_format format); + extern GLenum _mesa_get_format_datatype(gl_format format); @@ -267,4 +335,20 @@ _mesa_test_formats(void); extern gl_format _mesa_get_srgb_format_linear(gl_format format); +extern gl_format +_mesa_get_uncompressed_format(gl_format format); + +extern GLuint +_mesa_format_num_components(gl_format format); + +GLboolean +_mesa_format_matches_format_and_type(gl_format gl_format, + GLenum format, GLenum type, + GLboolean swapBytes); + + +#ifdef __cplusplus +} +#endif + #endif /* FORMATS_H */