formats.h revision 7e4e79be6bba7cf68046bd77aa8d44fb52ca5186
1813870fd9588de101f68728507cff726d7513695Brian Paul/* 2813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa 3-D graphics library 3813870fd9588de101f68728507cff726d7513695Brian Paul * Version: 7.7 4813870fd9588de101f68728507cff726d7513695Brian Paul * 5813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 6813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (c) 2008-2009 VMware, Inc. 7813870fd9588de101f68728507cff726d7513695Brian Paul * 8813870fd9588de101f68728507cff726d7513695Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 9813870fd9588de101f68728507cff726d7513695Brian Paul * copy of this software and associated documentation files (the "Software"), 10813870fd9588de101f68728507cff726d7513695Brian Paul * to deal in the Software without restriction, including without limitation 11813870fd9588de101f68728507cff726d7513695Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12813870fd9588de101f68728507cff726d7513695Brian Paul * and/or sell copies of the Software, and to permit persons to whom the 13813870fd9588de101f68728507cff726d7513695Brian Paul * Software is furnished to do so, subject to the following conditions: 14813870fd9588de101f68728507cff726d7513695Brian Paul * 15813870fd9588de101f68728507cff726d7513695Brian Paul * The above copyright notice and this permission notice shall be included 16813870fd9588de101f68728507cff726d7513695Brian Paul * in all copies or substantial portions of the Software. 17813870fd9588de101f68728507cff726d7513695Brian Paul * 18813870fd9588de101f68728507cff726d7513695Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19813870fd9588de101f68728507cff726d7513695Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20813870fd9588de101f68728507cff726d7513695Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21813870fd9588de101f68728507cff726d7513695Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 22813870fd9588de101f68728507cff726d7513695Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23813870fd9588de101f68728507cff726d7513695Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24813870fd9588de101f68728507cff726d7513695Brian Paul */ 25813870fd9588de101f68728507cff726d7513695Brian Paul 26813870fd9588de101f68728507cff726d7513695Brian Paul/* 27813870fd9588de101f68728507cff726d7513695Brian Paul * Authors: 28813870fd9588de101f68728507cff726d7513695Brian Paul * Brian Paul 29813870fd9588de101f68728507cff726d7513695Brian Paul */ 30813870fd9588de101f68728507cff726d7513695Brian Paul 31813870fd9588de101f68728507cff726d7513695Brian Paul 32813870fd9588de101f68728507cff726d7513695Brian Paul#ifndef FORMATS_H 33813870fd9588de101f68728507cff726d7513695Brian Paul#define FORMATS_H 34813870fd9588de101f68728507cff726d7513695Brian Paul 35813870fd9588de101f68728507cff726d7513695Brian Paul 367e4e79be6bba7cf68046bd77aa8d44fb52ca5186Vinson Lee#include <GL/gl.h> 37813870fd9588de101f68728507cff726d7513695Brian Paul 38813870fd9588de101f68728507cff726d7513695Brian Paul 39813870fd9588de101f68728507cff726d7513695Brian Paul 40813870fd9588de101f68728507cff726d7513695Brian Paul/** 41813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa texture/renderbuffer image formats. 42813870fd9588de101f68728507cff726d7513695Brian Paul */ 43813870fd9588de101f68728507cff726d7513695Brian Paultypedef enum 44813870fd9588de101f68728507cff726d7513695Brian Paul{ 45e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul MESA_FORMAT_NONE = 0, 463fa7dbf368bb060220e9f78e666b00d6827166a6Brian Paul 47813870fd9588de101f68728507cff726d7513695Brian Paul /** 48813870fd9588de101f68728507cff726d7513695Brian Paul * \name Basic hardware formats 49813870fd9588de101f68728507cff726d7513695Brian Paul */ 50813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 51813870fd9588de101f68728507cff726d7513695Brian Paul /* msb <------ TEXEL BITS -----------> lsb */ 52813870fd9588de101f68728507cff726d7513695Brian Paul /* ---- ---- ---- ---- ---- ---- ---- ---- */ 53813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ 54813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888_REV, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ 55813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ 56813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888_REV, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */ 5774d61d03b54d72217d463c248468cdcd09320efcBrian Paul MESA_FORMAT_XRGB8888, /* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */ 582d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer MESA_FORMAT_XRGB8888_REV, /* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */ 59813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB888, /* RRRR RRRR GGGG GGGG BBBB BBBB */ 60813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_BGR888, /* BBBB BBBB GGGG GGGG RRRR RRRR */ 61813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565, /* RRRR RGGG GGGB BBBB */ 62813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565_REV, /* GGGB BBBB RRRR RGGG */ 63813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444, /* AAAA RRRR GGGG BBBB */ 64813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444_REV, /* GGGG BBBB AAAA RRRR */ 65813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA5551, /* RRRR RGGG GGBB BBBA */ 66813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555, /* ARRR RRGG GGGB BBBB */ 67813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555_REV, /* GGGB BBBB ARRR RRGG */ 68813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88, /* AAAA AAAA LLLL LLLL */ 69813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88_REV, /* LLLL LLLL AAAA AAAA */ 70eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ 71eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616_REV, /* LLLL LLLL LLLL LLLL AAAA AAAA AAAA AAAA */ 72813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB332, /* RRRG GGBB */ 73813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_A8, /* AAAA AAAA */ 74813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_L8, /* LLLL LLLL */ 75813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_I8, /* IIII IIII */ 76813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_CI8, /* CCCC CCCC */ 77813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR, /* YYYY YYYY UorV UorV */ 78813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR_REV, /* UorV UorV YYYY YYYY */ 79813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z24_S8, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */ 80813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8_Z24, /* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ 81813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z16, /* ZZZZ ZZZZ ZZZZ ZZZZ */ 82e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul MESA_FORMAT_X8_Z24, /* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ 83c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca MESA_FORMAT_Z24_X8, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */ 84813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z32, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ 85813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8, /* SSSS SSSS */ 86813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 87813870fd9588de101f68728507cff726d7513695Brian Paul 88813870fd9588de101f68728507cff726d7513695Brian Paul /** 89813870fd9588de101f68728507cff726d7513695Brian Paul * \name 8-bit/channel sRGB formats 90813870fd9588de101f68728507cff726d7513695Brian Paul */ 91813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 92813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB8, 93813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA8, 94813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SARGB8, 95813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SL8, 96813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SLA8, 97813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB_DXT1, 98813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT1, 99813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT3, 100813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT5, 101813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 102813870fd9588de101f68728507cff726d7513695Brian Paul 103813870fd9588de101f68728507cff726d7513695Brian Paul /** 104813870fd9588de101f68728507cff726d7513695Brian Paul * \name Compressed texture formats. 105813870fd9588de101f68728507cff726d7513695Brian Paul */ 106813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 107813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FXT1, 108813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FXT1, 109813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_DXT1, 110813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT1, 111813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT3, 112813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT5, 113813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 114813870fd9588de101f68728507cff726d7513695Brian Paul 115813870fd9588de101f68728507cff726d7513695Brian Paul /** 116813870fd9588de101f68728507cff726d7513695Brian Paul * \name Floating point texture formats. 117813870fd9588de101f68728507cff726d7513695Brian Paul */ 118813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 119813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT32, 120813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT16, 121813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT32, 122813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT16, 123813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT32, 124813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT16, 125813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT32, 126813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT16, 127813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, 128813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, 129813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT32, 130813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT16, 131813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 132813870fd9588de101f68728507cff726d7513695Brian Paul 133abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 134abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized signed integer formats. 135abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * XXX Note: these are just stand-ins for some better hardware 136abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * formats TBD such as BGRA or ARGB. 137abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 138abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT8, 139abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT16, 140abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT32, 141abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 142abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 143abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized unsigned integer formats. 144abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 145abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT8, 146abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT16, 147abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT32, 148abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 14984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* msb <------ TEXEL BITS -----------> lsb */ 15084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* ---- ---- ---- ---- ---- ---- ---- ---- */ 151813870fd9588de101f68728507cff726d7513695Brian Paul /** 152813870fd9588de101f68728507cff726d7513695Brian Paul * \name Signed fixed point texture formats. 153813870fd9588de101f68728507cff726d7513695Brian Paul */ 154813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 15584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_DUDV8, /* DUDU DUDU DVDV DVDV */ 15684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R8, /* RRRR RRRR */ 15784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RG88, /* RRRR RRRR GGGG GGGG */ 15884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ 15984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ 16084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ 1617a57af6d11a8fae9838a0d2e42eac6200b8f027eBrian Paul MESA_FORMAT_SIGNED_R_16, /* ushort[0]=R */ 1627a57af6d11a8fae9838a0d2e42eac6200b8f027eBrian Paul MESA_FORMAT_SIGNED_RG_16, /* ushort[0]=R, ushort[1]=G */ 1637a57af6d11a8fae9838a0d2e42eac6200b8f027eBrian Paul MESA_FORMAT_SIGNED_RGB_16, /* ushort[0]=R, ushort[1]=G, ushort[2]=B */ 1647a57af6d11a8fae9838a0d2e42eac6200b8f027eBrian Paul MESA_FORMAT_SIGNED_RGBA_16, /* ... */ 16517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul MESA_FORMAT_RGBA_16, /* ... */ 166813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 167813870fd9588de101f68728507cff726d7513695Brian Paul 1680422053eca12b4fb912e0229c96a9d12453e31c4Brian Paul MESA_FORMAT_COUNT 169813870fd9588de101f68728507cff726d7513695Brian Paul} gl_format; 170813870fd9588de101f68728507cff726d7513695Brian Paul 171813870fd9588de101f68728507cff726d7513695Brian Paul 172bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulextern const char * 173bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format); 174bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 175813870fd9588de101f68728507cff726d7513695Brian Paulextern GLuint 176813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format); 177813870fd9588de101f68728507cff726d7513695Brian Paul 1785978cbdf7728df7952c9c04165ece23394a5fb95Brian Paulextern GLint 1795978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname); 1805978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 1815978cbdf7728df7952c9c04165ece23394a5fb95Brian Paulextern GLenum 1825978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format); 1835978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 184813870fd9588de101f68728507cff726d7513695Brian Paulextern GLenum 185813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format); 186813870fd9588de101f68728507cff726d7513695Brian Paul 1877b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulextern void 1887b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh); 1897b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 190813870fd9588de101f68728507cff726d7513695Brian Paulextern GLboolean 191813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format); 192813870fd9588de101f68728507cff726d7513695Brian Paul 193f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paulextern GLenum 194f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format); 195f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 1961c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paulextern GLuint 1971c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width, 1981c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul GLsizei height, GLsizei depth); 1991c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 200040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paulextern GLint 201040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width); 202040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 203019bc97bd900a84f5f999afdb42928e92d33814bBrian Paulextern void 204019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format, 205019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul GLenum *datatype, GLuint *comps); 206040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 207813870fd9588de101f68728507cff726d7513695Brian Paulextern void 208813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void); 209813870fd9588de101f68728507cff726d7513695Brian Paul 210813870fd9588de101f68728507cff726d7513695Brian Paul#endif /* FORMATS_H */ 211