formats.c revision 19648fcf015e512283e93ab9de4a3e969d577e59
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 27c28d78f8324cfc17936af63c258a1cc55d590d60Brian Paul#include "imports.h" 28813870fd9588de101f68728507cff726d7513695Brian Paul#include "formats.h" 293a6f9d0f47861b1c618366d679ad8ddd9a06b323Brian Paul#include "mfeatures.h" 30813870fd9588de101f68728507cff726d7513695Brian Paul 31813870fd9588de101f68728507cff726d7513695Brian Paul 32813870fd9588de101f68728507cff726d7513695Brian Paul/** 33be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats. 34be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 35be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info 36be0765cd6ec47cf068775197f312a1123e044566Brian Paul{ 37be0765cd6ec47cf068775197f312a1123e044566Brian Paul gl_format Name; 38be0765cd6ec47cf068775197f312a1123e044566Brian Paul 39bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul /** text name for debugging */ 40bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const char *StrName; 41bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 42be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 432d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * Base format is one of GL_RED, GL_RG, GL_RGB, GL_RGBA, GL_ALPHA, 442d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA, 452d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * GL_COLOR_INDEX, GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, 462d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * GL_DEPTH_STENCIL, GL_DUDV_ATI. 47be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 48be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum BaseFormat; 49be0765cd6ec47cf068775197f312a1123e044566Brian Paul 50be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 51be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Logical data type: one of GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALED, 52abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * GL_UNSIGNED_INT, GL_INT, GL_FLOAT. 53be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 54be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum DataType; 55be0765cd6ec47cf068775197f312a1123e044566Brian Paul 56be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte RedBits; 57be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte GreenBits; 58be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlueBits; 59be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte AlphaBits; 60be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte LuminanceBits; 61be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IntensityBits; 62be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IndexBits; 63be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte DepthBits; 64be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte StencilBits; 65be0765cd6ec47cf068775197f312a1123e044566Brian Paul 66be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 67be0765cd6ec47cf068775197f312a1123e044566Brian Paul * To describe compressed formats. If not compressed, Width=Height=1. 68be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 69be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlockWidth, BlockHeight; 70be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BytesPerBlock; 71be0765cd6ec47cf068775197f312a1123e044566Brian Paul}; 72be0765cd6ec47cf068775197f312a1123e044566Brian Paul 73be0765cd6ec47cf068775197f312a1123e044566Brian Paul 74be0765cd6ec47cf068775197f312a1123e044566Brian Paul/** 75813870fd9588de101f68728507cff726d7513695Brian Paul * Info about each format. 76813870fd9588de101f68728507cff726d7513695Brian Paul * These must be in the same order as the MESA_FORMAT_* enums so that 77813870fd9588de101f68728507cff726d7513695Brian Paul * we can do lookups without searching. 78813870fd9588de101f68728507cff726d7513695Brian Paul */ 79813870fd9588de101f68728507cff726d7513695Brian Paulstatic struct gl_format_info format_info[MESA_FORMAT_COUNT] = 80813870fd9588de101f68728507cff726d7513695Brian Paul{ 81813870fd9588de101f68728507cff726d7513695Brian Paul { 82e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul MESA_FORMAT_NONE, /* Name */ 83bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_NONE", /* StrName */ 84e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* BaseFormat */ 85e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* DataType */ 86e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 87e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 88e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0 /* BlockWidth/Height,Bytes */ 89e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul }, 90e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul { 91813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888, /* Name */ 92bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888", /* StrName */ 93813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 94813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 95813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 96813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 97813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 98813870fd9588de101f68728507cff726d7513695Brian Paul }, 99813870fd9588de101f68728507cff726d7513695Brian Paul { 100813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888_REV, /* Name */ 101bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888_REV", /* StrName */ 102813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 103813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 104813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 105813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 106813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 107813870fd9588de101f68728507cff726d7513695Brian Paul }, 108813870fd9588de101f68728507cff726d7513695Brian Paul { 109813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888, /* Name */ 110bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888", /* StrName */ 111813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 112813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 113813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 114813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 115813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 116813870fd9588de101f68728507cff726d7513695Brian Paul }, 117813870fd9588de101f68728507cff726d7513695Brian Paul { 118813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888_REV, /* Name */ 119bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888_REV", /* StrName */ 120813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 121813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 122813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 123813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 124813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 125813870fd9588de101f68728507cff726d7513695Brian Paul }, 126813870fd9588de101f68728507cff726d7513695Brian Paul { 12774d61d03b54d72217d463c248468cdcd09320efcBrian Paul MESA_FORMAT_XRGB8888, /* Name */ 128bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_XRGB8888", /* StrName */ 12974d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_RGB, /* BaseFormat */ 13074d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 13174d61d03b54d72217d463c248468cdcd09320efcBrian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 13274d61d03b54d72217d463c248468cdcd09320efcBrian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 13374d61d03b54d72217d463c248468cdcd09320efcBrian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 13474d61d03b54d72217d463c248468cdcd09320efcBrian Paul }, 13574d61d03b54d72217d463c248468cdcd09320efcBrian Paul { 1362d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer MESA_FORMAT_XRGB8888_REV, /* Name */ 1372d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer "MESA_FORMAT_XRGB8888_REV", /* StrName */ 1382d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_RGB, /* BaseFormat */ 1392d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_UNSIGNED_NORMALIZED, /* DataType */ 1402d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 1412d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 1422d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 1, 1, 4 /* BlockWidth/Height,Bytes */ 1432d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer }, 1442d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer { 145813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB888, /* Name */ 146bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB888", /* StrName */ 147813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 148813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 149813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 150813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 151813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 152813870fd9588de101f68728507cff726d7513695Brian Paul }, 153813870fd9588de101f68728507cff726d7513695Brian Paul { 154813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_BGR888, /* Name */ 155bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_BGR888", /* StrName */ 156813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 157813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 158813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 159813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 160813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 161813870fd9588de101f68728507cff726d7513695Brian Paul }, 162813870fd9588de101f68728507cff726d7513695Brian Paul { 163813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565, /* Name */ 164bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565", /* StrName */ 165813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 166813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 167813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 168813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 169813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 170813870fd9588de101f68728507cff726d7513695Brian Paul }, 171813870fd9588de101f68728507cff726d7513695Brian Paul { 172813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565_REV, /* Name */ 173bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565_REV", /* StrName */ 174813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 175813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 176813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 177813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 178813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 179813870fd9588de101f68728507cff726d7513695Brian Paul }, 180813870fd9588de101f68728507cff726d7513695Brian Paul { 181813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444, /* Name */ 182bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444", /* StrName */ 183813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 184813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 185813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 186813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 187813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 188813870fd9588de101f68728507cff726d7513695Brian Paul }, 189813870fd9588de101f68728507cff726d7513695Brian Paul { 190813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444_REV, /* Name */ 191bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444_REV", /* StrName */ 192813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 193813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 194813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 195813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 196813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 197813870fd9588de101f68728507cff726d7513695Brian Paul }, 198813870fd9588de101f68728507cff726d7513695Brian Paul { 199813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA5551, /* Name */ 200bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA5551", /* StrName */ 201813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 202813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 203813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 204813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 205813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 206813870fd9588de101f68728507cff726d7513695Brian Paul }, 207813870fd9588de101f68728507cff726d7513695Brian Paul { 208813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555, /* Name */ 209bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555", /* StrName */ 210813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 211813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 212813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 213813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 214813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 215813870fd9588de101f68728507cff726d7513695Brian Paul }, 216813870fd9588de101f68728507cff726d7513695Brian Paul { 217813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555_REV, /* Name */ 218bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555_REV", /* StrName */ 219813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 220813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 221813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 222813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 223813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 224813870fd9588de101f68728507cff726d7513695Brian Paul }, 225813870fd9588de101f68728507cff726d7513695Brian Paul { 226bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák MESA_FORMAT_AL44, /* Name */ 227bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák "MESA_FORMAT_AL44", /* StrName */ 228bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák GL_LUMINANCE_ALPHA, /* BaseFormat */ 229bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 230bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák 0, 0, 0, 4, /* Red/Green/Blue/AlphaBits */ 231bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák 4, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 232bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák 1, 1, 1 /* BlockWidth/Height,Bytes */ 233bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák }, 234bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák { 235813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88, /* Name */ 236bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88", /* StrName */ 237813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 238813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 239813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 240813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 241813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 242813870fd9588de101f68728507cff726d7513695Brian Paul }, 243813870fd9588de101f68728507cff726d7513695Brian Paul { 244813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88_REV, /* Name */ 245bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88_REV", /* StrName */ 246813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 247813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 248813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 249813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 250813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 251813870fd9588de101f68728507cff726d7513695Brian Paul }, 252813870fd9588de101f68728507cff726d7513695Brian Paul { 253eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616, /* Name */ 254eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616", /* StrName */ 255eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 256eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 257eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 258eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 259eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 260eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 261eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 262eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616_REV, /* Name */ 263eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616_REV", /* StrName */ 264eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 265eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 266eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 267eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 268eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 269eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 270eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 271813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB332, /* Name */ 272bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB332", /* StrName */ 273813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 274813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 275813870fd9588de101f68728507cff726d7513695Brian Paul 3, 3, 2, 0, /* Red/Green/Blue/AlphaBits */ 276813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 277813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 278813870fd9588de101f68728507cff726d7513695Brian Paul }, 279813870fd9588de101f68728507cff726d7513695Brian Paul { 280813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_A8, /* Name */ 281bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_A8", /* StrName */ 282813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, /* BaseFormat */ 283813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 284813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 285813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 286813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 287813870fd9588de101f68728507cff726d7513695Brian Paul }, 288813870fd9588de101f68728507cff726d7513695Brian Paul { 289eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák MESA_FORMAT_A16, /* Name */ 290eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák "MESA_FORMAT_A16", /* StrName */ 291eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák GL_ALPHA, /* BaseFormat */ 292eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 293eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 294eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 295eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák 1, 1, 2 /* BlockWidth/Height,Bytes */ 296eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák }, 297eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák { 298813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_L8, /* Name */ 299bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_L8", /* StrName */ 300813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE, /* BaseFormat */ 301813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 302813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 303813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 304813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 305813870fd9588de101f68728507cff726d7513695Brian Paul }, 306813870fd9588de101f68728507cff726d7513695Brian Paul { 307bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák MESA_FORMAT_L16, /* Name */ 308bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák "MESA_FORMAT_L16", /* StrName */ 309bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák GL_LUMINANCE, /* BaseFormat */ 310bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 311bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 312bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 313bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák 1, 1, 2 /* BlockWidth/Height,Bytes */ 314bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák }, 315bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák { 316813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_I8, /* Name */ 317bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_I8", /* StrName */ 318813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, /* BaseFormat */ 319813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 320813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 321813870fd9588de101f68728507cff726d7513695Brian Paul 0, 8, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 322813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 323813870fd9588de101f68728507cff726d7513695Brian Paul }, 324813870fd9588de101f68728507cff726d7513695Brian Paul { 325fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák MESA_FORMAT_I16, /* Name */ 326fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák "MESA_FORMAT_I16", /* StrName */ 327fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák GL_INTENSITY, /* BaseFormat */ 328fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 329fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 330fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák 0, 16, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 331fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák 1, 1, 2 /* BlockWidth/Height,Bytes */ 332fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák }, 333fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák { 334813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_CI8, /* Name */ 335bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_CI8", /* StrName */ 336813870fd9588de101f68728507cff726d7513695Brian Paul GL_COLOR_INDEX, /* BaseFormat */ 337813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 338813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 339813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 8, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 340813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 341813870fd9588de101f68728507cff726d7513695Brian Paul }, 342813870fd9588de101f68728507cff726d7513695Brian Paul { 343813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR, /* Name */ 344bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR", /* StrName */ 345813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 346813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 347813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 348813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 349813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 350813870fd9588de101f68728507cff726d7513695Brian Paul }, 351813870fd9588de101f68728507cff726d7513695Brian Paul { 352813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR_REV, /* Name */ 353bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR_REV", /* StrName */ 354813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 355813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 356813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 357813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 358813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 359813870fd9588de101f68728507cff726d7513695Brian Paul }, 360813870fd9588de101f68728507cff726d7513695Brian Paul { 3615d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R8, 3625d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_R8", 3635d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RED, 3645d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3655d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 0, 0, 0, 3665d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3675d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 1 3685d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3695d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3705d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG88, 3715d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG88", 3725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3745d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 8, 0, 0, 3755d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3765d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3775d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3785d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3795d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG88_REV, 3805d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG88_REV", 3815d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3825d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3835d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 8, 0, 0, 3845d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3855d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3865d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3875d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3885d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R16, 3895d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_R16", 3905d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RED, 3915d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3925d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 0, 0, 0, 3935d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3945d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3955d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3965d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3975d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG1616, 3985d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG1616", 3995d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 4005d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 4015d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 16, 0, 0, 4025d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 4035d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 4 4045d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 4055d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 4065d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG1616_REV, 4075d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG1616_REV", 4085d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 4095d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 4105d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 16, 0, 0, 4115d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 4125d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 4 4135d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 4145d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 415621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák MESA_FORMAT_ARGB2101010, 416621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák "MESA_FORMAT_ARGB2101010", 417621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák GL_RGBA, 418621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák GL_UNSIGNED_NORMALIZED, 419621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 10, 10, 10, 2, 420621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 0, 0, 0, 0, 0, 421621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 1, 1, 4 422621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák }, 423621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák { 424813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z24_S8, /* Name */ 425bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z24_S8", /* StrName */ 426813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 427813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 428813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 429813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 430813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 431813870fd9588de101f68728507cff726d7513695Brian Paul }, 432813870fd9588de101f68728507cff726d7513695Brian Paul { 433813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8_Z24, /* Name */ 434bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8_Z24", /* StrName */ 435813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 436813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 437813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 438813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 439813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 440813870fd9588de101f68728507cff726d7513695Brian Paul }, 441813870fd9588de101f68728507cff726d7513695Brian Paul { 442813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z16, /* Name */ 443bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z16", /* StrName */ 444813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 445813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 446813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 447813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 0, /* Lum/Int/Index/Depth/StencilBits */ 448813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 449813870fd9588de101f68728507cff726d7513695Brian Paul }, 450813870fd9588de101f68728507cff726d7513695Brian Paul { 451e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul MESA_FORMAT_X8_Z24, /* Name */ 452bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_X8_Z24", /* StrName */ 453e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 454e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_UNSIGNED_INT, /* DataType */ 455e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 456e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 457e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 458e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul }, 459e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul { 460c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca MESA_FORMAT_Z24_X8, /* Name */ 461c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca "MESA_FORMAT_Z24_X8", /* StrName */ 462c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_DEPTH_COMPONENT, /* BaseFormat */ 463c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_UNSIGNED_INT, /* DataType */ 464c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 465c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 466c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1, 1, 4 /* BlockWidth/Height,Bytes */ 467c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca }, 468c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca { 469813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z32, /* Name */ 470bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z32", /* StrName */ 471813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 472813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 473813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 474813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 0, /* Lum/Int/Index/Depth/StencilBits */ 475813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 476813870fd9588de101f68728507cff726d7513695Brian Paul }, 477813870fd9588de101f68728507cff726d7513695Brian Paul { 478813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8, /* Name */ 479bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8", /* StrName */ 480813870fd9588de101f68728507cff726d7513695Brian Paul GL_STENCIL_INDEX, /* BaseFormat */ 481813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 482813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 483813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 8, /* Lum/Int/Index/Depth/StencilBits */ 484813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 485813870fd9588de101f68728507cff726d7513695Brian Paul }, 486813870fd9588de101f68728507cff726d7513695Brian Paul { 487813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB8, 488bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB8", 489813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 490813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 491813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, 492813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 493813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 494813870fd9588de101f68728507cff726d7513695Brian Paul }, 495813870fd9588de101f68728507cff726d7513695Brian Paul { 496813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA8, 497bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA8", 498813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 499813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 500813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 501813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 502813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 503813870fd9588de101f68728507cff726d7513695Brian Paul }, 504813870fd9588de101f68728507cff726d7513695Brian Paul { 505813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SARGB8, 506bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SARGB8", 507813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 508813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 509813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 510813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 511813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 512813870fd9588de101f68728507cff726d7513695Brian Paul }, 513813870fd9588de101f68728507cff726d7513695Brian Paul { 514813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SL8, 515bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SL8", 51671cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul GL_LUMINANCE, 517813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 51871cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 0, 0, 0, 0, 519813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 52071cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 1, 1, 1 521813870fd9588de101f68728507cff726d7513695Brian Paul }, 522813870fd9588de101f68728507cff726d7513695Brian Paul { 523813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SLA8, 524bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SLA8", 525813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 526813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 527813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, 528813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 529813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 530813870fd9588de101f68728507cff726d7513695Brian Paul }, 531813870fd9588de101f68728507cff726d7513695Brian Paul { 532813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB_DXT1, /* Name */ 533bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB_DXT1", /* StrName */ 534813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 535813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 536813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 537813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 538813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 539813870fd9588de101f68728507cff726d7513695Brian Paul }, 540813870fd9588de101f68728507cff726d7513695Brian Paul { 541813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT1, 542bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT1", 543813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 544813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 545813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 546813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 547813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 548813870fd9588de101f68728507cff726d7513695Brian Paul }, 549813870fd9588de101f68728507cff726d7513695Brian Paul { 550813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT3, 551bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT3", 552813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 553813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 554813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 555813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 556813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 557813870fd9588de101f68728507cff726d7513695Brian Paul }, 558813870fd9588de101f68728507cff726d7513695Brian Paul { 559813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT5, 560bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT5", 561813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 562813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 563813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 564813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 565813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 566813870fd9588de101f68728507cff726d7513695Brian Paul }, 567813870fd9588de101f68728507cff726d7513695Brian Paul 568813870fd9588de101f68728507cff726d7513695Brian Paul { 569813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FXT1, 570bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FXT1", 571813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 572813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 573c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 0, /* approx Red/Green/BlueBits */ 574813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 575813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 576813870fd9588de101f68728507cff726d7513695Brian Paul }, 577813870fd9588de101f68728507cff726d7513695Brian Paul { 578813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FXT1, 579bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FXT1", 580813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 581813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 582c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 1, /* approx Red/Green/Blue/AlphaBits */ 583813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 584813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 585813870fd9588de101f68728507cff726d7513695Brian Paul }, 586813870fd9588de101f68728507cff726d7513695Brian Paul 587813870fd9588de101f68728507cff726d7513695Brian Paul { 588813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_DXT1, /* Name */ 589bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_DXT1", /* StrName */ 590813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 591813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 592813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 593813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 594813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 595813870fd9588de101f68728507cff726d7513695Brian Paul }, 596813870fd9588de101f68728507cff726d7513695Brian Paul { 597813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT1, 598bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT1", 599813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 600813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 601813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 602813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 603813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 604813870fd9588de101f68728507cff726d7513695Brian Paul }, 605813870fd9588de101f68728507cff726d7513695Brian Paul { 606813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT3, 607bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT3", 608813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 609813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 610813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 611813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 612813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 613813870fd9588de101f68728507cff726d7513695Brian Paul }, 614813870fd9588de101f68728507cff726d7513695Brian Paul { 615813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT5, 616bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT5", 617813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 618813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 619813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 620813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 621813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 622813870fd9588de101f68728507cff726d7513695Brian Paul }, 623813870fd9588de101f68728507cff726d7513695Brian Paul { 624813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT32, 625bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT32", 626813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 627813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 628813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 32, 629813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 630813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 16 631813870fd9588de101f68728507cff726d7513695Brian Paul }, 632813870fd9588de101f68728507cff726d7513695Brian Paul { 633813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT16, 634bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT16", 635813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 636813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 637813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 16, 638813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 639813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 640813870fd9588de101f68728507cff726d7513695Brian Paul }, 641813870fd9588de101f68728507cff726d7513695Brian Paul { 642813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT32, 643bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT32", 644813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 645813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 646813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 0, 647813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 648813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 12 649813870fd9588de101f68728507cff726d7513695Brian Paul }, 650813870fd9588de101f68728507cff726d7513695Brian Paul { 651813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT16, 652bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT16", 653813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 654813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 655813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 0, 656813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 657813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 6 658813870fd9588de101f68728507cff726d7513695Brian Paul }, 659813870fd9588de101f68728507cff726d7513695Brian Paul { 660813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT32, 661bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT32", 662813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 663813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 664813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 665813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 666813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 667813870fd9588de101f68728507cff726d7513695Brian Paul }, 668813870fd9588de101f68728507cff726d7513695Brian Paul { 669813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT16, 670bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT16", 671813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 672813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 673813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 674813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 675813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 676813870fd9588de101f68728507cff726d7513695Brian Paul }, 677813870fd9588de101f68728507cff726d7513695Brian Paul { 678813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT32, 679bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT32", 68019648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák GL_LUMINANCE, 681813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 682813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 683813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 684813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 685813870fd9588de101f68728507cff726d7513695Brian Paul }, 686813870fd9588de101f68728507cff726d7513695Brian Paul { 687813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT16, 688bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT16", 68919648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák GL_LUMINANCE, 690813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 691813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 692813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 693813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 694813870fd9588de101f68728507cff726d7513695Brian Paul }, 695813870fd9588de101f68728507cff726d7513695Brian Paul { 696813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, 697bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32", 698813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 699813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 700813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 701813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 702813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 703813870fd9588de101f68728507cff726d7513695Brian Paul }, 704813870fd9588de101f68728507cff726d7513695Brian Paul { 705813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, 706bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16", 707813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 708813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 709813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 710813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 711813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 712813870fd9588de101f68728507cff726d7513695Brian Paul }, 713813870fd9588de101f68728507cff726d7513695Brian Paul { 714813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT32, 715bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT32", 716813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 717813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 718813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 719813870fd9588de101f68728507cff726d7513695Brian Paul 0, 32, 0, 0, 0, 720813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 721813870fd9588de101f68728507cff726d7513695Brian Paul }, 722813870fd9588de101f68728507cff726d7513695Brian Paul { 723813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT16, 724bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT16", 725813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 726813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 727813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 728813870fd9588de101f68728507cff726d7513695Brian Paul 0, 16, 0, 0, 0, 729813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 730813870fd9588de101f68728507cff726d7513695Brian Paul }, 731abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 732abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized signed int formats */ 733abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 734abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT8, 735abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT8", 736abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 737abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 738abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 739abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 740abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 741abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 742abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 743abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT16, 744abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT16", 745abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 746abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 747abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 748abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 749abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 750abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 751abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 752abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT32, 753abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT32", 754abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 755abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 756abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 757abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 758abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 759abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 760abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 761abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized unsigned int formats */ 762abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 763abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT8, 764abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT8", 765abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 766abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 767abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 768abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 769abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 770abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 771abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 772abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT16, 773abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT16", 774abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 775abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 776abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 777abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 778abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 779abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 780abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 781abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT32, 782abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT32", 783abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 784abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 785abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 786abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 787abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 788abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 789abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 790abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 791813870fd9588de101f68728507cff726d7513695Brian Paul { 792813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_DUDV8, 793bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_DUDV8", 794813870fd9588de101f68728507cff726d7513695Brian Paul GL_DUDV_ATI, 795813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 796813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 797813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 798813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 799813870fd9588de101f68728507cff726d7513695Brian Paul }, 80084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 80184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 8 bits / channel */ 80284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 80384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R8, /* Name */ 80484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R8", /* StrName */ 8050073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RED, /* BaseFormat */ 80684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, /* DataType */ 80784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 80884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 80984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 81084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 81184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 8120be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_RG88_REV, 8130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_RG88_REV", 8140073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RG, 81584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 81684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 0, 0, 81784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 81884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 81984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 82084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 82184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBX8888, 82284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGBX8888", 8230073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RGB, 82484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 82584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 8, 0, 82684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 82784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 /* 4 bpp, but no alpha */ 82884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 829813870fd9588de101f68728507cff726d7513695Brian Paul { 830813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888, 831bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888", 832813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 833813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 834813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 835813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 836813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 837813870fd9588de101f68728507cff726d7513695Brian Paul }, 838813870fd9588de101f68728507cff726d7513695Brian Paul { 839813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888_REV, 840bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888_REV", 841813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 842813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 843813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 844813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 845813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 846813870fd9588de101f68728507cff726d7513695Brian Paul }, 84784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 84884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 16 bits / channel */ 84984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 8500be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_R16, 8510be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_R16", 8520073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RED, 85384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 85484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 0, 0, 0, 85584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 85684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 85784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 85884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 8590be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_GR1616, 8600be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_GR1616", 8610073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RG, 86284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 86384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 0, 0, 86484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 86584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 86684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 86784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 86884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGB_16, 86984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGB_16", 8700073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RGB, 87184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 87284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 16, 0, 87384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 87484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 6 87584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 876c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul { 877c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul MESA_FORMAT_SIGNED_RGBA_16, 878bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA_16", 879c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_RGBA, 880c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_SIGNED_NORMALIZED, 881c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 16, 16, 16, 16, 882c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 0, 0, 0, 0, 0, 883c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 1, 1, 8 88417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul }, 88517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul { 88617e96718946486ef77927fcf3bb299d8bff32b98Brian Paul MESA_FORMAT_RGBA_16, 88717e96718946486ef77927fcf3bb299d8bff32b98Brian Paul "MESA_FORMAT_RGBA_16", 88817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_RGBA, 88917e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_UNSIGNED_NORMALIZED, 89017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 16, 16, 16, 16, 89117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 0, 0, 0, 0, 0, 89217e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 1, 1, 8 8938d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 8948d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 8958d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_RED_RGTC1, 8968d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_RED_RGTC1", 8978d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RED, 8988d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_UNSIGNED_NORMALIZED, 8998d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 0, 0, 0, 9008d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9018d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 8 /* 8 bytes per 4x4 block */ 9028d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9038d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 9048d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_SIGNED_RED_RGTC1, 9058d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_SIGNED_RED_RGTC1", 9068d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RED, 9078d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_SIGNED_NORMALIZED, 9088d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 0, 0, 0, 9098d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9108d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 8 /* 8 bytes per 4x4 block */ 9118d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9128d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 9138d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_RG_RGTC2, 9148d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_RG_RGTC2", 9158d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RG, 9168d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_UNSIGNED_NORMALIZED, 9178d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 0, 0, 9188d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9198d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 16 /* 16 bytes per 4x4 block */ 9208d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9218d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 9228d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_SIGNED_RG_RGTC2, 9238d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_SIGNED_RG_RGTC2", 9248d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RG, 9258d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_SIGNED_NORMALIZED, 9268d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 0, 0, 9278d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9288d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 16 /* 16 bytes per 4x4 block */ 9298d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9307d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9317d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_L_LATC1, 9327d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_L_LATC1", 9337d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE, 9347d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_UNSIGNED_NORMALIZED, 9357d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 0, 9367d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 9377d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 8 /* 8 bytes per 4x4 block */ 9387d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 9397d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9407d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_SIGNED_L_LATC1, 9417d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_SIGNED_L_LATC1", 9427d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE, 9437d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_SIGNED_NORMALIZED, 9447d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 0, 9457d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 9467d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 8 /* 8 bytes per 4x4 block */ 9477d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 9487d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9497d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_LA_LATC2, 9507d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_LA_LATC2", 9517d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE_ALPHA, 9527d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_UNSIGNED_NORMALIZED, 9537d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 4, 9547d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 9557d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 16 /* 16 bytes per 4x4 block */ 9567d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 9577d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9587d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_SIGNED_LA_LATC2, 9597d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_SIGNED_LA_LATC2", 9607d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE_ALPHA, 9617d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_SIGNED_NORMALIZED, 9627d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 4, 9637d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 9647d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 16 /* 16 bytes per 4x4 block */ 9657d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 9660be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 9670be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák /* Signed formats from EXT_texture_snorm that are not in GL3.1 */ 9680be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 9690be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_A8, 9700be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_A8", 9710be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_ALPHA, 9720be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 9730be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 8, 9740be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 0, 9750be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 1 9760be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 9770be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 9780be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_L8, 9790be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_L8", 9800be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE, 9810be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 9820be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 9830be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 8, 0, 0, 0, 0, 9840be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 1 9850be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 9860be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 9870be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_AL88, 9880be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_AL88", 9890be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE_ALPHA, 9900be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 9910be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 8, 9920be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 8, 0, 0, 0, 0, 9930be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 9940be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 9950be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 9960be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_I8, 9970be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_I8", 9980be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_INTENSITY, 9990be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10000be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 10010be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 8, 0, 0, 0, 10020be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 1 10030be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10040be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10050be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_A16, 10060be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_A16", 10070be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_ALPHA, 10080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 16, 10100be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 0, 10110be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 10120be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10140be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_L16, 10150be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_L16", 10160be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE, 10170be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10180be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 10190be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 16, 0, 0, 0, 0, 10200be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 10210be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10220be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10230be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_AL1616, 10240be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_AL1616", 10250be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE_ALPHA, 10260be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10270be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 16, 10280be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 16, 0, 0, 0, 0, 10290be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 4 10300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10310be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10320be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_I16, 10330be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_I16", 10340be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_INTENSITY, 10350be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 10370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 16, 0, 0, 0, 10380be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 10390be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák } 1040813870fd9588de101f68728507cff726d7513695Brian Paul}; 1041813870fd9588de101f68728507cff726d7513695Brian Paul 1042813870fd9588de101f68728507cff726d7513695Brian Paul 1043813870fd9588de101f68728507cff726d7513695Brian Paul 1044813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info * 1045813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format) 1046813870fd9588de101f68728507cff726d7513695Brian Paul{ 1047813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = &format_info[format]; 1048813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == format); 1049813870fd9588de101f68728507cff726d7513695Brian Paul return info; 1050813870fd9588de101f68728507cff726d7513695Brian Paul} 1051813870fd9588de101f68728507cff726d7513695Brian Paul 1052813870fd9588de101f68728507cff726d7513695Brian Paul 1053bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */ 1054bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char * 1055bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format) 1056bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{ 1057bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1058bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul return info->StrName; 1059bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul} 1060bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 1061bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 1062bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 1063eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1064eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format. 1065eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel). But for compressed formats 1066eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc. 1067eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 1068813870fd9588de101f68728507cff726d7513695Brian PaulGLuint 1069813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format) 1070813870fd9588de101f68728507cff726d7513695Brian Paul{ 1071813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1072813870fd9588de101f68728507cff726d7513695Brian Paul ASSERT(info->BytesPerBlock); 1073813870fd9588de101f68728507cff726d7513695Brian Paul return info->BytesPerBlock; 1074813870fd9588de101f68728507cff726d7513695Brian Paul} 1075813870fd9588de101f68728507cff726d7513695Brian Paul 1076813870fd9588de101f68728507cff726d7513695Brian Paul 1077eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1078eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format. 1079eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format one of MESA_FORMAT_x 1080eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc. 1081eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 10825978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint 10835978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname) 10845978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 10855978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 10865978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 10875978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul switch (pname) { 1088edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RED_BITS: 10895978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_RED_SIZE: 1090edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_RED_SIZE_EXT: 1091edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: 10925978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->RedBits; 1093edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_GREEN_BITS: 10945978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_GREEN_SIZE: 1095edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_GREEN_SIZE_EXT: 1096edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 10975978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->GreenBits; 1098edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_BLUE_BITS: 10995978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_BLUE_SIZE: 1100edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_BLUE_SIZE_EXT: 1101edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 11025978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->BlueBits; 1103edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_ALPHA_BITS: 11045978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_ALPHA_SIZE: 1105edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_ALPHA_SIZE_EXT: 1106edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 11075978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->AlphaBits; 11085978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INTENSITY_SIZE: 11095978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IntensityBits; 11105978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_LUMINANCE_SIZE: 11115978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->LuminanceBits; 1112edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_INDEX_BITS: 11135978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INDEX_SIZE_EXT: 11145978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IndexBits; 1115edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_DEPTH_BITS: 11165978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_DEPTH_SIZE_ARB: 1117edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_DEPTH_SIZE_EXT: 1118edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 11195978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DepthBits; 1120edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_STENCIL_BITS: 11215978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_STENCIL_SIZE_EXT: 1122edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_STENCIL_SIZE_EXT: 1123edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 11245978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->StencilBits; 11255978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul default: 11265978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()"); 11275978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return 0; 11285978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul } 11295978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 11305978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 11315978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 1132eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1133eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation) 1134eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format. 1135eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of: 1136eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1] 1137eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_SIGNED_NORMALIZED = signed int representing [-1, 1] 1138eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_INT = an ordinary unsigned integer 1139f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul * GL_INT = an ordinary signed integer 1140eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_FLOAT = an ordinary float 1141eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 11425978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum 11435978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format) 11445978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 11455978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 11465978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DataType; 11475978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 11485978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 11495978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 1150eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1151eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the basic format for the given type. The result will be 1152eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, 1153eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, GL_DEPTH_COMPONENT, 1154eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 1155eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 1156813870fd9588de101f68728507cff726d7513695Brian PaulGLenum 1157813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format) 1158813870fd9588de101f68728507cff726d7513695Brian Paul{ 1159813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1160813870fd9588de101f68728507cff726d7513695Brian Paul return info->BaseFormat; 1161813870fd9588de101f68728507cff726d7513695Brian Paul} 1162813870fd9588de101f68728507cff726d7513695Brian Paul 1163813870fd9588de101f68728507cff726d7513695Brian Paul 11647b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/** 11657b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format. Normally 11667b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1. But compressed formats will have block sizes 11677b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc. 11687b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw returns block width in pixels 11697b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh returns block height in pixels 11707b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */ 11717b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid 11727b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh) 11737b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{ 11747b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 11757b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bw = info->BlockWidth; 11767b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bh = info->BlockHeight; 11777b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul} 11787b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 11797b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 1180eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */ 1181813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean 1182813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format) 1183813870fd9588de101f68728507cff726d7513695Brian Paul{ 1184813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1185813870fd9588de101f68728507cff726d7513695Brian Paul return info->BlockWidth > 1 || info->BlockHeight > 1; 1186813870fd9588de101f68728507cff726d7513695Brian Paul} 1187813870fd9588de101f68728507cff726d7513695Brian Paul 1188813870fd9588de101f68728507cff726d7513695Brian Paul 1189813870fd9588de101f68728507cff726d7513695Brian Paul/** 1190e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler * Determine if the given format represents a packed depth/stencil buffer. 1191e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler */ 1192e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick BowlerGLboolean 1193e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format) 1194e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler{ 1195f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler const struct gl_format_info *info = _mesa_get_format_info(format); 1196e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1197f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler return info->BaseFormat == GL_DEPTH_STENCIL; 1198e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler} 1199e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1200e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1201e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler/** 1202ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul * Is the given format a signed/unsigned integer color format? 1203f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul */ 1204f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian PaulGLboolean 1205412b9608838b872bc294569b3ee913343a7e66f6Brian Paul_mesa_is_format_integer_color(gl_format format) 1206f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul{ 1207f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1208ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul return (info->DataType == GL_INT || info->DataType == GL_UNSIGNED_INT) && 1209ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul info->BaseFormat != GL_DEPTH_COMPONENT && 1210ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul info->BaseFormat != GL_DEPTH_STENCIL && 1211ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul info->BaseFormat != GL_STENCIL_INDEX; 1212f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul} 1213f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul 1214f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul 1215f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul/** 1216f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format. 1217f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB 1218f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */ 1219f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum 1220f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format) 1221f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{ 1222f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul /* XXX this info should be encoded in gl_format_info */ 1223f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul switch (format) { 1224f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB8: 1225f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA8: 1226f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SARGB8: 1227f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SL8: 1228f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SLA8: 1229f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB_DXT1: 1230f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT1: 1231f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT3: 1232f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT5: 1233f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_SRGB; 1234f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul default: 1235f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_LINEAR; 1236f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul } 1237f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul} 1238f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 1239aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul 1240aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul/** 1241aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For an sRGB format, return the corresponding linear color space format. 1242aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For non-sRGB formats, return the format as-is. 1243aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul */ 1244edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airliegl_format 1245edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie_mesa_get_srgb_format_linear(gl_format format) 1246edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie{ 1247edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie switch (format) { 1248edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGB8: 1249edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGB888; 1250edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1251edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA8: 1252edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA8888; 1253edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1254edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SARGB8: 1255edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_ARGB8888; 1256edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1257edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SL8: 1258edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_L8; 1259edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1260edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SLA8: 1261edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_AL88; 1262edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1263edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGB_DXT1: 1264edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGB_DXT1; 1265edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1266edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA_DXT1: 1267edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA_DXT1; 1268edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1269edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA_DXT3: 1270edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA_DXT3; 1271edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1272edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA_DXT5: 1273edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA_DXT5; 1274edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1275edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie default: 1276edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1277edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie } 1278edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie return format; 1279edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie} 1280edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie 1281f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 1282f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/** 12831c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size 12841c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format. 12851c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */ 12861c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint 12871c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width, 12881c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul GLsizei height, GLsizei depth) 12891c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{ 12901c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1291040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 12921c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 12937bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul /* compressed format (2D only for now) */ 12941c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint bw = info->BlockWidth, bh = info->BlockHeight; 12951c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint wblocks = (width + bw - 1) / bw; 12961c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint hblocks = (height + bh - 1) / bh; 1297040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint sz = wblocks * hblocks * info->BytesPerBlock; 12987bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul assert(depth == 1); 12991c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 13001c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 13011c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul else { 13021c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* non-compressed */ 13031c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint sz = width * height * depth * info->BytesPerBlock; 13041c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 13051c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 13061c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul} 13071c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 13081c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 130974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul/** 131074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * Same as _mesa_format_image_size() but returns a 64-bit value to 131174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * accomodate very large textures. 131274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul */ 131374c324fdbaebb7accaee668f2bc54af4699d0025Brian Pauluint64_t 131474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul_mesa_format_image_size64(gl_format format, GLsizei width, 131574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul GLsizei height, GLsizei depth) 131674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul{ 131774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 131874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul /* Strictly speaking, a conditional isn't needed here */ 131974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 132074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul /* compressed format (2D only for now) */ 132174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t bw = info->BlockWidth, bh = info->BlockHeight; 132274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t wblocks = (width + bw - 1) / bw; 132374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t hblocks = (height + bh - 1) / bh; 132474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t sz = wblocks * hblocks * info->BytesPerBlock; 132574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul assert(depth == 1); 132674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul return sz; 132774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul } 132874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul else { 132974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul /* non-compressed */ 133074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t sz = ((uint64_t) width * 133174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul (uint64_t) height * 133274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul (uint64_t) depth * 133374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul info->BytesPerBlock); 133474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul return sz; 133574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul } 133674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul} 133774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul 133874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul 13391c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 1340040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint 1341040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width) 1342040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{ 1343040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1344040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 1345040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 1346040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* compressed format */ 1347040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint bw = info->BlockWidth; 1348040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint wblocks = (width + bw - 1) / bw; 1349040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = wblocks * info->BytesPerBlock; 1350040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1351040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1352040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul else { 1353040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = width * info->BytesPerBlock; 1354040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1355040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1356040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul} 1357040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 1358040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 1359d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul/** 1360d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * Debug/test: check that all formats are handled in the 1361d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * _mesa_format_to_type_and_comps() function. When new pixel formats 1362d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * are added to Mesa, that function needs to be updated. 1363d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * This is a no-op after the first call. 1364d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul */ 1365d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulstatic void 1366d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulcheck_format_to_type_and_comps(void) 1367d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul{ 1368d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul gl_format f; 1369d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul 1370d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul for (f = MESA_FORMAT_NONE + 1; f < MESA_FORMAT_COUNT; f++) { 1371d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul GLenum datatype = 0; 1372d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul GLuint comps = 0; 1373d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul /* This function will emit a problem/warning if the format is 1374d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * not handled. 1375d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul */ 1376d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul _mesa_format_to_type_and_comps(f, &datatype, &comps); 1377d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul } 1378d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul} 1379d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul 13801c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 13811c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/** 1382813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table. 1383813870fd9588de101f68728507cff726d7513695Brian Paul */ 1384813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1385813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void) 1386813870fd9588de101f68728507cff726d7513695Brian Paul{ 1387813870fd9588de101f68728507cff726d7513695Brian Paul GLuint i; 1388813870fd9588de101f68728507cff726d7513695Brian Paul 1389813870fd9588de101f68728507cff726d7513695Brian Paul assert(Elements(format_info) == MESA_FORMAT_COUNT); 1390813870fd9588de101f68728507cff726d7513695Brian Paul 1391813870fd9588de101f68728507cff726d7513695Brian Paul for (i = 0; i < MESA_FORMAT_COUNT; i++) { 1392813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(i); 1393813870fd9588de101f68728507cff726d7513695Brian Paul assert(info); 1394813870fd9588de101f68728507cff726d7513695Brian Paul 1395813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == i); 1396813870fd9588de101f68728507cff726d7513695Brian Paul 1397e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul if (info->Name == MESA_FORMAT_NONE) 1398e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul continue; 1399e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 1400813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BlockWidth == 1 && info->BlockHeight == 1) { 1401813870fd9588de101f68728507cff726d7513695Brian Paul if (info->RedBits > 0) { 1402813870fd9588de101f68728507cff726d7513695Brian Paul GLuint t = info->RedBits + info->GreenBits 1403813870fd9588de101f68728507cff726d7513695Brian Paul + info->BlueBits + info->AlphaBits; 14040073f50cd47c48c706b4524364b9c0594804febfBrian Paul assert(t / 8 <= info->BytesPerBlock); 14056e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee (void) t; 1406813870fd9588de101f68728507cff726d7513695Brian Paul } 1407813870fd9588de101f68728507cff726d7513695Brian Paul } 1408813870fd9588de101f68728507cff726d7513695Brian Paul 1409813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->DataType == GL_UNSIGNED_NORMALIZED || 1410813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_SIGNED_NORMALIZED || 1411813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_UNSIGNED_INT || 14120073f50cd47c48c706b4524364b9c0594804febfBrian Paul info->DataType == GL_INT || 1413813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_FLOAT); 1414813870fd9588de101f68728507cff726d7513695Brian Paul 1415813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BaseFormat == GL_RGB) { 1416813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1417813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1418813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1419813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1420813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1421813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1422813870fd9588de101f68728507cff726d7513695Brian Paul } 1423813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_RGBA) { 1424813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1425813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1426813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1427813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits > 0); 1428813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1429813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1430813870fd9588de101f68728507cff726d7513695Brian Paul } 14315d1387b2da3626326410804026f8b92f1a121fdcIan Romanick else if (info->BaseFormat == GL_RG) { 14325d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->RedBits > 0); 14335d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->GreenBits > 0); 14345d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->BlueBits == 0); 14355d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->AlphaBits == 0); 14365d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->LuminanceBits == 0); 14375d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->IntensityBits == 0); 14385d1387b2da3626326410804026f8b92f1a121fdcIan Romanick } 14395d1387b2da3626326410804026f8b92f1a121fdcIan Romanick else if (info->BaseFormat == GL_RED) { 14405d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->RedBits > 0); 14415d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->GreenBits == 0); 14425d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->BlueBits == 0); 14435d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->AlphaBits == 0); 14445d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->LuminanceBits == 0); 14455d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->IntensityBits == 0); 14465d1387b2da3626326410804026f8b92f1a121fdcIan Romanick } 1447813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_LUMINANCE) { 1448813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1449813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1450813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1451813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1452813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits > 0); 1453813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1454813870fd9588de101f68728507cff726d7513695Brian Paul } 1455813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_INTENSITY) { 1456813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1457813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1458813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1459813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1460813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1461813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits > 0); 1462813870fd9588de101f68728507cff726d7513695Brian Paul } 1463813870fd9588de101f68728507cff726d7513695Brian Paul } 1464d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul 1465d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul check_format_to_type_and_comps(); 1466813870fd9588de101f68728507cff726d7513695Brian Paul} 1467813870fd9588de101f68728507cff726d7513695Brian Paul 1468813870fd9588de101f68728507cff726d7513695Brian Paul 1469019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1470813870fd9588de101f68728507cff726d7513695Brian Paul/** 1471019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format. 1472019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code. 1473813870fd9588de101f68728507cff726d7513695Brian Paul */ 1474813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1475019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format, 1476019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul GLenum *datatype, GLuint *comps) 1477813870fd9588de101f68728507cff726d7513695Brian Paul{ 1478019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul switch (format) { 1479019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888: 1480019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888_REV: 1481019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888: 1482019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888_REV: 148374d61d03b54d72217d463c248468cdcd09320efcBrian Paul case MESA_FORMAT_XRGB8888: 148479c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_XRGB8888_REV: 1485019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1486019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1487019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1488019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB888: 1489019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_BGR888: 1490019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1491019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1492019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1493019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565: 1494019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565_REV: 1495019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_5_6_5; 1496019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1497019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1498019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1499019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444: 1500019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444_REV: 1501019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_4_4_4_4; 1502019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1503019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1504019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1505019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555: 1506019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555_REV: 1507019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV; 1508019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1509019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1510019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1511621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák case MESA_FORMAT_ARGB2101010: 1512621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák *datatype = GL_UNSIGNED_INT_2_10_10_10_REV; 1513621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák *comps = 4; 1514621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák return; 1515621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 151679c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_RGBA5551: 151779c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_UNSIGNED_SHORT_5_5_5_1; 151879c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 4; 151979c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 152079c65410c132c22b67b7635cee740dea9a736f80Brian Paul 15214d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák case MESA_FORMAT_AL44: 15224d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák *datatype = MESA_UNSIGNED_BYTE_4_4; 15234d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák *comps = 2; 15244d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák return; 15254d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák 1526019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88: 1527019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88_REV: 15285d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG88: 15295d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG88_REV: 1530019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1531019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1532019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1533eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1534eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616: 1535eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616_REV: 15365d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG1616: 15375d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG1616_REV: 1538eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *datatype = GL_UNSIGNED_SHORT; 1539eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *comps = 2; 1540eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick return; 1541eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 15425d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_R16: 1543eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák case MESA_FORMAT_A16: 1544bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák case MESA_FORMAT_L16: 1545fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák case MESA_FORMAT_I16: 15465d1387b2da3626326410804026f8b92f1a121fdcIan Romanick *datatype = GL_UNSIGNED_SHORT; 15475d1387b2da3626326410804026f8b92f1a121fdcIan Romanick *comps = 1; 15485d1387b2da3626326410804026f8b92f1a121fdcIan Romanick return; 15495d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1550019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB332: 1551019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE_3_3_2; 1552019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1553019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1554019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1555019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_A8: 1556019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_L8: 1557019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_I8: 1558019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_CI8: 15595d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_R8: 156079c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_S8: 1561813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1562813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1563019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1564019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1565019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR: 1566019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR_REV: 1567019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT; 1568813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1569019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1570019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1571019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z24_S8: 1572019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1573019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1574019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1575019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1576019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_S8_Z24: 1577019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1578019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1579019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1580019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1581019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z16: 1582813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_SHORT; 1583019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1584019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1585019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1586e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul case MESA_FORMAT_X8_Z24: 1587e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *datatype = GL_UNSIGNED_INT; 1588e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *comps = 1; 1589e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul return; 1590e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1591c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca case MESA_FORMAT_Z24_X8: 1592c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *datatype = GL_UNSIGNED_INT; 1593c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *comps = 1; 1594c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca return; 1595c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1596019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z32: 1597019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1598019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1599019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1600019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1601019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_DUDV8: 1602019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_BYTE; 1603813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1604019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1605019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 160679c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_SIGNED_R8: 16070be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_A8: 16080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_L8: 16090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_I8: 161079c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_BYTE; 161179c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 1; 161279c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 16130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_RG88_REV: 16140be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_AL88: 161579c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_BYTE; 161679c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 2; 161779c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 1618019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888: 1619019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888_REV: 162079c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_SIGNED_RGBX8888: 1621813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_BYTE; 1622019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1623019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1624880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul 162579c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_RGBA_16: 162679c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_UNSIGNED_SHORT; 162779c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 4; 162879c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 162979c65410c132c22b67b7635cee740dea9a736f80Brian Paul 16300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_R16: 16310be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_A16: 16320be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_L16: 16330be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_I16: 1634880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1635880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 1; 1636880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 16370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_GR1616: 16380be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_AL1616: 1639880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1640880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 2; 1641880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1642880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RGB_16: 1643880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1644880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 3; 1645880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1646c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul case MESA_FORMAT_SIGNED_RGBA_16: 1647c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *datatype = GL_SHORT; 1648c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *comps = 4; 1649c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul return; 1650019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1651019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1652019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB8: 1653019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1654019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1655019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1656019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA8: 1657019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SARGB8: 1658019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1659019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1660019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1661019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SL8: 1662019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1663813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1664019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1665019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SLA8: 1666019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1667019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1668019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1669019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1670019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1671019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1 1672019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FXT1: 1673019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FXT1: 1674019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1675019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc 1676019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_DXT1: 1677019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT1: 1678019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT3: 1679019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT5: 1680019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1681019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB_DXT1: 1682019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT1: 1683019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT3: 1684019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT5: 1685019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 168669c78bf2c21c239d6064847dd0628f3526d68f9bIan Romanick#endif 16878d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_RED_RGTC1: 16888d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_SIGNED_RED_RGTC1: 16898d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_RG_RGTC2: 16908d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_SIGNED_RG_RGTC2: 16917d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_L_LATC1: 16927d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_SIGNED_L_LATC1: 16937d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_LA_LATC2: 16947d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_SIGNED_LA_LATC2: 1695019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul /* XXX generate error instead? */ 1696813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1697019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 0; 1698019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1699019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1700019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT32: 1701019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1702019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1703019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1704019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT16: 1705019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1706019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1707019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1708019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT32: 1709019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1710019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1711019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1712019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT16: 1713019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1714019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1715019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1716019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: 1717019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1718019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1719019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1720019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: 1721019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1722019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1723019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1724019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT32: 1725019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT32: 1726019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT32: 1727019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1728019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1729019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1730019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT16: 1731019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT16: 1732019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT16: 1733019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1734019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1735019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1736019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1737abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT8: 1738abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_BYTE; 1739abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1740abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1741abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT16: 1742abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_SHORT; 1743abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1744abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1745abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT32: 1746abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_INT; 1747abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1748abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1749abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1750abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 1751abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized unsigned integer formats. 1752abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 1753abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT8: 1754abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_BYTE; 1755abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1756abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1757abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT16: 1758abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_SHORT; 1759abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1760abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1761abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT32: 1762abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_INT; 1763abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1764abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1765abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 176679c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_COUNT: 1767a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee assert(0); 1768a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee return; 1769a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee 1770a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee case MESA_FORMAT_NONE: 177179c65410c132c22b67b7635cee740dea9a736f80Brian Paul /* For debug builds, warn if any formats are not handled */ 1772280750c5cabfc5f312c3abe0424f57b2edeb53dfVinson Lee#ifdef DEBUG 1773019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul default: 177479c65410c132c22b67b7635cee740dea9a736f80Brian Paul#endif 1775c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul _mesa_problem(NULL, "bad format %s in _mesa_format_to_type_and_comps", 1776c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul _mesa_get_format_name(format)); 1777019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = 0; 1778019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1779813870fd9588de101f68728507cff726d7513695Brian Paul } 1780813870fd9588de101f68728507cff726d7513695Brian Paul} 1781