formats.c revision 5d1387b2da3626326410804026f8b92f1a121fdc
1813870fd9588de101f68728507cff726d7513695Brian Paul/* 2813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa 3-D graphics library 3813870fd9588de101f68728507cff726d7513695Brian Paul * Version: 7.7 4813870fd9588de101f68728507cff726d7513695Brian Paul * 5813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 6813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (c) 2008-2009 VMware, Inc. 7813870fd9588de101f68728507cff726d7513695Brian Paul * 8813870fd9588de101f68728507cff726d7513695Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 9813870fd9588de101f68728507cff726d7513695Brian Paul * copy of this software and associated documentation files (the "Software"), 10813870fd9588de101f68728507cff726d7513695Brian Paul * to deal in the Software without restriction, including without limitation 11813870fd9588de101f68728507cff726d7513695Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12813870fd9588de101f68728507cff726d7513695Brian Paul * and/or sell copies of the Software, and to permit persons to whom the 13813870fd9588de101f68728507cff726d7513695Brian Paul * Software is furnished to do so, subject to the following conditions: 14813870fd9588de101f68728507cff726d7513695Brian Paul * 15813870fd9588de101f68728507cff726d7513695Brian Paul * The above copyright notice and this permission notice shall be included 16813870fd9588de101f68728507cff726d7513695Brian Paul * in all copies or substantial portions of the Software. 17813870fd9588de101f68728507cff726d7513695Brian Paul * 18813870fd9588de101f68728507cff726d7513695Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19813870fd9588de101f68728507cff726d7513695Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20813870fd9588de101f68728507cff726d7513695Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21813870fd9588de101f68728507cff726d7513695Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 22813870fd9588de101f68728507cff726d7513695Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23813870fd9588de101f68728507cff726d7513695Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24813870fd9588de101f68728507cff726d7513695Brian Paul */ 25813870fd9588de101f68728507cff726d7513695Brian Paul 26813870fd9588de101f68728507cff726d7513695Brian Paul 27c28d78f8324cfc17936af63c258a1cc55d590d60Brian Paul#include "imports.h" 28813870fd9588de101f68728507cff726d7513695Brian Paul#include "formats.h" 293a6f9d0f47861b1c618366d679ad8ddd9a06b323Brian Paul#include "mfeatures.h" 30813870fd9588de101f68728507cff726d7513695Brian Paul 31813870fd9588de101f68728507cff726d7513695Brian Paul 32813870fd9588de101f68728507cff726d7513695Brian Paul/** 33be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats. 34be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 35be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info 36be0765cd6ec47cf068775197f312a1123e044566Brian Paul{ 37be0765cd6ec47cf068775197f312a1123e044566Brian Paul gl_format Name; 38be0765cd6ec47cf068775197f312a1123e044566Brian Paul 39bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul /** text name for debugging */ 40bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const char *StrName; 41bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 42be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 43be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Base format is one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, 44eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, 45eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 46be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 47be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum BaseFormat; 48be0765cd6ec47cf068775197f312a1123e044566Brian Paul 49be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 50be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Logical data type: one of GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALED, 51abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * GL_UNSIGNED_INT, GL_INT, GL_FLOAT. 52be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 53be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum DataType; 54be0765cd6ec47cf068775197f312a1123e044566Brian Paul 55be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte RedBits; 56be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte GreenBits; 57be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlueBits; 58be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte AlphaBits; 59be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte LuminanceBits; 60be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IntensityBits; 61be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IndexBits; 62be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte DepthBits; 63be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte StencilBits; 64be0765cd6ec47cf068775197f312a1123e044566Brian Paul 65be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 66be0765cd6ec47cf068775197f312a1123e044566Brian Paul * To describe compressed formats. If not compressed, Width=Height=1. 67be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 68be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlockWidth, BlockHeight; 69be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BytesPerBlock; 70be0765cd6ec47cf068775197f312a1123e044566Brian Paul}; 71be0765cd6ec47cf068775197f312a1123e044566Brian Paul 72be0765cd6ec47cf068775197f312a1123e044566Brian Paul 73be0765cd6ec47cf068775197f312a1123e044566Brian Paul/** 74813870fd9588de101f68728507cff726d7513695Brian Paul * Info about each format. 75813870fd9588de101f68728507cff726d7513695Brian Paul * These must be in the same order as the MESA_FORMAT_* enums so that 76813870fd9588de101f68728507cff726d7513695Brian Paul * we can do lookups without searching. 77813870fd9588de101f68728507cff726d7513695Brian Paul */ 78813870fd9588de101f68728507cff726d7513695Brian Paulstatic struct gl_format_info format_info[MESA_FORMAT_COUNT] = 79813870fd9588de101f68728507cff726d7513695Brian Paul{ 80813870fd9588de101f68728507cff726d7513695Brian Paul { 81e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul MESA_FORMAT_NONE, /* Name */ 82bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_NONE", /* StrName */ 83e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* BaseFormat */ 84e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* DataType */ 85e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 86e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 87e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0 /* BlockWidth/Height,Bytes */ 88e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul }, 89e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul { 90813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888, /* Name */ 91bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888", /* StrName */ 92813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 93813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 94813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 95813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 96813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 97813870fd9588de101f68728507cff726d7513695Brian Paul }, 98813870fd9588de101f68728507cff726d7513695Brian Paul { 99813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888_REV, /* Name */ 100bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888_REV", /* StrName */ 101813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 102813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 103813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 104813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 105813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 106813870fd9588de101f68728507cff726d7513695Brian Paul }, 107813870fd9588de101f68728507cff726d7513695Brian Paul { 108813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888, /* Name */ 109bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888", /* StrName */ 110813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 111813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 112813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 113813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 114813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 115813870fd9588de101f68728507cff726d7513695Brian Paul }, 116813870fd9588de101f68728507cff726d7513695Brian Paul { 117813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888_REV, /* Name */ 118bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888_REV", /* StrName */ 119813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 120813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 121813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 122813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 123813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 124813870fd9588de101f68728507cff726d7513695Brian Paul }, 125813870fd9588de101f68728507cff726d7513695Brian Paul { 12674d61d03b54d72217d463c248468cdcd09320efcBrian Paul MESA_FORMAT_XRGB8888, /* Name */ 127bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_XRGB8888", /* StrName */ 12874d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_RGB, /* BaseFormat */ 12974d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 13074d61d03b54d72217d463c248468cdcd09320efcBrian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 13174d61d03b54d72217d463c248468cdcd09320efcBrian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 13274d61d03b54d72217d463c248468cdcd09320efcBrian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 13374d61d03b54d72217d463c248468cdcd09320efcBrian Paul }, 13474d61d03b54d72217d463c248468cdcd09320efcBrian Paul { 1352d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer MESA_FORMAT_XRGB8888_REV, /* Name */ 1362d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer "MESA_FORMAT_XRGB8888_REV", /* StrName */ 1372d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_RGB, /* BaseFormat */ 1382d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_UNSIGNED_NORMALIZED, /* DataType */ 1392d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 1402d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 1412d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 1, 1, 4 /* BlockWidth/Height,Bytes */ 1422d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer }, 1432d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer { 144813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB888, /* Name */ 145bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB888", /* StrName */ 146813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 147813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 148813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 149813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 150813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 151813870fd9588de101f68728507cff726d7513695Brian Paul }, 152813870fd9588de101f68728507cff726d7513695Brian Paul { 153813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_BGR888, /* Name */ 154bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_BGR888", /* StrName */ 155813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 156813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 157813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 158813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 159813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 160813870fd9588de101f68728507cff726d7513695Brian Paul }, 161813870fd9588de101f68728507cff726d7513695Brian Paul { 162813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565, /* Name */ 163bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565", /* StrName */ 164813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 165813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 166813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 167813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 168813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 169813870fd9588de101f68728507cff726d7513695Brian Paul }, 170813870fd9588de101f68728507cff726d7513695Brian Paul { 171813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565_REV, /* Name */ 172bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565_REV", /* StrName */ 173813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 174813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 175813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 176813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 177813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 178813870fd9588de101f68728507cff726d7513695Brian Paul }, 179813870fd9588de101f68728507cff726d7513695Brian Paul { 180813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444, /* Name */ 181bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444", /* StrName */ 182813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 183813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 184813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 185813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 186813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 187813870fd9588de101f68728507cff726d7513695Brian Paul }, 188813870fd9588de101f68728507cff726d7513695Brian Paul { 189813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444_REV, /* Name */ 190bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444_REV", /* StrName */ 191813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 192813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 193813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 194813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 195813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 196813870fd9588de101f68728507cff726d7513695Brian Paul }, 197813870fd9588de101f68728507cff726d7513695Brian Paul { 198813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA5551, /* Name */ 199bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA5551", /* StrName */ 200813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 201813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 202813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 203813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 204813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 205813870fd9588de101f68728507cff726d7513695Brian Paul }, 206813870fd9588de101f68728507cff726d7513695Brian Paul { 207813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555, /* Name */ 208bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555", /* StrName */ 209813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 210813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 211813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 212813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 213813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 214813870fd9588de101f68728507cff726d7513695Brian Paul }, 215813870fd9588de101f68728507cff726d7513695Brian Paul { 216813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555_REV, /* Name */ 217bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555_REV", /* StrName */ 218813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 219813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 220813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 221813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 222813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 223813870fd9588de101f68728507cff726d7513695Brian Paul }, 224813870fd9588de101f68728507cff726d7513695Brian Paul { 225813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88, /* Name */ 226bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88", /* StrName */ 227813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 228813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 229813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 230813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 231813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 232813870fd9588de101f68728507cff726d7513695Brian Paul }, 233813870fd9588de101f68728507cff726d7513695Brian Paul { 234813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88_REV, /* Name */ 235bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88_REV", /* StrName */ 236813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 237813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 238813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 239813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 240813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 241813870fd9588de101f68728507cff726d7513695Brian Paul }, 242813870fd9588de101f68728507cff726d7513695Brian Paul { 243eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616, /* Name */ 244eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616", /* StrName */ 245eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 246eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 247eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 248eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 249eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 250eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 251eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 252eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616_REV, /* Name */ 253eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616_REV", /* StrName */ 254eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 255eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 256eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 257eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 258eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 259eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 260eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 261813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB332, /* Name */ 262bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB332", /* StrName */ 263813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 264813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 265813870fd9588de101f68728507cff726d7513695Brian Paul 3, 3, 2, 0, /* Red/Green/Blue/AlphaBits */ 266813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 267813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 268813870fd9588de101f68728507cff726d7513695Brian Paul }, 269813870fd9588de101f68728507cff726d7513695Brian Paul { 270813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_A8, /* Name */ 271bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_A8", /* StrName */ 272813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, /* BaseFormat */ 273813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 274813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 275813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 276813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 277813870fd9588de101f68728507cff726d7513695Brian Paul }, 278813870fd9588de101f68728507cff726d7513695Brian Paul { 279813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_L8, /* Name */ 280bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_L8", /* StrName */ 281813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE, /* BaseFormat */ 282813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 283813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 284813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 285813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 286813870fd9588de101f68728507cff726d7513695Brian Paul }, 287813870fd9588de101f68728507cff726d7513695Brian Paul { 288813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_I8, /* Name */ 289bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_I8", /* StrName */ 290813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, /* BaseFormat */ 291813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 292813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 293813870fd9588de101f68728507cff726d7513695Brian Paul 0, 8, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 294813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 295813870fd9588de101f68728507cff726d7513695Brian Paul }, 296813870fd9588de101f68728507cff726d7513695Brian Paul { 297813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_CI8, /* Name */ 298bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_CI8", /* StrName */ 299813870fd9588de101f68728507cff726d7513695Brian Paul GL_COLOR_INDEX, /* BaseFormat */ 300813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 301813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 302813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 8, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 303813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 304813870fd9588de101f68728507cff726d7513695Brian Paul }, 305813870fd9588de101f68728507cff726d7513695Brian Paul { 306813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR, /* Name */ 307bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR", /* StrName */ 308813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 309813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 310813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 311813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 312813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 313813870fd9588de101f68728507cff726d7513695Brian Paul }, 314813870fd9588de101f68728507cff726d7513695Brian Paul { 315813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR_REV, /* Name */ 316bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR_REV", /* StrName */ 317813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 318813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 319813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 320813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 321813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 322813870fd9588de101f68728507cff726d7513695Brian Paul }, 323813870fd9588de101f68728507cff726d7513695Brian Paul { 3245d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R8, 3255d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_R8", 3265d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RED, 3275d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3285d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 0, 0, 0, 3295d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3305d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 1 3315d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3325d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3335d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG88, 3345d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG88", 3355d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3365d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3375d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 8, 0, 0, 3385d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3395d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3405d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3415d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3425d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG88_REV, 3435d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG88_REV", 3445d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3455d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3465d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 8, 0, 0, 3475d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3485d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3495d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3505d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3515d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R16, 3525d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_R16", 3535d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RED, 3545d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3555d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 0, 0, 0, 3565d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3575d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3585d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3595d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3605d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG1616, 3615d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG1616", 3625d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3635d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3645d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 16, 0, 0, 3655d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3665d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 4 3675d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3685d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3695d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG1616_REV, 3705d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG1616_REV", 3715d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 16, 0, 0, 3745d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3755d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 4 3765d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3775d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 378813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z24_S8, /* Name */ 379bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z24_S8", /* StrName */ 380813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 381813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 382813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 383813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 384813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 385813870fd9588de101f68728507cff726d7513695Brian Paul }, 386813870fd9588de101f68728507cff726d7513695Brian Paul { 387813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8_Z24, /* Name */ 388bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8_Z24", /* StrName */ 389813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 390813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 391813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 392813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 393813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 394813870fd9588de101f68728507cff726d7513695Brian Paul }, 395813870fd9588de101f68728507cff726d7513695Brian Paul { 396813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z16, /* Name */ 397bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z16", /* StrName */ 398813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 399813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 400813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 401813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 0, /* Lum/Int/Index/Depth/StencilBits */ 402813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 403813870fd9588de101f68728507cff726d7513695Brian Paul }, 404813870fd9588de101f68728507cff726d7513695Brian Paul { 405e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul MESA_FORMAT_X8_Z24, /* Name */ 406bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_X8_Z24", /* StrName */ 407e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 408e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_UNSIGNED_INT, /* DataType */ 409e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 410e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 411e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 412e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul }, 413e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul { 414c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca MESA_FORMAT_Z24_X8, /* Name */ 415c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca "MESA_FORMAT_Z24_X8", /* StrName */ 416c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_DEPTH_COMPONENT, /* BaseFormat */ 417c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_UNSIGNED_INT, /* DataType */ 418c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 419c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 420c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1, 1, 4 /* BlockWidth/Height,Bytes */ 421c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca }, 422c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca { 423813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z32, /* Name */ 424bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z32", /* StrName */ 425813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 426813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 427813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 428813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 0, /* Lum/Int/Index/Depth/StencilBits */ 429813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 430813870fd9588de101f68728507cff726d7513695Brian Paul }, 431813870fd9588de101f68728507cff726d7513695Brian Paul { 432813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8, /* Name */ 433bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8", /* StrName */ 434813870fd9588de101f68728507cff726d7513695Brian Paul GL_STENCIL_INDEX, /* BaseFormat */ 435813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 436813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 437813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 8, /* Lum/Int/Index/Depth/StencilBits */ 438813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 439813870fd9588de101f68728507cff726d7513695Brian Paul }, 440813870fd9588de101f68728507cff726d7513695Brian Paul { 441813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB8, 442bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB8", 443813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 444813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 445813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, 446813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 447813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 448813870fd9588de101f68728507cff726d7513695Brian Paul }, 449813870fd9588de101f68728507cff726d7513695Brian Paul { 450813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA8, 451bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA8", 452813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 453813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 454813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 455813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 456813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 457813870fd9588de101f68728507cff726d7513695Brian Paul }, 458813870fd9588de101f68728507cff726d7513695Brian Paul { 459813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SARGB8, 460bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SARGB8", 461813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 462813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 463813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 464813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 465813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 466813870fd9588de101f68728507cff726d7513695Brian Paul }, 467813870fd9588de101f68728507cff726d7513695Brian Paul { 468813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SL8, 469bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SL8", 47071cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul GL_LUMINANCE, 471813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 47271cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 0, 0, 0, 0, 473813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 47471cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 1, 1, 1 475813870fd9588de101f68728507cff726d7513695Brian Paul }, 476813870fd9588de101f68728507cff726d7513695Brian Paul { 477813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SLA8, 478bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SLA8", 479813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 480813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 481813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, 482813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 483813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 484813870fd9588de101f68728507cff726d7513695Brian Paul }, 485813870fd9588de101f68728507cff726d7513695Brian Paul { 486813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB_DXT1, /* Name */ 487bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB_DXT1", /* StrName */ 488813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 489813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 490813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 491813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 492813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 493813870fd9588de101f68728507cff726d7513695Brian Paul }, 494813870fd9588de101f68728507cff726d7513695Brian Paul { 495813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT1, 496bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT1", 497813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 498813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 499813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 500813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 501813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 502813870fd9588de101f68728507cff726d7513695Brian Paul }, 503813870fd9588de101f68728507cff726d7513695Brian Paul { 504813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT3, 505bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT3", 506813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 507813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 508813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 509813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 510813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 511813870fd9588de101f68728507cff726d7513695Brian Paul }, 512813870fd9588de101f68728507cff726d7513695Brian Paul { 513813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT5, 514bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT5", 515813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 516813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 517813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 518813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 519813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 520813870fd9588de101f68728507cff726d7513695Brian Paul }, 521813870fd9588de101f68728507cff726d7513695Brian Paul 522813870fd9588de101f68728507cff726d7513695Brian Paul { 523813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FXT1, 524bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FXT1", 525813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 526813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 527c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 0, /* approx Red/Green/BlueBits */ 528813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 529813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 530813870fd9588de101f68728507cff726d7513695Brian Paul }, 531813870fd9588de101f68728507cff726d7513695Brian Paul { 532813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FXT1, 533bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FXT1", 534813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 535813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 536c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 1, /* approx Red/Green/Blue/AlphaBits */ 537813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 538813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 539813870fd9588de101f68728507cff726d7513695Brian Paul }, 540813870fd9588de101f68728507cff726d7513695Brian Paul 541813870fd9588de101f68728507cff726d7513695Brian Paul { 542813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_DXT1, /* Name */ 543bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_DXT1", /* StrName */ 544813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 545813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 546813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 547813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 548813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 549813870fd9588de101f68728507cff726d7513695Brian Paul }, 550813870fd9588de101f68728507cff726d7513695Brian Paul { 551813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT1, 552bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT1", 553813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 554813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 555813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 556813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 557813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 558813870fd9588de101f68728507cff726d7513695Brian Paul }, 559813870fd9588de101f68728507cff726d7513695Brian Paul { 560813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT3, 561bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT3", 562813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 563813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 564813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 565813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 566813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 567813870fd9588de101f68728507cff726d7513695Brian Paul }, 568813870fd9588de101f68728507cff726d7513695Brian Paul { 569813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT5, 570bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT5", 571813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 572813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 573813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 574813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 575813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 576813870fd9588de101f68728507cff726d7513695Brian Paul }, 577813870fd9588de101f68728507cff726d7513695Brian Paul { 578813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT32, 579bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT32", 580813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 581813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 582813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 32, 583813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 584813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 16 585813870fd9588de101f68728507cff726d7513695Brian Paul }, 586813870fd9588de101f68728507cff726d7513695Brian Paul { 587813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT16, 588bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT16", 589813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 590813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 591813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 16, 592813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 593813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 594813870fd9588de101f68728507cff726d7513695Brian Paul }, 595813870fd9588de101f68728507cff726d7513695Brian Paul { 596813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT32, 597bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT32", 598813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 599813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 600813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 0, 601813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 602813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 12 603813870fd9588de101f68728507cff726d7513695Brian Paul }, 604813870fd9588de101f68728507cff726d7513695Brian Paul { 605813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT16, 606bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT16", 607813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 608813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 609813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 0, 610813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 611813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 6 612813870fd9588de101f68728507cff726d7513695Brian Paul }, 613813870fd9588de101f68728507cff726d7513695Brian Paul { 614813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT32, 615bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT32", 616813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 617813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 618813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 619813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 620813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 621813870fd9588de101f68728507cff726d7513695Brian Paul }, 622813870fd9588de101f68728507cff726d7513695Brian Paul { 623813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT16, 624bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT16", 625813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 626813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 627813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 628813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 629813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 630813870fd9588de101f68728507cff726d7513695Brian Paul }, 631813870fd9588de101f68728507cff726d7513695Brian Paul { 632813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT32, 633bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT32", 634813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 635813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 636813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 637813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 638813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 639813870fd9588de101f68728507cff726d7513695Brian Paul }, 640813870fd9588de101f68728507cff726d7513695Brian Paul { 641813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT16, 642bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT16", 643813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 644813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 645813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 646813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 647813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 648813870fd9588de101f68728507cff726d7513695Brian Paul }, 649813870fd9588de101f68728507cff726d7513695Brian Paul { 650813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, 651bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32", 652813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 653813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 654813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 655813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 656813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 657813870fd9588de101f68728507cff726d7513695Brian Paul }, 658813870fd9588de101f68728507cff726d7513695Brian Paul { 659813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, 660bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16", 661813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 662813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 663813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 664813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 665813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 666813870fd9588de101f68728507cff726d7513695Brian Paul }, 667813870fd9588de101f68728507cff726d7513695Brian Paul { 668813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT32, 669bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT32", 670813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 671813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 672813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 673813870fd9588de101f68728507cff726d7513695Brian Paul 0, 32, 0, 0, 0, 674813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 675813870fd9588de101f68728507cff726d7513695Brian Paul }, 676813870fd9588de101f68728507cff726d7513695Brian Paul { 677813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT16, 678bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT16", 679813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 680813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 681813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 682813870fd9588de101f68728507cff726d7513695Brian Paul 0, 16, 0, 0, 0, 683813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 684813870fd9588de101f68728507cff726d7513695Brian Paul }, 685abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 686abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized signed int formats */ 687abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 688abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT8, 689abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT8", 690abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 691abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 692abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 693abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 694abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 695abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 696abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 697abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT16, 698abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT16", 699abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 700abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 701abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 702abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 703abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 704abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 705abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 706abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT32, 707abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT32", 708abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 709abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 710abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 711abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 712abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 713abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 714abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 715abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized unsigned int formats */ 716abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 717abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT8, 718abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT8", 719abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 720abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 721abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 722abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 723abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 724abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 725abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 726abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT16, 727abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT16", 728abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 729abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 730abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 731abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 732abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 733abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 734abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 735abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT32, 736abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT32", 737abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 738abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 739abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 740abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 741abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 742abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 743abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 744abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 745813870fd9588de101f68728507cff726d7513695Brian Paul { 746813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_DUDV8, 747bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_DUDV8", 748813870fd9588de101f68728507cff726d7513695Brian Paul GL_DUDV_ATI, 749813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 750813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 751813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 752813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 753813870fd9588de101f68728507cff726d7513695Brian Paul }, 75484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 75584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 8 bits / channel */ 75684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 75784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R8, /* Name */ 75884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R8", /* StrName */ 75984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, /* BaseFormat */ 76084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, /* DataType */ 76184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 76284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 76384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 76484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 76584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 76684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RG88, 76784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RG88", 76884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 76984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 77084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 0, 0, 77184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 77284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 77384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 77484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 77584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBX8888, 77684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGBX8888", 77784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 77884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 77984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 8, 0, 78084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 78184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 /* 4 bpp, but no alpha */ 78284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 783813870fd9588de101f68728507cff726d7513695Brian Paul { 784813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888, 785bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888", 786813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 787813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 788813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 789813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 790813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 791813870fd9588de101f68728507cff726d7513695Brian Paul }, 792813870fd9588de101f68728507cff726d7513695Brian Paul { 793813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888_REV, 794bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888_REV", 795813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 796813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 797813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 798813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 799813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 800813870fd9588de101f68728507cff726d7513695Brian Paul }, 80184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 80284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 16 bits / channel */ 80384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 80484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R_16, 80584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R_16", 80684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 80784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 80884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 0, 0, 0, 80984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 81084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 81184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 81284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 81384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RG_16, 81484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RG_16", 81584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 81684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 81784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 0, 0, 81884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 81984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 82084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 82184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 82284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGB_16, 82384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGB_16", 82484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 82584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 82684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 16, 0, 82784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 82884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 6 82984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 830c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul { 831c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul MESA_FORMAT_SIGNED_RGBA_16, 832bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA_16", 833c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_RGBA, 834c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_SIGNED_NORMALIZED, 835c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 16, 16, 16, 16, 836c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 0, 0, 0, 0, 0, 837c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 1, 1, 8 83817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul }, 83917e96718946486ef77927fcf3bb299d8bff32b98Brian Paul { 84017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul MESA_FORMAT_RGBA_16, 84117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul "MESA_FORMAT_RGBA_16", 84217e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_RGBA, 84317e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_UNSIGNED_NORMALIZED, 84417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 16, 16, 16, 16, 84517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 0, 0, 0, 0, 0, 84617e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 1, 1, 8 847c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul } 848813870fd9588de101f68728507cff726d7513695Brian Paul}; 849813870fd9588de101f68728507cff726d7513695Brian Paul 850813870fd9588de101f68728507cff726d7513695Brian Paul 851813870fd9588de101f68728507cff726d7513695Brian Paul 852813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info * 853813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format) 854813870fd9588de101f68728507cff726d7513695Brian Paul{ 855813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = &format_info[format]; 856813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == format); 857813870fd9588de101f68728507cff726d7513695Brian Paul return info; 858813870fd9588de101f68728507cff726d7513695Brian Paul} 859813870fd9588de101f68728507cff726d7513695Brian Paul 860813870fd9588de101f68728507cff726d7513695Brian Paul 861bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */ 862bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char * 863bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format) 864bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{ 865bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 866bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul ASSERT(info->BytesPerBlock); 867bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul return info->StrName; 868bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul} 869bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 870bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 871bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 872eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 873eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format. 874eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel). But for compressed formats 875eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc. 876eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 877813870fd9588de101f68728507cff726d7513695Brian PaulGLuint 878813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format) 879813870fd9588de101f68728507cff726d7513695Brian Paul{ 880813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 881813870fd9588de101f68728507cff726d7513695Brian Paul ASSERT(info->BytesPerBlock); 882813870fd9588de101f68728507cff726d7513695Brian Paul return info->BytesPerBlock; 883813870fd9588de101f68728507cff726d7513695Brian Paul} 884813870fd9588de101f68728507cff726d7513695Brian Paul 885813870fd9588de101f68728507cff726d7513695Brian Paul 886eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 887eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format. 888eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format one of MESA_FORMAT_x 889eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc. 890eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 8915978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint 8925978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname) 8935978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 8945978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 8955978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 8965978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul switch (pname) { 897edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RED_BITS: 8985978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_RED_SIZE: 899edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_RED_SIZE_EXT: 900edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: 9015978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->RedBits; 902edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_GREEN_BITS: 9035978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_GREEN_SIZE: 904edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_GREEN_SIZE_EXT: 905edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 9065978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->GreenBits; 907edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_BLUE_BITS: 9085978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_BLUE_SIZE: 909edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_BLUE_SIZE_EXT: 910edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 9115978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->BlueBits; 912edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_ALPHA_BITS: 9135978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_ALPHA_SIZE: 914edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_ALPHA_SIZE_EXT: 915edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 9165978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->AlphaBits; 9175978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INTENSITY_SIZE: 9185978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IntensityBits; 9195978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_LUMINANCE_SIZE: 9205978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->LuminanceBits; 921edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_INDEX_BITS: 9225978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INDEX_SIZE_EXT: 9235978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IndexBits; 924edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_DEPTH_BITS: 9255978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_DEPTH_SIZE_ARB: 926edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_DEPTH_SIZE_EXT: 927edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 9285978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DepthBits; 929edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_STENCIL_BITS: 9305978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_STENCIL_SIZE_EXT: 931edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_STENCIL_SIZE_EXT: 932edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 9335978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->StencilBits; 9345978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul default: 9355978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()"); 9365978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return 0; 9375978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul } 9385978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 9395978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 9405978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 941eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 942eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation) 943eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format. 944eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of: 945eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1] 946eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_SIGNED_NORMALIZED = signed int representing [-1, 1] 947eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_INT = an ordinary unsigned integer 948eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_FLOAT = an ordinary float 949eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 9505978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum 9515978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format) 9525978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 9535978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 9545978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DataType; 9555978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 9565978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 9575978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 958eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 959eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the basic format for the given type. The result will be 960eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, 961eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, GL_DEPTH_COMPONENT, 962eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 963eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 964813870fd9588de101f68728507cff726d7513695Brian PaulGLenum 965813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format) 966813870fd9588de101f68728507cff726d7513695Brian Paul{ 967813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 968813870fd9588de101f68728507cff726d7513695Brian Paul return info->BaseFormat; 969813870fd9588de101f68728507cff726d7513695Brian Paul} 970813870fd9588de101f68728507cff726d7513695Brian Paul 971813870fd9588de101f68728507cff726d7513695Brian Paul 9727b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/** 9737b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format. Normally 9747b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1. But compressed formats will have block sizes 9757b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc. 9767b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw returns block width in pixels 9777b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh returns block height in pixels 9787b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */ 9797b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid 9807b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh) 9817b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{ 9827b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 9837b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bw = info->BlockWidth; 9847b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bh = info->BlockHeight; 9857b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul} 9867b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 9877b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 988eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */ 989813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean 990813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format) 991813870fd9588de101f68728507cff726d7513695Brian Paul{ 992813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 993813870fd9588de101f68728507cff726d7513695Brian Paul return info->BlockWidth > 1 || info->BlockHeight > 1; 994813870fd9588de101f68728507cff726d7513695Brian Paul} 995813870fd9588de101f68728507cff726d7513695Brian Paul 996813870fd9588de101f68728507cff726d7513695Brian Paul 997813870fd9588de101f68728507cff726d7513695Brian Paul/** 998e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler * Determine if the given format represents a packed depth/stencil buffer. 999e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler */ 1000e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick BowlerGLboolean 1001e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format) 1002e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler{ 1003f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler const struct gl_format_info *info = _mesa_get_format_info(format); 1004e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1005f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler return info->BaseFormat == GL_DEPTH_STENCIL; 1006e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler} 1007e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1008e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1009e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler/** 1010f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format. 1011f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB 1012f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */ 1013f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum 1014f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format) 1015f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{ 1016f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul /* XXX this info should be encoded in gl_format_info */ 1017f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul switch (format) { 1018f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB8: 1019f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA8: 1020f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SARGB8: 1021f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SL8: 1022f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SLA8: 1023f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB_DXT1: 1024f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT1: 1025f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT3: 1026f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT5: 1027f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_SRGB; 1028f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul default: 1029f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_LINEAR; 1030f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul } 1031f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul} 1032f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 1033f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 1034f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/** 10351c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size 10361c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format. 10371c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */ 10381c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint 10391c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width, 10401c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul GLsizei height, GLsizei depth) 10411c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{ 10421c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1043040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 10441c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 10451c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* compressed format */ 10461c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint bw = info->BlockWidth, bh = info->BlockHeight; 10471c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint wblocks = (width + bw - 1) / bw; 10481c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint hblocks = (height + bh - 1) / bh; 1049040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint sz = wblocks * hblocks * info->BytesPerBlock; 10501c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 10511c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 10521c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul else { 10531c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* non-compressed */ 10541c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint sz = width * height * depth * info->BytesPerBlock; 10551c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 10561c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 10571c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul} 10581c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 10591c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 10601c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 1061040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint 1062040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width) 1063040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{ 1064040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1065040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 1066040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 1067040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* compressed format */ 1068040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint bw = info->BlockWidth; 1069040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint wblocks = (width + bw - 1) / bw; 1070040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = wblocks * info->BytesPerBlock; 1071040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1072040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1073040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul else { 1074040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = width * info->BytesPerBlock; 1075040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1076040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1077040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul} 1078040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 1079040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 10801c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 10811c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/** 1082813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table. 1083813870fd9588de101f68728507cff726d7513695Brian Paul */ 1084813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1085813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void) 1086813870fd9588de101f68728507cff726d7513695Brian Paul{ 1087813870fd9588de101f68728507cff726d7513695Brian Paul GLuint i; 1088813870fd9588de101f68728507cff726d7513695Brian Paul 1089813870fd9588de101f68728507cff726d7513695Brian Paul assert(Elements(format_info) == MESA_FORMAT_COUNT); 1090813870fd9588de101f68728507cff726d7513695Brian Paul 1091813870fd9588de101f68728507cff726d7513695Brian Paul for (i = 0; i < MESA_FORMAT_COUNT; i++) { 1092813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(i); 1093813870fd9588de101f68728507cff726d7513695Brian Paul assert(info); 1094813870fd9588de101f68728507cff726d7513695Brian Paul 1095813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == i); 1096813870fd9588de101f68728507cff726d7513695Brian Paul 1097e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul if (info->Name == MESA_FORMAT_NONE) 1098e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul continue; 1099e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 1100813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BlockWidth == 1 && info->BlockHeight == 1) { 1101813870fd9588de101f68728507cff726d7513695Brian Paul if (info->RedBits > 0) { 1102813870fd9588de101f68728507cff726d7513695Brian Paul GLuint t = info->RedBits + info->GreenBits 1103813870fd9588de101f68728507cff726d7513695Brian Paul + info->BlueBits + info->AlphaBits; 1104813870fd9588de101f68728507cff726d7513695Brian Paul assert(t / 8 == info->BytesPerBlock); 11056e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee (void) t; 1106813870fd9588de101f68728507cff726d7513695Brian Paul } 1107813870fd9588de101f68728507cff726d7513695Brian Paul } 1108813870fd9588de101f68728507cff726d7513695Brian Paul 1109813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->DataType == GL_UNSIGNED_NORMALIZED || 1110813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_SIGNED_NORMALIZED || 1111813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_UNSIGNED_INT || 1112813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_FLOAT); 1113813870fd9588de101f68728507cff726d7513695Brian Paul 1114813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BaseFormat == GL_RGB) { 1115813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1116813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1117813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1118813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1119813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1120813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1121813870fd9588de101f68728507cff726d7513695Brian Paul } 1122813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_RGBA) { 1123813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1124813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1125813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1126813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits > 0); 1127813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1128813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1129813870fd9588de101f68728507cff726d7513695Brian Paul } 11305d1387b2da3626326410804026f8b92f1a121fdcIan Romanick else if (info->BaseFormat == GL_RG) { 11315d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->RedBits > 0); 11325d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->GreenBits > 0); 11335d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->BlueBits == 0); 11345d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->AlphaBits == 0); 11355d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->LuminanceBits == 0); 11365d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->IntensityBits == 0); 11375d1387b2da3626326410804026f8b92f1a121fdcIan Romanick } 11385d1387b2da3626326410804026f8b92f1a121fdcIan Romanick else if (info->BaseFormat == GL_RED) { 11395d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->RedBits > 0); 11405d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->GreenBits == 0); 11415d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->BlueBits == 0); 11425d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->AlphaBits == 0); 11435d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->LuminanceBits == 0); 11445d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->IntensityBits == 0); 11455d1387b2da3626326410804026f8b92f1a121fdcIan Romanick } 1146813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_LUMINANCE) { 1147813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1148813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1149813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1150813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1151813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits > 0); 1152813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1153813870fd9588de101f68728507cff726d7513695Brian Paul } 1154813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_INTENSITY) { 1155813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1156813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1157813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1158813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1159813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1160813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits > 0); 1161813870fd9588de101f68728507cff726d7513695Brian Paul } 1162813870fd9588de101f68728507cff726d7513695Brian Paul 1163813870fd9588de101f68728507cff726d7513695Brian Paul } 1164813870fd9588de101f68728507cff726d7513695Brian Paul} 1165813870fd9588de101f68728507cff726d7513695Brian Paul 1166813870fd9588de101f68728507cff726d7513695Brian Paul 1167019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1168813870fd9588de101f68728507cff726d7513695Brian Paul/** 1169019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format. 1170019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code. 1171813870fd9588de101f68728507cff726d7513695Brian Paul */ 1172813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1173019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format, 1174019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul GLenum *datatype, GLuint *comps) 1175813870fd9588de101f68728507cff726d7513695Brian Paul{ 1176019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul switch (format) { 1177019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888: 1178019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888_REV: 1179019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888: 1180019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888_REV: 118174d61d03b54d72217d463c248468cdcd09320efcBrian Paul case MESA_FORMAT_XRGB8888: 1182019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1183019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1184019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1185019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB888: 1186019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_BGR888: 1187019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1188019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1189019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1190019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565: 1191019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565_REV: 1192019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_5_6_5; 1193019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1194019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1195019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1196019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444: 1197019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444_REV: 1198019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_4_4_4_4; 1199019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1200019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1201019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1202019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555: 1203019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555_REV: 1204019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV; 1205019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1206019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1207019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1208019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88: 1209019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88_REV: 12105d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG88: 12115d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG88_REV: 1212019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1213019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1214019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1215eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1216eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616: 1217eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616_REV: 12185d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG1616: 12195d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG1616_REV: 1220eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *datatype = GL_UNSIGNED_SHORT; 1221eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *comps = 2; 1222eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick return; 1223eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 12245d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_R16: 12255d1387b2da3626326410804026f8b92f1a121fdcIan Romanick *datatype = GL_UNSIGNED_SHORT; 12265d1387b2da3626326410804026f8b92f1a121fdcIan Romanick *comps = 1; 12275d1387b2da3626326410804026f8b92f1a121fdcIan Romanick return; 12285d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1229019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB332: 1230019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE_3_3_2; 1231019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1232019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1233019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1234019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_A8: 1235019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_L8: 1236019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_I8: 1237019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_CI8: 12385d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_R8: 1239813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1240813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1241019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1242019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1243019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR: 1244019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR_REV: 1245019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT; 1246813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1247019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1248019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1249019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z24_S8: 1250019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1251019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1252019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1253019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1254019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_S8_Z24: 1255019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1256019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1257019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1258019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1259019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z16: 1260813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_SHORT; 1261019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1262019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1263019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1264e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul case MESA_FORMAT_X8_Z24: 1265e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *datatype = GL_UNSIGNED_INT; 1266e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *comps = 1; 1267e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul return; 1268e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1269c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca case MESA_FORMAT_Z24_X8: 1270c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *datatype = GL_UNSIGNED_INT; 1271c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *comps = 1; 1272c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca return; 1273c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1274019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z32: 1275019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1276019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1277019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1278019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1279019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_DUDV8: 1280019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_BYTE; 1281813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1282019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1283019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1284019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888: 1285019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888_REV: 1286813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_BYTE; 1287019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1288019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1289880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul 1290880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_R_16: 1291880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1292880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 1; 1293880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1294880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RG_16: 1295880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1296880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 2; 1297880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1298880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RGB_16: 1299880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1300880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 3; 1301880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1302c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul case MESA_FORMAT_SIGNED_RGBA_16: 1303c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *datatype = GL_SHORT; 1304c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *comps = 4; 1305c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul return; 1306019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1307019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1308019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB8: 1309019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1310019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1311019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1312019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA8: 1313019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SARGB8: 1314019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1315019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1316019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1317019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SL8: 1318019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1319813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1320019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1321019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SLA8: 1322019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1323019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1324019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1325019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1326019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1327019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1 1328019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FXT1: 1329019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FXT1: 1330019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1331019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc 1332019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_DXT1: 1333019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT1: 1334019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT3: 1335019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT5: 1336019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1337019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB_DXT1: 1338019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT1: 1339019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT3: 1340019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT5: 1341019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1342019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul /* XXX generate error instead? */ 1343813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1344019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 0; 1345019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1346019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1347019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1348019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT32: 1349019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1350019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1351019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1352019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT16: 1353019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1354019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1355019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1356019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT32: 1357019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1358019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1359019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1360019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT16: 1361019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1362019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1363019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1364019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: 1365019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1366019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1367019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1368019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: 1369019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1370019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1371019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1372019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT32: 1373019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT32: 1374019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT32: 1375019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1376019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1377019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1378019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT16: 1379019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT16: 1380019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT16: 1381019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1382019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1383019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1384019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1385abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT8: 1386abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_BYTE; 1387abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1388abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1389abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT16: 1390abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_SHORT; 1391abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1392abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1393abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT32: 1394abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_INT; 1395abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1396abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1397abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1398abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 1399abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized unsigned integer formats. 1400abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 1401abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT8: 1402abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_BYTE; 1403abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1404abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1405abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT16: 1406abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_SHORT; 1407abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1408abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1409abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT32: 1410abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_INT; 1411abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1412abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1413abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1414abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1415019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul default: 1416019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul _mesa_problem(NULL, "bad format in _mesa_format_to_type_and_comps"); 1417019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = 0; 1418019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1419813870fd9588de101f68728507cff726d7513695Brian Paul } 1420813870fd9588de101f68728507cff726d7513695Brian Paul} 1421