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 3863e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca 3963e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca#ifdef __cplusplus 4063e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonsecaextern "C" { 4163e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca#endif 4263e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca 4363e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca 444d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák/* OpenGL doesn't have GL_UNSIGNED_BYTE_4_4, so we must define our own type 454d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák * for GL_LUMINANCE4_ALPHA4. */ 464d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák#define MESA_UNSIGNED_BYTE_4_4 (GL_UNSIGNED_BYTE<<1) 47813870fd9588de101f68728507cff726d7513695Brian Paul 48813870fd9588de101f68728507cff726d7513695Brian Paul 49813870fd9588de101f68728507cff726d7513695Brian Paul/** 50db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul * Max number of bytes for any non-compressed pixel format below, or for 51db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul * intermediate pixel storage in Mesa. This should never be less than 52db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul * 16. Maybe 32 someday? 53db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul */ 54db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul#define MAX_PIXEL_BYTES 16 55db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul 56db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul 57db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul/** 58813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa texture/renderbuffer image formats. 59813870fd9588de101f68728507cff726d7513695Brian Paul */ 60813870fd9588de101f68728507cff726d7513695Brian Paultypedef enum 61813870fd9588de101f68728507cff726d7513695Brian Paul{ 62e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul MESA_FORMAT_NONE = 0, 633fa7dbf368bb060220e9f78e666b00d6827166a6Brian Paul 64813870fd9588de101f68728507cff726d7513695Brian Paul /** 65813870fd9588de101f68728507cff726d7513695Brian Paul * \name Basic hardware formats 66813870fd9588de101f68728507cff726d7513695Brian Paul */ 67813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 68813870fd9588de101f68728507cff726d7513695Brian Paul /* msb <------ TEXEL BITS -----------> lsb */ 69813870fd9588de101f68728507cff726d7513695Brian Paul /* ---- ---- ---- ---- ---- ---- ---- ---- */ 70813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ 71813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888_REV, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ 72813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ 73813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888_REV, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */ 74d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu MESA_FORMAT_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB XXXX XXXX */ 75d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu MESA_FORMAT_RGBX8888_REV, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */ 7674d61d03b54d72217d463c248468cdcd09320efcBrian Paul MESA_FORMAT_XRGB8888, /* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */ 772d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer MESA_FORMAT_XRGB8888_REV, /* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */ 78813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB888, /* RRRR RRRR GGGG GGGG BBBB BBBB */ 79813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_BGR888, /* BBBB BBBB GGGG GGGG RRRR RRRR */ 80813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565, /* RRRR RGGG GGGB BBBB */ 81813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565_REV, /* GGGB BBBB RRRR RGGG */ 82813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444, /* AAAA RRRR GGGG BBBB */ 83813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444_REV, /* GGGG BBBB AAAA RRRR */ 84813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA5551, /* RRRR RGGG GGBB BBBA */ 85813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555, /* ARRR RRGG GGGB BBBB */ 86813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555_REV, /* GGGB BBBB ARRR RRGG */ 87bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák MESA_FORMAT_AL44, /* AAAA LLLL */ 88813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88, /* AAAA AAAA LLLL LLLL */ 89813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88_REV, /* LLLL LLLL AAAA AAAA */ 90eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ 91eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616_REV, /* LLLL LLLL LLLL LLLL AAAA AAAA AAAA AAAA */ 92813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB332, /* RRRG GGBB */ 93813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_A8, /* AAAA AAAA */ 94eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák MESA_FORMAT_A16, /* AAAA AAAA AAAA AAAA */ 95813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_L8, /* LLLL LLLL */ 96bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák MESA_FORMAT_L16, /* LLLL LLLL LLLL LLLL */ 97813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_I8, /* IIII IIII */ 98fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák MESA_FORMAT_I16, /* IIII IIII IIII IIII */ 99813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR, /* YYYY YYYY UorV UorV */ 100813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR_REV, /* UorV UorV YYYY YYYY */ 1015d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R8, /* RRRR RRRR */ 1020a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul MESA_FORMAT_GR88, /* GGGG GGGG RRRR RRRR */ 103b4aecc4e1861e60e40e14868719219084967e46dBrian Paul MESA_FORMAT_RG88, /* RRRR RRRR GGGG GGGG */ 1045d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R16, /* RRRR RRRR RRRR RRRR */ 10550b91aa305a633e79413bc755c3496442ec31b1aBrian Paul MESA_FORMAT_RG1616, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ 10650b91aa305a633e79413bc755c3496442ec31b1aBrian Paul MESA_FORMAT_RG1616_REV, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */ 107621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák MESA_FORMAT_ARGB2101010, /* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ 108813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z24_S8, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */ 109813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8_Z24, /* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ 110813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z16, /* ZZZZ ZZZZ ZZZZ ZZZZ */ 111e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul MESA_FORMAT_X8_Z24, /* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ 112c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca MESA_FORMAT_Z24_X8, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */ 113813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z32, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ 114813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8, /* SSSS SSSS */ 115813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 116813870fd9588de101f68728507cff726d7513695Brian Paul 117813870fd9588de101f68728507cff726d7513695Brian Paul /** 118813870fd9588de101f68728507cff726d7513695Brian Paul * \name 8-bit/channel sRGB formats 119813870fd9588de101f68728507cff726d7513695Brian Paul */ 120813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 1210cbdead62e615dc197b3831941ae311865fa6642Brian Paul MESA_FORMAT_SRGB8, /* RRRR RRRR GGGG GGGG BBBB BBBB */ 1220cbdead62e615dc197b3831941ae311865fa6642Brian Paul MESA_FORMAT_SRGBA8, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ 1230cbdead62e615dc197b3831941ae311865fa6642Brian Paul MESA_FORMAT_SARGB8, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ 1240cbdead62e615dc197b3831941ae311865fa6642Brian Paul MESA_FORMAT_SL8, /* LLLL LLLL */ 1250cbdead62e615dc197b3831941ae311865fa6642Brian Paul MESA_FORMAT_SLA8, /* AAAA AAAA LLLL LLLL */ 126813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB_DXT1, 127813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT1, 128813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT3, 129813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT5, 130813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 131813870fd9588de101f68728507cff726d7513695Brian Paul 132813870fd9588de101f68728507cff726d7513695Brian Paul /** 133813870fd9588de101f68728507cff726d7513695Brian Paul * \name Compressed texture formats. 134813870fd9588de101f68728507cff726d7513695Brian Paul */ 135813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 136813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FXT1, 137813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FXT1, 138813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_DXT1, 139813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT1, 140813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT3, 141813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT5, 142813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 143813870fd9588de101f68728507cff726d7513695Brian Paul 144813870fd9588de101f68728507cff726d7513695Brian Paul /** 145813870fd9588de101f68728507cff726d7513695Brian Paul * \name Floating point texture formats. 146813870fd9588de101f68728507cff726d7513695Brian Paul */ 147813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 148813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT32, 149813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT16, 150813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT32, 151813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT16, 152813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT32, 153813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT16, 154813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT32, 155813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT16, 156813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, 157813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, 158813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT32, 159813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT16, 1600ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_R_FLOAT32, 1610ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_R_FLOAT16, 1620ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_RG_FLOAT32, 1630ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_RG_FLOAT16, 164813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 165813870fd9588de101f68728507cff726d7513695Brian Paul 166abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 167abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized signed integer formats. 168abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * XXX Note: these are just stand-ins for some better hardware 169abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * formats TBD such as BGRA or ARGB. 170abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 1717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_ALPHA_UINT8, 1727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_ALPHA_UINT16, 1737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_ALPHA_UINT32, 1747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_ALPHA_INT8, 1757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_ALPHA_INT16, 1767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_ALPHA_INT32, 1777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie 1787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_INTENSITY_UINT8, 1797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_INTENSITY_UINT16, 1807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_INTENSITY_UINT32, 1817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_INTENSITY_INT8, 1827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_INTENSITY_INT16, 1837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_INTENSITY_INT32, 1847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie 1857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_UINT8, 1867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_UINT16, 1877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_UINT32, 1887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_INT8, 1897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_INT16, 1907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_INT32, 1917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie 1927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_ALPHA_UINT8, 1937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_ALPHA_UINT16, 1947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_ALPHA_UINT32, 1957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_ALPHA_INT8, 1967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_ALPHA_INT16, 1977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_LUMINANCE_ALPHA_INT32, 1987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie 1997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_R_INT8, 2007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RG_INT8, 2017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RGB_INT8, 202abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT8, 2037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_R_INT16, 2047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RG_INT16, 2057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RGB_INT16, 206abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT16, 2077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_R_INT32, 2087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RG_INT32, 2097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RGB_INT32, 210abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT32, 211abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 212abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 213abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized unsigned integer formats. 214abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 2157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_R_UINT8, 2167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RG_UINT8, 2177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RGB_UINT8, 218abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT8, 2197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_R_UINT16, 2207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RG_UINT16, 2217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RGB_UINT16, 222abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT16, 2237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_R_UINT32, 2247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RG_UINT32, 2257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie MESA_FORMAT_RGB_UINT32, 226abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT32, 227abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 22884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* msb <------ TEXEL BITS -----------> lsb */ 22984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* ---- ---- ---- ---- ---- ---- ---- ---- */ 230813870fd9588de101f68728507cff726d7513695Brian Paul /** 231813870fd9588de101f68728507cff726d7513695Brian Paul * \name Signed fixed point texture formats. 232813870fd9588de101f68728507cff726d7513695Brian Paul */ 233813870fd9588de101f68728507cff726d7513695Brian Paul /*@{*/ 23484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_DUDV8, /* DUDU DUDU DVDV DVDV */ 23584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R8, /* RRRR RRRR */ 2360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_RG88_REV, /* GGGG GGGG RRRR RRRR */ 23784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ 23884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ 23984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ 2400be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_R16, /* RRRR RRRR RRRR RRRR */ 2410be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_GR1616, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ 2427a57af6d11a8fae9838a0d2e42eac6200b8f027eBrian Paul MESA_FORMAT_SIGNED_RGB_16, /* ushort[0]=R, ushort[1]=G, ushort[2]=B */ 2437a57af6d11a8fae9838a0d2e42eac6200b8f027eBrian Paul MESA_FORMAT_SIGNED_RGBA_16, /* ... */ 24417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul MESA_FORMAT_RGBA_16, /* ... */ 245813870fd9588de101f68728507cff726d7513695Brian Paul /*@}*/ 246813870fd9588de101f68728507cff726d7513695Brian Paul 2478d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie /*@{*/ 2488d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_RED_RGTC1, 2498d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_SIGNED_RED_RGTC1, 2508d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_RG_RGTC2, 2518d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_SIGNED_RG_RGTC2, 2528d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie /*@}*/ 2537d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 2547d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák /*@{*/ 2557d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_L_LATC1, 2567d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_SIGNED_L_LATC1, 2577d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_LA_LATC2, 2587d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_SIGNED_LA_LATC2, 2597d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák /*@}*/ 2607d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 261d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu MESA_FORMAT_ETC1_RGB8, 262d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu 2630be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_A8, /* AAAA AAAA */ 2640be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_L8, /* LLLL LLLL */ 2650be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_AL88, /* AAAA AAAA LLLL LLLL */ 2660be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_I8, /* IIII IIII */ 2670be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_A16, /* AAAA AAAA AAAA AAAA */ 2680be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_L16, /* LLLL LLLL LLLL LLLL */ 2690be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_AL1616, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ 2700be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_I16, /* IIII IIII IIII IIII */ 2710be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 2729d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák MESA_FORMAT_RGB9_E5_FLOAT, 273631d23daa91c569bf268a2191bd466df73a64263Marek Olšák MESA_FORMAT_R11_G11_B10_FLOAT, 2749d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák 2751165280cbd37dee1e499358633478ab869de21dfMarek Olšák MESA_FORMAT_Z32_FLOAT, 2761165280cbd37dee1e499358633478ab869de21dfMarek Olšák MESA_FORMAT_Z32_FLOAT_X24S8, 2771165280cbd37dee1e499358633478ab869de21dfMarek Olšák 278f449be660e70aac2aefd2ce84581e137de25520bDave Airlie MESA_FORMAT_ARGB2101010_UINT, 279749c9060aca85277c388377d15fd6323ba20b78eJordan Justen MESA_FORMAT_ABGR2101010_UINT, 280f449be660e70aac2aefd2ce84581e137de25520bDave Airlie 2810422053eca12b4fb912e0229c96a9d12453e31c4Brian Paul MESA_FORMAT_COUNT 282813870fd9588de101f68728507cff726d7513695Brian Paul} gl_format; 283813870fd9588de101f68728507cff726d7513695Brian Paul 284813870fd9588de101f68728507cff726d7513695Brian Paul 285bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulextern const char * 286bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format); 287bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 288e8b1c6d6f55f5be3bef25084fdd8b6127517e137Adam Jacksonextern GLint 289813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format); 290813870fd9588de101f68728507cff726d7513695Brian Paul 2915978cbdf7728df7952c9c04165ece23394a5fb95Brian Paulextern GLint 2925978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname); 2935978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 294488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paulextern GLuint 295488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul_mesa_get_format_max_bits(gl_format format); 296488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul 2975978cbdf7728df7952c9c04165ece23394a5fb95Brian Paulextern GLenum 2985978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format); 2995978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 300813870fd9588de101f68728507cff726d7513695Brian Paulextern GLenum 301813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format); 302813870fd9588de101f68728507cff726d7513695Brian Paul 3037b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulextern void 3047b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh); 3057b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 306813870fd9588de101f68728507cff726d7513695Brian Paulextern GLboolean 307813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format); 308813870fd9588de101f68728507cff726d7513695Brian Paul 309e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowlerextern GLboolean 310e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format); 311e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 312f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paulextern GLboolean 313412b9608838b872bc294569b3ee913343a7e66f6Brian Paul_mesa_is_format_integer_color(gl_format format); 314f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul 3159ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justenextern GLboolean 3169ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen_mesa_is_format_unsigned(gl_format format); 3179ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen 318f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paulextern GLenum 319f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format); 320f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 3211c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paulextern GLuint 3221c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width, 3231c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul GLsizei height, GLsizei depth); 3241c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 32574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paulextern uint64_t 32674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul_mesa_format_image_size64(gl_format format, GLsizei width, 32774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul GLsizei height, GLsizei depth); 32874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul 329040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paulextern GLint 330040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width); 331040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 332019bc97bd900a84f5f999afdb42928e92d33814bBrian Paulextern void 333019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format, 334019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul GLenum *datatype, GLuint *comps); 335040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 336813870fd9588de101f68728507cff726d7513695Brian Paulextern void 337813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void); 338813870fd9588de101f68728507cff726d7513695Brian Paul 339edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlieextern gl_format 340edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie_mesa_get_srgb_format_linear(gl_format format); 341edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie 3429a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paulextern gl_format 3439a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul_mesa_get_uncompressed_format(gl_format format); 3449a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul 3459a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paulextern GLuint 3469a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul_mesa_format_num_components(gl_format format); 3479a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul 3485f140bceda4c11b68c16ce175533f496434ff9a3Eric AnholtGLboolean 3495f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt_mesa_format_matches_format_and_type(gl_format gl_format, 35006aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul GLenum format, GLenum type, 35106aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul GLboolean swapBytes); 3529a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul 35363e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca#ifdef __cplusplus 35463e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca} 35563e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca#endif 35663e7a4c6e5bf51d8090046ebc5adcb4207448565José Fonseca 357813870fd9588de101f68728507cff726d7513695Brian Paul#endif /* FORMATS_H */ 358