formats.c revision f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098
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" 29813870fd9588de101f68728507cff726d7513695Brian Paul 30813870fd9588de101f68728507cff726d7513695Brian Paul 31813870fd9588de101f68728507cff726d7513695Brian Paul/** 32be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats. 33be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 34be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info 35be0765cd6ec47cf068775197f312a1123e044566Brian Paul{ 36be0765cd6ec47cf068775197f312a1123e044566Brian Paul gl_format Name; 37be0765cd6ec47cf068775197f312a1123e044566Brian Paul 38bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul /** text name for debugging */ 39bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const char *StrName; 40bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 41be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 42be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Base format is one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, 43eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, 44eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 45be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 46be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum BaseFormat; 47be0765cd6ec47cf068775197f312a1123e044566Brian Paul 48be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 49be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Logical data type: one of GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALED, 50abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * GL_UNSIGNED_INT, GL_INT, GL_FLOAT. 51be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 52be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum DataType; 53be0765cd6ec47cf068775197f312a1123e044566Brian Paul 54be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte RedBits; 55be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte GreenBits; 56be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlueBits; 57be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte AlphaBits; 58be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte LuminanceBits; 59be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IntensityBits; 60be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IndexBits; 61be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte DepthBits; 62be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte StencilBits; 63be0765cd6ec47cf068775197f312a1123e044566Brian Paul 64be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 65be0765cd6ec47cf068775197f312a1123e044566Brian Paul * To describe compressed formats. If not compressed, Width=Height=1. 66be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 67be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlockWidth, BlockHeight; 68be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BytesPerBlock; 69be0765cd6ec47cf068775197f312a1123e044566Brian Paul}; 70be0765cd6ec47cf068775197f312a1123e044566Brian Paul 71be0765cd6ec47cf068775197f312a1123e044566Brian Paul 72be0765cd6ec47cf068775197f312a1123e044566Brian Paul/** 73813870fd9588de101f68728507cff726d7513695Brian Paul * Info about each format. 74813870fd9588de101f68728507cff726d7513695Brian Paul * These must be in the same order as the MESA_FORMAT_* enums so that 75813870fd9588de101f68728507cff726d7513695Brian Paul * we can do lookups without searching. 76813870fd9588de101f68728507cff726d7513695Brian Paul */ 77813870fd9588de101f68728507cff726d7513695Brian Paulstatic struct gl_format_info format_info[MESA_FORMAT_COUNT] = 78813870fd9588de101f68728507cff726d7513695Brian Paul{ 79813870fd9588de101f68728507cff726d7513695Brian Paul { 80e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul MESA_FORMAT_NONE, /* Name */ 81bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_NONE", /* StrName */ 82e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* BaseFormat */ 83e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* DataType */ 84e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 85e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 86e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0 /* BlockWidth/Height,Bytes */ 87e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul }, 88e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul { 89813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888, /* Name */ 90bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888", /* StrName */ 91813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 92813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 93813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 94813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 95813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 96813870fd9588de101f68728507cff726d7513695Brian Paul }, 97813870fd9588de101f68728507cff726d7513695Brian Paul { 98813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888_REV, /* Name */ 99bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888_REV", /* StrName */ 100813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 101813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 102813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 103813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 104813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 105813870fd9588de101f68728507cff726d7513695Brian Paul }, 106813870fd9588de101f68728507cff726d7513695Brian Paul { 107813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888, /* Name */ 108bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888", /* StrName */ 109813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 110813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 111813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 112813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 113813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 114813870fd9588de101f68728507cff726d7513695Brian Paul }, 115813870fd9588de101f68728507cff726d7513695Brian Paul { 116813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888_REV, /* Name */ 117bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888_REV", /* StrName */ 118813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 119813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 120813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 121813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 122813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 123813870fd9588de101f68728507cff726d7513695Brian Paul }, 124813870fd9588de101f68728507cff726d7513695Brian Paul { 12574d61d03b54d72217d463c248468cdcd09320efcBrian Paul MESA_FORMAT_XRGB8888, /* Name */ 126bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_XRGB8888", /* StrName */ 12774d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_RGB, /* BaseFormat */ 12874d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 12974d61d03b54d72217d463c248468cdcd09320efcBrian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 13074d61d03b54d72217d463c248468cdcd09320efcBrian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 13174d61d03b54d72217d463c248468cdcd09320efcBrian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 13274d61d03b54d72217d463c248468cdcd09320efcBrian Paul }, 13374d61d03b54d72217d463c248468cdcd09320efcBrian Paul { 1342d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer MESA_FORMAT_XRGB8888_REV, /* Name */ 1352d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer "MESA_FORMAT_XRGB8888_REV", /* StrName */ 1362d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_RGB, /* BaseFormat */ 1372d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_UNSIGNED_NORMALIZED, /* DataType */ 1382d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 1392d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 1402d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 1, 1, 4 /* BlockWidth/Height,Bytes */ 1412d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer }, 1422d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer { 143813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB888, /* Name */ 144bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB888", /* StrName */ 145813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 146813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 147813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 148813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 149813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 150813870fd9588de101f68728507cff726d7513695Brian Paul }, 151813870fd9588de101f68728507cff726d7513695Brian Paul { 152813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_BGR888, /* Name */ 153bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_BGR888", /* StrName */ 154813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 155813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 156813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 157813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 158813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 159813870fd9588de101f68728507cff726d7513695Brian Paul }, 160813870fd9588de101f68728507cff726d7513695Brian Paul { 161813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565, /* Name */ 162bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565", /* StrName */ 163813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 164813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 165813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 166813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 167813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 168813870fd9588de101f68728507cff726d7513695Brian Paul }, 169813870fd9588de101f68728507cff726d7513695Brian Paul { 170813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565_REV, /* Name */ 171bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565_REV", /* StrName */ 172813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 173813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 174813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 175813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 176813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 177813870fd9588de101f68728507cff726d7513695Brian Paul }, 178813870fd9588de101f68728507cff726d7513695Brian Paul { 179813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444, /* Name */ 180bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444", /* StrName */ 181813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 182813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 183813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 184813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 185813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 186813870fd9588de101f68728507cff726d7513695Brian Paul }, 187813870fd9588de101f68728507cff726d7513695Brian Paul { 188813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444_REV, /* Name */ 189bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444_REV", /* StrName */ 190813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 191813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 192813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 193813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 194813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 195813870fd9588de101f68728507cff726d7513695Brian Paul }, 196813870fd9588de101f68728507cff726d7513695Brian Paul { 197813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA5551, /* Name */ 198bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA5551", /* StrName */ 199813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 200813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 201813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 202813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 203813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 204813870fd9588de101f68728507cff726d7513695Brian Paul }, 205813870fd9588de101f68728507cff726d7513695Brian Paul { 206813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555, /* Name */ 207bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555", /* StrName */ 208813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 209813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 210813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 211813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 212813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 213813870fd9588de101f68728507cff726d7513695Brian Paul }, 214813870fd9588de101f68728507cff726d7513695Brian Paul { 215813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555_REV, /* Name */ 216bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555_REV", /* StrName */ 217813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 218813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 219813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 220813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 221813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 222813870fd9588de101f68728507cff726d7513695Brian Paul }, 223813870fd9588de101f68728507cff726d7513695Brian Paul { 224813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88, /* Name */ 225bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88", /* StrName */ 226813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 227813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 228813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 229813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 230813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 231813870fd9588de101f68728507cff726d7513695Brian Paul }, 232813870fd9588de101f68728507cff726d7513695Brian Paul { 233813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88_REV, /* Name */ 234bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88_REV", /* StrName */ 235813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 236813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 237813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 238813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 239813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 240813870fd9588de101f68728507cff726d7513695Brian Paul }, 241813870fd9588de101f68728507cff726d7513695Brian Paul { 242eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616, /* Name */ 243eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616", /* StrName */ 244eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 245eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 246eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 247eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 248eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 249eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 250eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 251eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616_REV, /* Name */ 252eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616_REV", /* StrName */ 253eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 254eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 255eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 256eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 257eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 258eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 259eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 260813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB332, /* Name */ 261bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB332", /* StrName */ 262813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 263813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 264813870fd9588de101f68728507cff726d7513695Brian Paul 3, 3, 2, 0, /* Red/Green/Blue/AlphaBits */ 265813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 266813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 267813870fd9588de101f68728507cff726d7513695Brian Paul }, 268813870fd9588de101f68728507cff726d7513695Brian Paul { 269813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_A8, /* Name */ 270bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_A8", /* StrName */ 271813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, /* BaseFormat */ 272813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 273813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 274813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 275813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 276813870fd9588de101f68728507cff726d7513695Brian Paul }, 277813870fd9588de101f68728507cff726d7513695Brian Paul { 278813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_L8, /* Name */ 279bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_L8", /* StrName */ 280813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE, /* BaseFormat */ 281813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 282813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 283813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 284813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 285813870fd9588de101f68728507cff726d7513695Brian Paul }, 286813870fd9588de101f68728507cff726d7513695Brian Paul { 287813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_I8, /* Name */ 288bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_I8", /* StrName */ 289813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, /* BaseFormat */ 290813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 291813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 292813870fd9588de101f68728507cff726d7513695Brian Paul 0, 8, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 293813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 294813870fd9588de101f68728507cff726d7513695Brian Paul }, 295813870fd9588de101f68728507cff726d7513695Brian Paul { 296813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_CI8, /* Name */ 297bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_CI8", /* StrName */ 298813870fd9588de101f68728507cff726d7513695Brian Paul GL_COLOR_INDEX, /* BaseFormat */ 299813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 300813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 301813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 8, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 302813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 303813870fd9588de101f68728507cff726d7513695Brian Paul }, 304813870fd9588de101f68728507cff726d7513695Brian Paul { 305813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR, /* Name */ 306bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR", /* StrName */ 307813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 308813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 309813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 310813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 311813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 312813870fd9588de101f68728507cff726d7513695Brian Paul }, 313813870fd9588de101f68728507cff726d7513695Brian Paul { 314813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR_REV, /* Name */ 315bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR_REV", /* StrName */ 316813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 317813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 318813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 319813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 320813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 321813870fd9588de101f68728507cff726d7513695Brian Paul }, 322813870fd9588de101f68728507cff726d7513695Brian Paul { 323813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z24_S8, /* Name */ 324bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z24_S8", /* StrName */ 325813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 326813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 327813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 328813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 329813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 330813870fd9588de101f68728507cff726d7513695Brian Paul }, 331813870fd9588de101f68728507cff726d7513695Brian Paul { 332813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8_Z24, /* Name */ 333bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8_Z24", /* StrName */ 334813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 335813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 336813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 337813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 338813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 339813870fd9588de101f68728507cff726d7513695Brian Paul }, 340813870fd9588de101f68728507cff726d7513695Brian Paul { 341813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z16, /* Name */ 342bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z16", /* StrName */ 343813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 344813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 345813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 346813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 0, /* Lum/Int/Index/Depth/StencilBits */ 347813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 348813870fd9588de101f68728507cff726d7513695Brian Paul }, 349813870fd9588de101f68728507cff726d7513695Brian Paul { 350e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul MESA_FORMAT_X8_Z24, /* Name */ 351bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_X8_Z24", /* StrName */ 352e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 353e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_UNSIGNED_INT, /* DataType */ 354e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 355e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 356e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 357e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul }, 358e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul { 359c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca MESA_FORMAT_Z24_X8, /* Name */ 360c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca "MESA_FORMAT_Z24_X8", /* StrName */ 361c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_DEPTH_COMPONENT, /* BaseFormat */ 362c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_UNSIGNED_INT, /* DataType */ 363c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 364c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 365c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1, 1, 4 /* BlockWidth/Height,Bytes */ 366c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca }, 367c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca { 368813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z32, /* Name */ 369bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z32", /* StrName */ 370813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 371813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 372813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 373813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 0, /* Lum/Int/Index/Depth/StencilBits */ 374813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 375813870fd9588de101f68728507cff726d7513695Brian Paul }, 376813870fd9588de101f68728507cff726d7513695Brian Paul { 377813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8, /* Name */ 378bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8", /* StrName */ 379813870fd9588de101f68728507cff726d7513695Brian Paul GL_STENCIL_INDEX, /* BaseFormat */ 380813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 381813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 382813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 8, /* Lum/Int/Index/Depth/StencilBits */ 383813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 384813870fd9588de101f68728507cff726d7513695Brian Paul }, 385813870fd9588de101f68728507cff726d7513695Brian Paul { 386813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB8, 387bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB8", 388813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 389813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 390813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, 391813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 392813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 393813870fd9588de101f68728507cff726d7513695Brian Paul }, 394813870fd9588de101f68728507cff726d7513695Brian Paul { 395813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA8, 396bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA8", 397813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 398813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 399813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 400813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 401813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 402813870fd9588de101f68728507cff726d7513695Brian Paul }, 403813870fd9588de101f68728507cff726d7513695Brian Paul { 404813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SARGB8, 405bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SARGB8", 406813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 407813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 408813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 409813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 410813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 411813870fd9588de101f68728507cff726d7513695Brian Paul }, 412813870fd9588de101f68728507cff726d7513695Brian Paul { 413813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SL8, 414bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SL8", 41571cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul GL_LUMINANCE, 416813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 41771cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 0, 0, 0, 0, 418813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 41971cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 1, 1, 1 420813870fd9588de101f68728507cff726d7513695Brian Paul }, 421813870fd9588de101f68728507cff726d7513695Brian Paul { 422813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SLA8, 423bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SLA8", 424813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 425813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 426813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, 427813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 428813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 429813870fd9588de101f68728507cff726d7513695Brian Paul }, 430813870fd9588de101f68728507cff726d7513695Brian Paul { 431813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB_DXT1, /* Name */ 432bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB_DXT1", /* StrName */ 433813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 434813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 435813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 436813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 437813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 438813870fd9588de101f68728507cff726d7513695Brian Paul }, 439813870fd9588de101f68728507cff726d7513695Brian Paul { 440813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT1, 441bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT1", 442813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 443813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 444813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 445813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 446813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 447813870fd9588de101f68728507cff726d7513695Brian Paul }, 448813870fd9588de101f68728507cff726d7513695Brian Paul { 449813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT3, 450bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT3", 451813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 452813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 453813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 454813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 455813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 456813870fd9588de101f68728507cff726d7513695Brian Paul }, 457813870fd9588de101f68728507cff726d7513695Brian Paul { 458813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT5, 459bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT5", 460813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 461813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 462813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 463813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 464813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 465813870fd9588de101f68728507cff726d7513695Brian Paul }, 466813870fd9588de101f68728507cff726d7513695Brian Paul 467813870fd9588de101f68728507cff726d7513695Brian Paul { 468813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FXT1, 469bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FXT1", 470813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 471813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 472c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 0, /* approx Red/Green/BlueBits */ 473813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 474813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 475813870fd9588de101f68728507cff726d7513695Brian Paul }, 476813870fd9588de101f68728507cff726d7513695Brian Paul { 477813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FXT1, 478bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FXT1", 479813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 480813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 481c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 1, /* approx Red/Green/Blue/AlphaBits */ 482813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 483813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 484813870fd9588de101f68728507cff726d7513695Brian Paul }, 485813870fd9588de101f68728507cff726d7513695Brian Paul 486813870fd9588de101f68728507cff726d7513695Brian Paul { 487813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_DXT1, /* Name */ 488bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_DXT1", /* StrName */ 489813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 490813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 491813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 492813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 493813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 494813870fd9588de101f68728507cff726d7513695Brian Paul }, 495813870fd9588de101f68728507cff726d7513695Brian Paul { 496813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT1, 497bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT1", 498813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 499813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 500813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 501813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 502813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 503813870fd9588de101f68728507cff726d7513695Brian Paul }, 504813870fd9588de101f68728507cff726d7513695Brian Paul { 505813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT3, 506bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT3", 507813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 508813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 509813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 510813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 511813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 512813870fd9588de101f68728507cff726d7513695Brian Paul }, 513813870fd9588de101f68728507cff726d7513695Brian Paul { 514813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT5, 515bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT5", 516813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 517813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 518813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 519813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 520813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 521813870fd9588de101f68728507cff726d7513695Brian Paul }, 522813870fd9588de101f68728507cff726d7513695Brian Paul { 523813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT32, 524bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT32", 525813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 526813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 527813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 32, 528813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 529813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 16 530813870fd9588de101f68728507cff726d7513695Brian Paul }, 531813870fd9588de101f68728507cff726d7513695Brian Paul { 532813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT16, 533bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT16", 534813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 535813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 536813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 16, 537813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 538813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 539813870fd9588de101f68728507cff726d7513695Brian Paul }, 540813870fd9588de101f68728507cff726d7513695Brian Paul { 541813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT32, 542bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT32", 543813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 544813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 545813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 0, 546813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 547813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 12 548813870fd9588de101f68728507cff726d7513695Brian Paul }, 549813870fd9588de101f68728507cff726d7513695Brian Paul { 550813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT16, 551bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT16", 552813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 553813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 554813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 0, 555813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 556813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 6 557813870fd9588de101f68728507cff726d7513695Brian Paul }, 558813870fd9588de101f68728507cff726d7513695Brian Paul { 559813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT32, 560bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT32", 561813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 562813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 563813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 564813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 565813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 566813870fd9588de101f68728507cff726d7513695Brian Paul }, 567813870fd9588de101f68728507cff726d7513695Brian Paul { 568813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT16, 569bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT16", 570813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 571813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 572813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 573813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 574813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 575813870fd9588de101f68728507cff726d7513695Brian Paul }, 576813870fd9588de101f68728507cff726d7513695Brian Paul { 577813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT32, 578bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT32", 579813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 580813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 581813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 582813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 583813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 584813870fd9588de101f68728507cff726d7513695Brian Paul }, 585813870fd9588de101f68728507cff726d7513695Brian Paul { 586813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT16, 587bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT16", 588813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 589813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 590813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 591813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 592813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 593813870fd9588de101f68728507cff726d7513695Brian Paul }, 594813870fd9588de101f68728507cff726d7513695Brian Paul { 595813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, 596bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32", 597813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 598813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 599813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 600813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 601813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 602813870fd9588de101f68728507cff726d7513695Brian Paul }, 603813870fd9588de101f68728507cff726d7513695Brian Paul { 604813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, 605bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16", 606813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 607813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 608813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 609813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 610813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 611813870fd9588de101f68728507cff726d7513695Brian Paul }, 612813870fd9588de101f68728507cff726d7513695Brian Paul { 613813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT32, 614bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT32", 615813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 616813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 617813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 618813870fd9588de101f68728507cff726d7513695Brian Paul 0, 32, 0, 0, 0, 619813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 620813870fd9588de101f68728507cff726d7513695Brian Paul }, 621813870fd9588de101f68728507cff726d7513695Brian Paul { 622813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT16, 623bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT16", 624813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 625813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 626813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 627813870fd9588de101f68728507cff726d7513695Brian Paul 0, 16, 0, 0, 0, 628813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 629813870fd9588de101f68728507cff726d7513695Brian Paul }, 630abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 631abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized signed int formats */ 632abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 633abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT8, 634abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT8", 635abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 636abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 637abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 638abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 639abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 640abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 641abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 642abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT16, 643abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT16", 644abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 645abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 646abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 647abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 648abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 649abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 650abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 651abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT32, 652abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT32", 653abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 654abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 655abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 656abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 657abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 658abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 659abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 660abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized unsigned int formats */ 661abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 662abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT8, 663abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT8", 664abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 665abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 666abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 667abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 668abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 669abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 670abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 671abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT16, 672abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT16", 673abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 674abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 675abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 676abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 677abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 678abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 679abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 680abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT32, 681abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT32", 682abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 683abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 684abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 685abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 686abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 687abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 688abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 689abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 690813870fd9588de101f68728507cff726d7513695Brian Paul { 691813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_DUDV8, 692bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_DUDV8", 693813870fd9588de101f68728507cff726d7513695Brian Paul GL_DUDV_ATI, 694813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 695813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 696813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 697813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 698813870fd9588de101f68728507cff726d7513695Brian Paul }, 69984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 70084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 8 bits / channel */ 70184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 70284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R8, /* Name */ 70384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R8", /* StrName */ 70484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, /* BaseFormat */ 70584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, /* DataType */ 70684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 70784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 70884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 70984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 71084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 71184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RG88, 71284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RG88", 71384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 71484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 71584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 0, 0, 71684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 71784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 71884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 71984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 72084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBX8888, 72184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGBX8888", 72284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 72384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 72484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 8, 0, 72584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 72684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 /* 4 bpp, but no alpha */ 72784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 728813870fd9588de101f68728507cff726d7513695Brian Paul { 729813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888, 730bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888", 731813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 732813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 733813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 734813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 735813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 736813870fd9588de101f68728507cff726d7513695Brian Paul }, 737813870fd9588de101f68728507cff726d7513695Brian Paul { 738813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888_REV, 739bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888_REV", 740813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 741813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 742813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 743813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 744813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 745813870fd9588de101f68728507cff726d7513695Brian Paul }, 74684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 74784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 16 bits / channel */ 74884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 74984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R_16, 75084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R_16", 75184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 75284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 75384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 0, 0, 0, 75484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 75584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 75684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 75784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 75884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RG_16, 75984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RG_16", 76084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 76184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 76284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 0, 0, 76384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 76484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 76584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 76684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 76784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGB_16, 76884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGB_16", 76984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 77084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 77184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 16, 0, 77284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 77384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 6 77484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 775c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul { 776c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul MESA_FORMAT_SIGNED_RGBA_16, 777bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA_16", 778c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_RGBA, 779c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_SIGNED_NORMALIZED, 780c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 16, 16, 16, 16, 781c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 0, 0, 0, 0, 0, 782c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 1, 1, 8 78317e96718946486ef77927fcf3bb299d8bff32b98Brian Paul }, 78417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul { 78517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul MESA_FORMAT_RGBA_16, 78617e96718946486ef77927fcf3bb299d8bff32b98Brian Paul "MESA_FORMAT_RGBA_16", 78717e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_RGBA, 78817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_UNSIGNED_NORMALIZED, 78917e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 16, 16, 16, 16, 79017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 0, 0, 0, 0, 0, 79117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 1, 1, 8 792c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul } 793813870fd9588de101f68728507cff726d7513695Brian Paul}; 794813870fd9588de101f68728507cff726d7513695Brian Paul 795813870fd9588de101f68728507cff726d7513695Brian Paul 796813870fd9588de101f68728507cff726d7513695Brian Paul 797813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info * 798813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format) 799813870fd9588de101f68728507cff726d7513695Brian Paul{ 800813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = &format_info[format]; 801813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == format); 802813870fd9588de101f68728507cff726d7513695Brian Paul return info; 803813870fd9588de101f68728507cff726d7513695Brian Paul} 804813870fd9588de101f68728507cff726d7513695Brian Paul 805813870fd9588de101f68728507cff726d7513695Brian Paul 806bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */ 807bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char * 808bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format) 809bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{ 810bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 811bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul ASSERT(info->BytesPerBlock); 812bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul return info->StrName; 813bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul} 814bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 815bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 816bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 817eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 818eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format. 819eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel). But for compressed formats 820eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc. 821eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 822813870fd9588de101f68728507cff726d7513695Brian PaulGLuint 823813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format) 824813870fd9588de101f68728507cff726d7513695Brian Paul{ 825813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 826813870fd9588de101f68728507cff726d7513695Brian Paul ASSERT(info->BytesPerBlock); 827813870fd9588de101f68728507cff726d7513695Brian Paul return info->BytesPerBlock; 828813870fd9588de101f68728507cff726d7513695Brian Paul} 829813870fd9588de101f68728507cff726d7513695Brian Paul 830813870fd9588de101f68728507cff726d7513695Brian Paul 831eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 832eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format. 833eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format one of MESA_FORMAT_x 834eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc. 835eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 8365978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint 8375978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname) 8385978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 8395978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 8405978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 8415978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul switch (pname) { 842edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RED_BITS: 8435978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_RED_SIZE: 844edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_RED_SIZE_EXT: 845edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: 8465978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->RedBits; 847edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_GREEN_BITS: 8485978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_GREEN_SIZE: 849edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_GREEN_SIZE_EXT: 850edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 8515978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->GreenBits; 852edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_BLUE_BITS: 8535978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_BLUE_SIZE: 854edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_BLUE_SIZE_EXT: 855edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 8565978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->BlueBits; 857edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_ALPHA_BITS: 8585978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_ALPHA_SIZE: 859edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_ALPHA_SIZE_EXT: 860edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 8615978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->AlphaBits; 8625978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INTENSITY_SIZE: 8635978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IntensityBits; 8645978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_LUMINANCE_SIZE: 8655978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->LuminanceBits; 866edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_INDEX_BITS: 8675978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INDEX_SIZE_EXT: 8685978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IndexBits; 869edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_DEPTH_BITS: 8705978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_DEPTH_SIZE_ARB: 871edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_DEPTH_SIZE_EXT: 872edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 8735978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DepthBits; 874edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_STENCIL_BITS: 8755978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_STENCIL_SIZE_EXT: 876edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_STENCIL_SIZE_EXT: 877edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 8785978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->StencilBits; 8795978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul default: 8805978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()"); 8815978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return 0; 8825978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul } 8835978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 8845978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 8855978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 886eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 887eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation) 888eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format. 889eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of: 890eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1] 891eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_SIGNED_NORMALIZED = signed int representing [-1, 1] 892eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_INT = an ordinary unsigned integer 893eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_FLOAT = an ordinary float 894eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 8955978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum 8965978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format) 8975978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 8985978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 8995978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DataType; 9005978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 9015978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 9025978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 903eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 904eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the basic format for the given type. The result will be 905eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, 906eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, GL_DEPTH_COMPONENT, 907eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 908eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 909813870fd9588de101f68728507cff726d7513695Brian PaulGLenum 910813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format) 911813870fd9588de101f68728507cff726d7513695Brian Paul{ 912813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 913813870fd9588de101f68728507cff726d7513695Brian Paul return info->BaseFormat; 914813870fd9588de101f68728507cff726d7513695Brian Paul} 915813870fd9588de101f68728507cff726d7513695Brian Paul 916813870fd9588de101f68728507cff726d7513695Brian Paul 9177b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/** 9187b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format. Normally 9197b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1. But compressed formats will have block sizes 9207b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc. 9217b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw returns block width in pixels 9227b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh returns block height in pixels 9237b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */ 9247b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid 9257b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh) 9267b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{ 9277b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 9287b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bw = info->BlockWidth; 9297b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bh = info->BlockHeight; 9307b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul} 9317b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 9327b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 933eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */ 934813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean 935813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format) 936813870fd9588de101f68728507cff726d7513695Brian Paul{ 937813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 938813870fd9588de101f68728507cff726d7513695Brian Paul return info->BlockWidth > 1 || info->BlockHeight > 1; 939813870fd9588de101f68728507cff726d7513695Brian Paul} 940813870fd9588de101f68728507cff726d7513695Brian Paul 941813870fd9588de101f68728507cff726d7513695Brian Paul 942813870fd9588de101f68728507cff726d7513695Brian Paul/** 943e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler * Determine if the given format represents a packed depth/stencil buffer. 944e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler */ 945e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick BowlerGLboolean 946e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format) 947e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler{ 948f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler const struct gl_format_info *info = _mesa_get_format_info(format); 949e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 950f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler return info->BaseFormat == GL_DEPTH_STENCIL; 951e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler} 952e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 953e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 954e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler/** 955f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format. 956f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB 957f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */ 958f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum 959f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format) 960f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{ 961f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul /* XXX this info should be encoded in gl_format_info */ 962f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul switch (format) { 963f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB8: 964f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA8: 965f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SARGB8: 966f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SL8: 967f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SLA8: 968f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB_DXT1: 969f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT1: 970f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT3: 971f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT5: 972f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_SRGB; 973f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul default: 974f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_LINEAR; 975f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul } 976f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul} 977f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 978f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 979f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/** 9801c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size 9811c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format. 9821c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */ 9831c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint 9841c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width, 9851c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul GLsizei height, GLsizei depth) 9861c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{ 9871c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 988040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 9891c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 9901c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* compressed format */ 9911c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint bw = info->BlockWidth, bh = info->BlockHeight; 9921c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint wblocks = (width + bw - 1) / bw; 9931c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint hblocks = (height + bh - 1) / bh; 994040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint sz = wblocks * hblocks * info->BytesPerBlock; 9951c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 9961c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 9971c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul else { 9981c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* non-compressed */ 9991c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint sz = width * height * depth * info->BytesPerBlock; 10001c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 10011c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 10021c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul} 10031c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 10041c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 10051c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 1006040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint 1007040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width) 1008040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{ 1009040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1010040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 1011040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 1012040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* compressed format */ 1013040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint bw = info->BlockWidth; 1014040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint wblocks = (width + bw - 1) / bw; 1015040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = wblocks * info->BytesPerBlock; 1016040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1017040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1018040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul else { 1019040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = width * info->BytesPerBlock; 1020040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1021040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1022040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul} 1023040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 1024040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 10251c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 10261c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/** 1027813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table. 1028813870fd9588de101f68728507cff726d7513695Brian Paul */ 1029813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1030813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void) 1031813870fd9588de101f68728507cff726d7513695Brian Paul{ 1032813870fd9588de101f68728507cff726d7513695Brian Paul GLuint i; 1033813870fd9588de101f68728507cff726d7513695Brian Paul 1034813870fd9588de101f68728507cff726d7513695Brian Paul assert(Elements(format_info) == MESA_FORMAT_COUNT); 1035813870fd9588de101f68728507cff726d7513695Brian Paul 1036813870fd9588de101f68728507cff726d7513695Brian Paul for (i = 0; i < MESA_FORMAT_COUNT; i++) { 1037813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(i); 1038813870fd9588de101f68728507cff726d7513695Brian Paul assert(info); 1039813870fd9588de101f68728507cff726d7513695Brian Paul 1040813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == i); 1041813870fd9588de101f68728507cff726d7513695Brian Paul 1042e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul if (info->Name == MESA_FORMAT_NONE) 1043e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul continue; 1044e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 1045813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BlockWidth == 1 && info->BlockHeight == 1) { 1046813870fd9588de101f68728507cff726d7513695Brian Paul if (info->RedBits > 0) { 1047813870fd9588de101f68728507cff726d7513695Brian Paul GLuint t = info->RedBits + info->GreenBits 1048813870fd9588de101f68728507cff726d7513695Brian Paul + info->BlueBits + info->AlphaBits; 1049813870fd9588de101f68728507cff726d7513695Brian Paul assert(t / 8 == info->BytesPerBlock); 10506e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee (void) t; 1051813870fd9588de101f68728507cff726d7513695Brian Paul } 1052813870fd9588de101f68728507cff726d7513695Brian Paul } 1053813870fd9588de101f68728507cff726d7513695Brian Paul 1054813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->DataType == GL_UNSIGNED_NORMALIZED || 1055813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_SIGNED_NORMALIZED || 1056813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_UNSIGNED_INT || 1057813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_FLOAT); 1058813870fd9588de101f68728507cff726d7513695Brian Paul 1059813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BaseFormat == GL_RGB) { 1060813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1061813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1062813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1063813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1064813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1065813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1066813870fd9588de101f68728507cff726d7513695Brian Paul } 1067813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_RGBA) { 1068813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1069813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1070813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1071813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits > 0); 1072813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1073813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1074813870fd9588de101f68728507cff726d7513695Brian Paul } 1075813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_LUMINANCE) { 1076813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1077813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1078813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1079813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1080813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits > 0); 1081813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1082813870fd9588de101f68728507cff726d7513695Brian Paul } 1083813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_INTENSITY) { 1084813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1085813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1086813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1087813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1088813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1089813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits > 0); 1090813870fd9588de101f68728507cff726d7513695Brian Paul } 1091813870fd9588de101f68728507cff726d7513695Brian Paul 1092813870fd9588de101f68728507cff726d7513695Brian Paul } 1093813870fd9588de101f68728507cff726d7513695Brian Paul} 1094813870fd9588de101f68728507cff726d7513695Brian Paul 1095813870fd9588de101f68728507cff726d7513695Brian Paul 1096019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1097813870fd9588de101f68728507cff726d7513695Brian Paul/** 1098019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format. 1099019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code. 1100813870fd9588de101f68728507cff726d7513695Brian Paul */ 1101813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1102019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format, 1103019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul GLenum *datatype, GLuint *comps) 1104813870fd9588de101f68728507cff726d7513695Brian Paul{ 1105019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul switch (format) { 1106019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888: 1107019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888_REV: 1108019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888: 1109019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888_REV: 111074d61d03b54d72217d463c248468cdcd09320efcBrian Paul case MESA_FORMAT_XRGB8888: 1111019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1112019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1113019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1114019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB888: 1115019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_BGR888: 1116019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1117019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1118019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1119019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565: 1120019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565_REV: 1121019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_5_6_5; 1122019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1123019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1124019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1125019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444: 1126019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444_REV: 1127019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_4_4_4_4; 1128019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1129019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1130019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1131019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555: 1132019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555_REV: 1133019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV; 1134019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1135019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1136019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1137019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88: 1138019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88_REV: 1139019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1140019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1141019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1142eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1143eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616: 1144eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616_REV: 1145eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *datatype = GL_UNSIGNED_SHORT; 1146eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *comps = 2; 1147eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick return; 1148eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1149019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB332: 1150019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE_3_3_2; 1151019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1152019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1153019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1154019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_A8: 1155019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_L8: 1156019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_I8: 1157019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_CI8: 1158813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1159813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1160019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1161019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1162019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR: 1163019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR_REV: 1164019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT; 1165813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1166019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1167019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1168019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z24_S8: 1169019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1170019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1171019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1172019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1173019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_S8_Z24: 1174019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1175019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1176019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1177019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1178019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z16: 1179813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_SHORT; 1180019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1181019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1182019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1183e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul case MESA_FORMAT_X8_Z24: 1184e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *datatype = GL_UNSIGNED_INT; 1185e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *comps = 1; 1186e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul return; 1187e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1188c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca case MESA_FORMAT_Z24_X8: 1189c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *datatype = GL_UNSIGNED_INT; 1190c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *comps = 1; 1191c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca return; 1192c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1193019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z32: 1194019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1195019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1196019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1197019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1198019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_DUDV8: 1199019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_BYTE; 1200813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1201019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1202019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1203019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888: 1204019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888_REV: 1205813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_BYTE; 1206019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1207019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1208880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul 1209880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_R_16: 1210880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1211880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 1; 1212880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1213880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RG_16: 1214880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1215880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 2; 1216880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1217880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RGB_16: 1218880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1219880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 3; 1220880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1221c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul case MESA_FORMAT_SIGNED_RGBA_16: 1222c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *datatype = GL_SHORT; 1223c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *comps = 4; 1224c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul return; 1225019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1226019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1227019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB8: 1228019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1229019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1230019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1231019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA8: 1232019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SARGB8: 1233019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1234019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1235019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1236019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SL8: 1237019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1238813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1239019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1240019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SLA8: 1241019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1242019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1243019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1244019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1245019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1246019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1 1247019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FXT1: 1248019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FXT1: 1249019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1250019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc 1251019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_DXT1: 1252019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT1: 1253019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT3: 1254019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT5: 1255019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1256019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB_DXT1: 1257019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT1: 1258019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT3: 1259019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT5: 1260019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1261019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul /* XXX generate error instead? */ 1262813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1263019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 0; 1264019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1265019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1266019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1267019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT32: 1268019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1269019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1270019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1271019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT16: 1272019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1273019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1274019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1275019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT32: 1276019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1277019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1278019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1279019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT16: 1280019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1281019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1282019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1283019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: 1284019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1285019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1286019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1287019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: 1288019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1289019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1290019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1291019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT32: 1292019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT32: 1293019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT32: 1294019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1295019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1296019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1297019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT16: 1298019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT16: 1299019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT16: 1300019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1301019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1302019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1303019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1304abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT8: 1305abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_BYTE; 1306abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1307abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1308abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT16: 1309abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_SHORT; 1310abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1311abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1312abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT32: 1313abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_INT; 1314abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1315abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1316abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1317abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 1318abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized unsigned integer formats. 1319abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 1320abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT8: 1321abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_BYTE; 1322abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1323abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1324abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT16: 1325abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_SHORT; 1326abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1327abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1328abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT32: 1329abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_INT; 1330abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1331abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1332abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1333abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1334019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul default: 1335019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul _mesa_problem(NULL, "bad format in _mesa_format_to_type_and_comps"); 1336019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = 0; 1337019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1338813870fd9588de101f68728507cff726d7513695Brian Paul } 1339813870fd9588de101f68728507cff726d7513695Brian Paul} 1340