formats.c revision 0ecbb0ab7472fe5cb33be13a8307e16f875254e5
1813870fd9588de101f68728507cff726d7513695Brian Paul/* 2813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa 3-D graphics library 3813870fd9588de101f68728507cff726d7513695Brian Paul * Version: 7.7 4813870fd9588de101f68728507cff726d7513695Brian Paul * 5813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 6813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (c) 2008-2009 VMware, Inc. 7813870fd9588de101f68728507cff726d7513695Brian Paul * 8813870fd9588de101f68728507cff726d7513695Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 9813870fd9588de101f68728507cff726d7513695Brian Paul * copy of this software and associated documentation files (the "Software"), 10813870fd9588de101f68728507cff726d7513695Brian Paul * to deal in the Software without restriction, including without limitation 11813870fd9588de101f68728507cff726d7513695Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12813870fd9588de101f68728507cff726d7513695Brian Paul * and/or sell copies of the Software, and to permit persons to whom the 13813870fd9588de101f68728507cff726d7513695Brian Paul * Software is furnished to do so, subject to the following conditions: 14813870fd9588de101f68728507cff726d7513695Brian Paul * 15813870fd9588de101f68728507cff726d7513695Brian Paul * The above copyright notice and this permission notice shall be included 16813870fd9588de101f68728507cff726d7513695Brian Paul * in all copies or substantial portions of the Software. 17813870fd9588de101f68728507cff726d7513695Brian Paul * 18813870fd9588de101f68728507cff726d7513695Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19813870fd9588de101f68728507cff726d7513695Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20813870fd9588de101f68728507cff726d7513695Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21813870fd9588de101f68728507cff726d7513695Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 22813870fd9588de101f68728507cff726d7513695Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23813870fd9588de101f68728507cff726d7513695Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24813870fd9588de101f68728507cff726d7513695Brian Paul */ 25813870fd9588de101f68728507cff726d7513695Brian Paul 26813870fd9588de101f68728507cff726d7513695Brian Paul 27c28d78f8324cfc17936af63c258a1cc55d590d60Brian Paul#include "imports.h" 28813870fd9588de101f68728507cff726d7513695Brian Paul#include "formats.h" 293a6f9d0f47861b1c618366d679ad8ddd9a06b323Brian Paul#include "mfeatures.h" 30813870fd9588de101f68728507cff726d7513695Brian Paul 31813870fd9588de101f68728507cff726d7513695Brian Paul 32813870fd9588de101f68728507cff726d7513695Brian Paul/** 33be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats. 34be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 35be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info 36be0765cd6ec47cf068775197f312a1123e044566Brian Paul{ 37be0765cd6ec47cf068775197f312a1123e044566Brian Paul gl_format Name; 38be0765cd6ec47cf068775197f312a1123e044566Brian Paul 39bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul /** text name for debugging */ 40bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const char *StrName; 41bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 42be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 432d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * Base format is one of GL_RED, GL_RG, GL_RGB, GL_RGBA, GL_ALPHA, 442d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA, 452d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * GL_COLOR_INDEX, GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, 462d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt * GL_DEPTH_STENCIL, GL_DUDV_ATI. 47be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 48be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum BaseFormat; 49be0765cd6ec47cf068775197f312a1123e044566Brian Paul 50be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 51be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Logical data type: one of GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALED, 52abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * GL_UNSIGNED_INT, GL_INT, GL_FLOAT. 53be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 54be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum DataType; 55be0765cd6ec47cf068775197f312a1123e044566Brian Paul 56be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte RedBits; 57be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte GreenBits; 58be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlueBits; 59be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte AlphaBits; 60be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte LuminanceBits; 61be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IntensityBits; 62be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IndexBits; 63be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte DepthBits; 64be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte StencilBits; 65be0765cd6ec47cf068775197f312a1123e044566Brian Paul 66be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 67be0765cd6ec47cf068775197f312a1123e044566Brian Paul * To describe compressed formats. If not compressed, Width=Height=1. 68be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 69be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlockWidth, BlockHeight; 70be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BytesPerBlock; 71be0765cd6ec47cf068775197f312a1123e044566Brian Paul}; 72be0765cd6ec47cf068775197f312a1123e044566Brian Paul 73be0765cd6ec47cf068775197f312a1123e044566Brian Paul 74be0765cd6ec47cf068775197f312a1123e044566Brian Paul/** 75813870fd9588de101f68728507cff726d7513695Brian Paul * Info about each format. 76813870fd9588de101f68728507cff726d7513695Brian Paul * These must be in the same order as the MESA_FORMAT_* enums so that 77813870fd9588de101f68728507cff726d7513695Brian Paul * we can do lookups without searching. 78813870fd9588de101f68728507cff726d7513695Brian Paul */ 79813870fd9588de101f68728507cff726d7513695Brian Paulstatic struct gl_format_info format_info[MESA_FORMAT_COUNT] = 80813870fd9588de101f68728507cff726d7513695Brian Paul{ 81813870fd9588de101f68728507cff726d7513695Brian Paul { 82e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul MESA_FORMAT_NONE, /* Name */ 83bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_NONE", /* StrName */ 84e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* BaseFormat */ 85e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* DataType */ 86e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 87e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 88e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0 /* BlockWidth/Height,Bytes */ 89e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul }, 90e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul { 91813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888, /* Name */ 92bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888", /* StrName */ 93813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 94813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 95813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 96813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 97813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 98813870fd9588de101f68728507cff726d7513695Brian Paul }, 99813870fd9588de101f68728507cff726d7513695Brian Paul { 100813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888_REV, /* Name */ 101bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888_REV", /* StrName */ 102813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 103813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 104813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 105813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 106813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 107813870fd9588de101f68728507cff726d7513695Brian Paul }, 108813870fd9588de101f68728507cff726d7513695Brian Paul { 109813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888, /* Name */ 110bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888", /* StrName */ 111813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 112813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 113813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 114813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 115813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 116813870fd9588de101f68728507cff726d7513695Brian Paul }, 117813870fd9588de101f68728507cff726d7513695Brian Paul { 118813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888_REV, /* Name */ 119bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888_REV", /* StrName */ 120813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 121813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 122813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 123813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 124813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 125813870fd9588de101f68728507cff726d7513695Brian Paul }, 126813870fd9588de101f68728507cff726d7513695Brian Paul { 12774d61d03b54d72217d463c248468cdcd09320efcBrian Paul MESA_FORMAT_XRGB8888, /* Name */ 128bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_XRGB8888", /* StrName */ 12974d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_RGB, /* BaseFormat */ 13074d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 13174d61d03b54d72217d463c248468cdcd09320efcBrian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 13274d61d03b54d72217d463c248468cdcd09320efcBrian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 13374d61d03b54d72217d463c248468cdcd09320efcBrian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 13474d61d03b54d72217d463c248468cdcd09320efcBrian Paul }, 13574d61d03b54d72217d463c248468cdcd09320efcBrian Paul { 1362d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer MESA_FORMAT_XRGB8888_REV, /* Name */ 1372d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer "MESA_FORMAT_XRGB8888_REV", /* StrName */ 1382d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_RGB, /* BaseFormat */ 1392d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_UNSIGNED_NORMALIZED, /* DataType */ 1402d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 1412d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 1422d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 1, 1, 4 /* BlockWidth/Height,Bytes */ 1432d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer }, 1442d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer { 145813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB888, /* Name */ 146bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB888", /* StrName */ 147813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 148813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 149813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 150813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 151813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 152813870fd9588de101f68728507cff726d7513695Brian Paul }, 153813870fd9588de101f68728507cff726d7513695Brian Paul { 154813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_BGR888, /* Name */ 155bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_BGR888", /* StrName */ 156813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 157813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 158813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 159813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 160813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 161813870fd9588de101f68728507cff726d7513695Brian Paul }, 162813870fd9588de101f68728507cff726d7513695Brian Paul { 163813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565, /* Name */ 164bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565", /* StrName */ 165813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 166813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 167813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 168813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 169813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 170813870fd9588de101f68728507cff726d7513695Brian Paul }, 171813870fd9588de101f68728507cff726d7513695Brian Paul { 172813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565_REV, /* Name */ 173bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565_REV", /* StrName */ 174813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 175813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 176813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 177813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 178813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 179813870fd9588de101f68728507cff726d7513695Brian Paul }, 180813870fd9588de101f68728507cff726d7513695Brian Paul { 181813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444, /* Name */ 182bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444", /* StrName */ 183813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 184813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 185813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 186813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 187813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 188813870fd9588de101f68728507cff726d7513695Brian Paul }, 189813870fd9588de101f68728507cff726d7513695Brian Paul { 190813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444_REV, /* Name */ 191bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444_REV", /* StrName */ 192813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 193813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 194813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 195813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 196813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 197813870fd9588de101f68728507cff726d7513695Brian Paul }, 198813870fd9588de101f68728507cff726d7513695Brian Paul { 199813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA5551, /* Name */ 200bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA5551", /* StrName */ 201813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 202813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 203813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 204813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 205813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 206813870fd9588de101f68728507cff726d7513695Brian Paul }, 207813870fd9588de101f68728507cff726d7513695Brian Paul { 208813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555, /* Name */ 209bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555", /* StrName */ 210813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 211813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 212813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 213813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 214813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 215813870fd9588de101f68728507cff726d7513695Brian Paul }, 216813870fd9588de101f68728507cff726d7513695Brian Paul { 217813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555_REV, /* Name */ 218bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555_REV", /* StrName */ 219813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 220813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 221813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 222813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 223813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 224813870fd9588de101f68728507cff726d7513695Brian Paul }, 225813870fd9588de101f68728507cff726d7513695Brian Paul { 226bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák MESA_FORMAT_AL44, /* Name */ 227bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák "MESA_FORMAT_AL44", /* StrName */ 228bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák GL_LUMINANCE_ALPHA, /* BaseFormat */ 229bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 230bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák 0, 0, 0, 4, /* Red/Green/Blue/AlphaBits */ 231bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák 4, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 232bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák 1, 1, 1 /* BlockWidth/Height,Bytes */ 233bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák }, 234bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák { 235813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88, /* Name */ 236bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88", /* StrName */ 237813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 238813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 239813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 240813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 241813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 242813870fd9588de101f68728507cff726d7513695Brian Paul }, 243813870fd9588de101f68728507cff726d7513695Brian Paul { 244813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88_REV, /* Name */ 245bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88_REV", /* StrName */ 246813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 247813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 248813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 249813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 250813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 251813870fd9588de101f68728507cff726d7513695Brian Paul }, 252813870fd9588de101f68728507cff726d7513695Brian Paul { 253eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616, /* Name */ 254eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616", /* StrName */ 255eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 256eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 257eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 258eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 259eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 260eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 261eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 262eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616_REV, /* Name */ 263eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616_REV", /* StrName */ 264eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 265eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 266eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 267eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 268eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 269eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 270eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 271813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB332, /* Name */ 272bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB332", /* StrName */ 273813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 274813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 275813870fd9588de101f68728507cff726d7513695Brian Paul 3, 3, 2, 0, /* Red/Green/Blue/AlphaBits */ 276813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 277813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 278813870fd9588de101f68728507cff726d7513695Brian Paul }, 279813870fd9588de101f68728507cff726d7513695Brian Paul { 280813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_A8, /* Name */ 281bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_A8", /* StrName */ 282813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, /* BaseFormat */ 283813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 284813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 285813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 286813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 287813870fd9588de101f68728507cff726d7513695Brian Paul }, 288813870fd9588de101f68728507cff726d7513695Brian Paul { 289eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák MESA_FORMAT_A16, /* Name */ 290eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák "MESA_FORMAT_A16", /* StrName */ 291eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák GL_ALPHA, /* BaseFormat */ 292eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 293eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 294eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 295eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák 1, 1, 2 /* BlockWidth/Height,Bytes */ 296eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák }, 297eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák { 298813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_L8, /* Name */ 299bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_L8", /* StrName */ 300813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE, /* BaseFormat */ 301813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 302813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 303813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 304813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 305813870fd9588de101f68728507cff726d7513695Brian Paul }, 306813870fd9588de101f68728507cff726d7513695Brian Paul { 307bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák MESA_FORMAT_L16, /* Name */ 308bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák "MESA_FORMAT_L16", /* StrName */ 309bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák GL_LUMINANCE, /* BaseFormat */ 310bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 311bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 312bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 313bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák 1, 1, 2 /* BlockWidth/Height,Bytes */ 314bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák }, 315bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák { 316813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_I8, /* Name */ 317bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_I8", /* StrName */ 318813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, /* BaseFormat */ 319813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 320813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 321813870fd9588de101f68728507cff726d7513695Brian Paul 0, 8, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 322813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 323813870fd9588de101f68728507cff726d7513695Brian Paul }, 324813870fd9588de101f68728507cff726d7513695Brian Paul { 325fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák MESA_FORMAT_I16, /* Name */ 326fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák "MESA_FORMAT_I16", /* StrName */ 327fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák GL_INTENSITY, /* BaseFormat */ 328fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák GL_UNSIGNED_NORMALIZED, /* DataType */ 329fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 330fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák 0, 16, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 331fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák 1, 1, 2 /* BlockWidth/Height,Bytes */ 332fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák }, 333fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák { 334813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_CI8, /* Name */ 335bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_CI8", /* StrName */ 336813870fd9588de101f68728507cff726d7513695Brian Paul GL_COLOR_INDEX, /* BaseFormat */ 337813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 338813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 339813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 8, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 340813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 341813870fd9588de101f68728507cff726d7513695Brian Paul }, 342813870fd9588de101f68728507cff726d7513695Brian Paul { 343813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR, /* Name */ 344bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR", /* StrName */ 345813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 346813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 347813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 348813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 349813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 350813870fd9588de101f68728507cff726d7513695Brian Paul }, 351813870fd9588de101f68728507cff726d7513695Brian Paul { 352813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR_REV, /* Name */ 353bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR_REV", /* StrName */ 354813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 355813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 356813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 357813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 358813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 359813870fd9588de101f68728507cff726d7513695Brian Paul }, 360813870fd9588de101f68728507cff726d7513695Brian Paul { 3615d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R8, 3625d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_R8", 3635d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RED, 3645d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3655d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 0, 0, 0, 3665d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3675d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 1 3685d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3695d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3705d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG88, 3715d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG88", 3725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3745d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 8, 0, 0, 3755d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3765d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3775d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3785d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3795d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG88_REV, 3805d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG88_REV", 3815d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 3825d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3835d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 8, 8, 0, 0, 3845d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3855d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3865d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3875d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3885d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_R16, 3895d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_R16", 3905d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RED, 3915d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 3925d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 0, 0, 0, 3935d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 3945d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 2 3955d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 3965d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 3975d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG1616, 3985d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG1616", 3995d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 4005d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 4015d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 16, 0, 0, 4025d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 4035d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 4 4045d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 4055d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 4065d1387b2da3626326410804026f8b92f1a121fdcIan Romanick MESA_FORMAT_RG1616_REV, 4075d1387b2da3626326410804026f8b92f1a121fdcIan Romanick "MESA_FORMAT_RG1616_REV", 4085d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_RG, 4095d1387b2da3626326410804026f8b92f1a121fdcIan Romanick GL_UNSIGNED_NORMALIZED, 4105d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 16, 16, 0, 0, 4115d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 0, 0, 0, 0, 0, 4125d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1, 1, 4 4135d1387b2da3626326410804026f8b92f1a121fdcIan Romanick }, 4145d1387b2da3626326410804026f8b92f1a121fdcIan Romanick { 415621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák MESA_FORMAT_ARGB2101010, 416621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák "MESA_FORMAT_ARGB2101010", 417621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák GL_RGBA, 418621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák GL_UNSIGNED_NORMALIZED, 419621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 10, 10, 10, 2, 420621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 0, 0, 0, 0, 0, 421621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 1, 1, 4 422621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák }, 423621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák { 424813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z24_S8, /* Name */ 425bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z24_S8", /* StrName */ 426813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 427813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 428813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 429813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 430813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 431813870fd9588de101f68728507cff726d7513695Brian Paul }, 432813870fd9588de101f68728507cff726d7513695Brian Paul { 433813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8_Z24, /* Name */ 434bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8_Z24", /* StrName */ 435813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 436813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 437813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 438813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 439813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 440813870fd9588de101f68728507cff726d7513695Brian Paul }, 441813870fd9588de101f68728507cff726d7513695Brian Paul { 442813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z16, /* Name */ 443bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z16", /* StrName */ 444813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 445813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 446813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 447813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 0, /* Lum/Int/Index/Depth/StencilBits */ 448813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 449813870fd9588de101f68728507cff726d7513695Brian Paul }, 450813870fd9588de101f68728507cff726d7513695Brian Paul { 451e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul MESA_FORMAT_X8_Z24, /* Name */ 452bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_X8_Z24", /* StrName */ 453e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 454e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_UNSIGNED_INT, /* DataType */ 455e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 456e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 457e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 458e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul }, 459e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul { 460c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca MESA_FORMAT_Z24_X8, /* Name */ 461c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca "MESA_FORMAT_Z24_X8", /* StrName */ 462c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_DEPTH_COMPONENT, /* BaseFormat */ 463c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_UNSIGNED_INT, /* DataType */ 464c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 465c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 466c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1, 1, 4 /* BlockWidth/Height,Bytes */ 467c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca }, 468c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca { 469813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z32, /* Name */ 470bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z32", /* StrName */ 471813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 472813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 473813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 474813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 0, /* Lum/Int/Index/Depth/StencilBits */ 475813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 476813870fd9588de101f68728507cff726d7513695Brian Paul }, 477813870fd9588de101f68728507cff726d7513695Brian Paul { 478813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8, /* Name */ 479bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8", /* StrName */ 480813870fd9588de101f68728507cff726d7513695Brian Paul GL_STENCIL_INDEX, /* BaseFormat */ 481813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 482813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 483813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 8, /* Lum/Int/Index/Depth/StencilBits */ 484813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 485813870fd9588de101f68728507cff726d7513695Brian Paul }, 486813870fd9588de101f68728507cff726d7513695Brian Paul { 487813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB8, 488bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB8", 489813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 490813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 491813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, 492813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 493813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 494813870fd9588de101f68728507cff726d7513695Brian Paul }, 495813870fd9588de101f68728507cff726d7513695Brian Paul { 496813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA8, 497bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA8", 498813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 499813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 500813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 501813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 502813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 503813870fd9588de101f68728507cff726d7513695Brian Paul }, 504813870fd9588de101f68728507cff726d7513695Brian Paul { 505813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SARGB8, 506bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SARGB8", 507813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 508813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 509813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 510813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 511813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 512813870fd9588de101f68728507cff726d7513695Brian Paul }, 513813870fd9588de101f68728507cff726d7513695Brian Paul { 514813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SL8, 515bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SL8", 51671cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul GL_LUMINANCE, 517813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 51871cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 0, 0, 0, 0, 519813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 52071cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 1, 1, 1 521813870fd9588de101f68728507cff726d7513695Brian Paul }, 522813870fd9588de101f68728507cff726d7513695Brian Paul { 523813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SLA8, 524bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SLA8", 525813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 526813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 527813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, 528813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 529813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 530813870fd9588de101f68728507cff726d7513695Brian Paul }, 531813870fd9588de101f68728507cff726d7513695Brian Paul { 532813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB_DXT1, /* Name */ 533bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB_DXT1", /* StrName */ 534813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 535813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 536813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 537813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 538813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 539813870fd9588de101f68728507cff726d7513695Brian Paul }, 540813870fd9588de101f68728507cff726d7513695Brian Paul { 541813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT1, 542bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT1", 543813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 544813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 545813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 546813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 547813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 548813870fd9588de101f68728507cff726d7513695Brian Paul }, 549813870fd9588de101f68728507cff726d7513695Brian Paul { 550813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT3, 551bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT3", 552813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 553813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 554813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 555813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 556813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 557813870fd9588de101f68728507cff726d7513695Brian Paul }, 558813870fd9588de101f68728507cff726d7513695Brian Paul { 559813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT5, 560bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT5", 561813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 562813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 563813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 564813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 565813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 566813870fd9588de101f68728507cff726d7513695Brian Paul }, 567813870fd9588de101f68728507cff726d7513695Brian Paul 568813870fd9588de101f68728507cff726d7513695Brian Paul { 569813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FXT1, 570bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FXT1", 571813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 572813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 573c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 0, /* approx Red/Green/BlueBits */ 574813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 575813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 576813870fd9588de101f68728507cff726d7513695Brian Paul }, 577813870fd9588de101f68728507cff726d7513695Brian Paul { 578813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FXT1, 579bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FXT1", 580813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 581813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 582c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 1, /* approx Red/Green/Blue/AlphaBits */ 583813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 584813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 585813870fd9588de101f68728507cff726d7513695Brian Paul }, 586813870fd9588de101f68728507cff726d7513695Brian Paul 587813870fd9588de101f68728507cff726d7513695Brian Paul { 588813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_DXT1, /* Name */ 589bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_DXT1", /* StrName */ 590813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 591813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 592813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 593813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 594813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 595813870fd9588de101f68728507cff726d7513695Brian Paul }, 596813870fd9588de101f68728507cff726d7513695Brian Paul { 597813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT1, 598bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT1", 599813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 600813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 601813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 602813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 603813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 604813870fd9588de101f68728507cff726d7513695Brian Paul }, 605813870fd9588de101f68728507cff726d7513695Brian Paul { 606813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT3, 607bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT3", 608813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 609813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 610813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 611813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 612813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 613813870fd9588de101f68728507cff726d7513695Brian Paul }, 614813870fd9588de101f68728507cff726d7513695Brian Paul { 615813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT5, 616bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT5", 617813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 618813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 619813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 620813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 621813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 622813870fd9588de101f68728507cff726d7513695Brian Paul }, 623813870fd9588de101f68728507cff726d7513695Brian Paul { 624813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT32, 625bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT32", 626813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 627813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 628813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 32, 629813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 630813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 16 631813870fd9588de101f68728507cff726d7513695Brian Paul }, 632813870fd9588de101f68728507cff726d7513695Brian Paul { 633813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT16, 634bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT16", 635813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 636813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 637813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 16, 638813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 639813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 640813870fd9588de101f68728507cff726d7513695Brian Paul }, 641813870fd9588de101f68728507cff726d7513695Brian Paul { 642813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT32, 643bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT32", 644813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 645813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 646813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 0, 647813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 648813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 12 649813870fd9588de101f68728507cff726d7513695Brian Paul }, 650813870fd9588de101f68728507cff726d7513695Brian Paul { 651813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT16, 652bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT16", 653813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 654813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 655813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 0, 656813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 657813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 6 658813870fd9588de101f68728507cff726d7513695Brian Paul }, 659813870fd9588de101f68728507cff726d7513695Brian Paul { 660813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT32, 661bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT32", 662813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 663813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 664813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 665813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 666813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 667813870fd9588de101f68728507cff726d7513695Brian Paul }, 668813870fd9588de101f68728507cff726d7513695Brian Paul { 669813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT16, 670bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT16", 671813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 672813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 673813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 674813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 675813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 676813870fd9588de101f68728507cff726d7513695Brian Paul }, 677813870fd9588de101f68728507cff726d7513695Brian Paul { 678813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT32, 679bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT32", 68019648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák GL_LUMINANCE, 681813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 682813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 683813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 684813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 685813870fd9588de101f68728507cff726d7513695Brian Paul }, 686813870fd9588de101f68728507cff726d7513695Brian Paul { 687813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT16, 688bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT16", 68919648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák GL_LUMINANCE, 690813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 691813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 692813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 693813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 694813870fd9588de101f68728507cff726d7513695Brian Paul }, 695813870fd9588de101f68728507cff726d7513695Brian Paul { 696813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, 697bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32", 698813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 699813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 700813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 701813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 702813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 703813870fd9588de101f68728507cff726d7513695Brian Paul }, 704813870fd9588de101f68728507cff726d7513695Brian Paul { 705813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, 706bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16", 707813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 708813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 709813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 710813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 711813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 712813870fd9588de101f68728507cff726d7513695Brian Paul }, 713813870fd9588de101f68728507cff726d7513695Brian Paul { 714813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT32, 715bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT32", 716813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 717813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 718813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 719813870fd9588de101f68728507cff726d7513695Brian Paul 0, 32, 0, 0, 0, 720813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 721813870fd9588de101f68728507cff726d7513695Brian Paul }, 722813870fd9588de101f68728507cff726d7513695Brian Paul { 723813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT16, 724bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT16", 725813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 726813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 727813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 728813870fd9588de101f68728507cff726d7513695Brian Paul 0, 16, 0, 0, 0, 729813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 730813870fd9588de101f68728507cff726d7513695Brian Paul }, 7310ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák { 7320ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_R_FLOAT32, 7330ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák "MESA_FORMAT_R_FLOAT32", 7340ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_RED, 7350ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_FLOAT, 7360ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 32, 0, 0, 0, 7370ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 0, 0, 0, 0, 0, 7380ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 1, 1, 4 7390ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák }, 7400ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák { 7410ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_R_FLOAT16, 7420ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák "MESA_FORMAT_R_FLOAT16", 7430ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_RED, 7440ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_FLOAT, 7450ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 16, 0, 0, 0, 7460ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 0, 0, 0, 0, 0, 7470ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 1, 1, 2 7480ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák }, 7490ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák { 7500ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_RG_FLOAT32, 7510ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák "MESA_FORMAT_RG_FLOAT32", 7520ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_RG, 7530ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_FLOAT, 7540ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 32, 32, 0, 0, 7550ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 0, 0, 0, 0, 0, 7560ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 1, 1, 8 7570ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák }, 7580ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák { 7590ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák MESA_FORMAT_RG_FLOAT16, 7600ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák "MESA_FORMAT_RG_FLOAT16", 7610ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_RG, 7620ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák GL_FLOAT, 7630ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 16, 16, 0, 0, 7640ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 0, 0, 0, 0, 0, 7650ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák 1, 1, 4 7660ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák }, 767abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 768abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized signed int formats */ 769abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 770abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT8, 771abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT8", 772abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 773abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 774abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 775abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 776abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 777abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 778abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 779abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT16, 780abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT16", 781abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 782abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 783abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 784abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 785abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 786abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 787abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 788abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_INT32, 789abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_INT32", 790abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 791abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_INT, 792abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 793abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 794abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 795abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 796abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 797abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /* unnormalized unsigned int formats */ 798abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 799abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT8, 800abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT8", 801abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 802abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 803abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 8, 8, 8, 8, 804abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 805abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 4 806abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 807abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 808abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT16, 809abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT16", 810abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 811abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 812abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 16, 16, 16, 16, 813abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 814abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 8 815abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 816abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul { 817abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul MESA_FORMAT_RGBA_UINT32, 818abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul "MESA_FORMAT_RGBA_UINT32", 819abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_RGBA, 820abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul GL_UNSIGNED_INT, 821abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 32, 32, 32, 32, 822abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 0, 0, 0, 0, 0, 823abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1, 1, 16 824abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul }, 825abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 826abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 827813870fd9588de101f68728507cff726d7513695Brian Paul { 828813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_DUDV8, 829bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_DUDV8", 830813870fd9588de101f68728507cff726d7513695Brian Paul GL_DUDV_ATI, 831813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 832813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 833813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 834813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 835813870fd9588de101f68728507cff726d7513695Brian Paul }, 83684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 83784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 8 bits / channel */ 83884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 83984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R8, /* Name */ 84084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R8", /* StrName */ 8410073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RED, /* BaseFormat */ 84284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, /* DataType */ 84384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 84484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 84584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 84684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 84784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 8480be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_RG88_REV, 8490be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_RG88_REV", 8500073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RG, 85184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 85284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 0, 0, 85384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 85484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 85584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 85684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 85784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBX8888, 85884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGBX8888", 8590073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RGB, 86084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 86184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 8, 0, 86284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 86384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 /* 4 bpp, but no alpha */ 86484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 865813870fd9588de101f68728507cff726d7513695Brian Paul { 866813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888, 867bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888", 868813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 869813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 870813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 871813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 872813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 873813870fd9588de101f68728507cff726d7513695Brian Paul }, 874813870fd9588de101f68728507cff726d7513695Brian Paul { 875813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888_REV, 876bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888_REV", 877813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 878813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 879813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 880813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 881813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 882813870fd9588de101f68728507cff726d7513695Brian Paul }, 88384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 88484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 16 bits / channel */ 88584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 8860be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_R16, 8870be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_R16", 8880073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RED, 88984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 89084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 0, 0, 0, 89184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 89284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 89384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 89484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 8950be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_GR1616, 8960be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_GR1616", 8970073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RG, 89884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 89984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 0, 0, 90084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 90184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 90284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 90384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 90484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGB_16, 90584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGB_16", 9060073f50cd47c48c706b4524364b9c0594804febfBrian Paul GL_RGB, 90784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 90884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 16, 0, 90984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 91084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 6 91184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 912c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul { 913c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul MESA_FORMAT_SIGNED_RGBA_16, 914bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA_16", 915c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_RGBA, 916c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_SIGNED_NORMALIZED, 917c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 16, 16, 16, 16, 918c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 0, 0, 0, 0, 0, 919c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 1, 1, 8 92017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul }, 92117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul { 92217e96718946486ef77927fcf3bb299d8bff32b98Brian Paul MESA_FORMAT_RGBA_16, 92317e96718946486ef77927fcf3bb299d8bff32b98Brian Paul "MESA_FORMAT_RGBA_16", 92417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_RGBA, 92517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_UNSIGNED_NORMALIZED, 92617e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 16, 16, 16, 16, 92717e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 0, 0, 0, 0, 0, 92817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 1, 1, 8 9298d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9308d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 9318d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_RED_RGTC1, 9328d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_RED_RGTC1", 9338d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RED, 9348d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_UNSIGNED_NORMALIZED, 9358d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 0, 0, 0, 9368d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9378d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 8 /* 8 bytes per 4x4 block */ 9388d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9398d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 9408d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_SIGNED_RED_RGTC1, 9418d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_SIGNED_RED_RGTC1", 9428d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RED, 9438d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_SIGNED_NORMALIZED, 9448d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 0, 0, 0, 9458d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9468d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 8 /* 8 bytes per 4x4 block */ 9478d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9488d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 9498d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_RG_RGTC2, 9508d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_RG_RGTC2", 9518d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RG, 9528d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_UNSIGNED_NORMALIZED, 9538d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 0, 0, 9548d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9558d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 16 /* 16 bytes per 4x4 block */ 9568d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9578d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie { 9588d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie MESA_FORMAT_SIGNED_RG_RGTC2, 9598d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie "MESA_FORMAT_SIGNED_RG_RGTC2", 9608d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_RG, 9618d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie GL_SIGNED_NORMALIZED, 9628d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 0, 0, 9638d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 0, 0, 0, 0, 0, 9648d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie 4, 4, 16 /* 16 bytes per 4x4 block */ 9658d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie }, 9667d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9677d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_L_LATC1, 9687d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_L_LATC1", 9697d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE, 9707d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_UNSIGNED_NORMALIZED, 9717d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 0, 9727d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 9737d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 8 /* 8 bytes per 4x4 block */ 9747d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 9757d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9767d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_SIGNED_L_LATC1, 9777d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_SIGNED_L_LATC1", 9787d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE, 9797d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_SIGNED_NORMALIZED, 9807d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 0, 9817d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 9827d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 8 /* 8 bytes per 4x4 block */ 9837d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 9847d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9857d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_LA_LATC2, 9867d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_LA_LATC2", 9877d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE_ALPHA, 9887d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_UNSIGNED_NORMALIZED, 9897d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 4, 9907d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 9917d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 16 /* 16 bytes per 4x4 block */ 9927d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 9937d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák { 9947d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák MESA_FORMAT_SIGNED_LA_LATC2, 9957d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák "MESA_FORMAT_SIGNED_LA_LATC2", 9967d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_LUMINANCE_ALPHA, 9977d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák GL_SIGNED_NORMALIZED, 9987d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 0, 0, 0, 4, 9997d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 0, 0, 0, 0, 10007d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák 4, 4, 16 /* 16 bytes per 4x4 block */ 10017d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák }, 10020be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 10030be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák /* Signed formats from EXT_texture_snorm that are not in GL3.1 */ 10040be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10050be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_A8, 10060be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_A8", 10070be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_ALPHA, 10080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 8, 10100be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 0, 10110be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 1 10120be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10140be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_L8, 10150be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_L8", 10160be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE, 10170be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10180be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 10190be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 8, 0, 0, 0, 0, 10200be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 1 10210be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10220be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10230be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_AL88, 10240be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_AL88", 10250be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE_ALPHA, 10260be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10270be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 8, 10280be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 8, 0, 0, 0, 0, 10290be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 10300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10310be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10320be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_I8, 10330be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_I8", 10340be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_INTENSITY, 10350be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 10370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 8, 0, 0, 0, 10380be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 1 10390be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10400be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10410be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_A16, 10420be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_A16", 10430be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_ALPHA, 10440be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10450be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 16, 10460be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 0, 10470be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 10480be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10490be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10500be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_L16, 10510be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_L16", 10520be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE, 10530be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10540be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 10550be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 16, 0, 0, 0, 0, 10560be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 10570be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10580be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10590be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_AL1616, 10600be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_AL1616", 10610be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_LUMINANCE_ALPHA, 10620be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10630be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 16, 10640be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 16, 0, 0, 0, 0, 10650be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 4 10660be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák }, 10670be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák { 10680be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák MESA_FORMAT_SIGNED_I16, 10690be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák "MESA_FORMAT_SIGNED_I16", 10700be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_INTENSITY, 10710be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák GL_SIGNED_NORMALIZED, 10720be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 0, 0, 0, 10730be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 0, 16, 0, 0, 0, 10740be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák 1, 1, 2 10750be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák } 1076813870fd9588de101f68728507cff726d7513695Brian Paul}; 1077813870fd9588de101f68728507cff726d7513695Brian Paul 1078813870fd9588de101f68728507cff726d7513695Brian Paul 1079813870fd9588de101f68728507cff726d7513695Brian Paul 1080813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info * 1081813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format) 1082813870fd9588de101f68728507cff726d7513695Brian Paul{ 1083813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = &format_info[format]; 1084813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == format); 1085813870fd9588de101f68728507cff726d7513695Brian Paul return info; 1086813870fd9588de101f68728507cff726d7513695Brian Paul} 1087813870fd9588de101f68728507cff726d7513695Brian Paul 1088813870fd9588de101f68728507cff726d7513695Brian Paul 1089bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */ 1090bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char * 1091bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format) 1092bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{ 1093bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1094bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul return info->StrName; 1095bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul} 1096bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 1097bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 1098bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 1099eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1100eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format. 1101eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel). But for compressed formats 1102eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc. 1103eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 1104813870fd9588de101f68728507cff726d7513695Brian PaulGLuint 1105813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format) 1106813870fd9588de101f68728507cff726d7513695Brian Paul{ 1107813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1108813870fd9588de101f68728507cff726d7513695Brian Paul ASSERT(info->BytesPerBlock); 1109813870fd9588de101f68728507cff726d7513695Brian Paul return info->BytesPerBlock; 1110813870fd9588de101f68728507cff726d7513695Brian Paul} 1111813870fd9588de101f68728507cff726d7513695Brian Paul 1112813870fd9588de101f68728507cff726d7513695Brian Paul 1113eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1114eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format. 1115eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format one of MESA_FORMAT_x 1116eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc. 1117eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 11185978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint 11195978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname) 11205978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 11215978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 11225978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 11235978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul switch (pname) { 1124edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RED_BITS: 11255978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_RED_SIZE: 1126edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_RED_SIZE_EXT: 1127edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: 11285978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->RedBits; 1129edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_GREEN_BITS: 11305978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_GREEN_SIZE: 1131edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_GREEN_SIZE_EXT: 1132edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 11335978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->GreenBits; 1134edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_BLUE_BITS: 11355978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_BLUE_SIZE: 1136edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_BLUE_SIZE_EXT: 1137edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 11385978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->BlueBits; 1139edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_ALPHA_BITS: 11405978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_ALPHA_SIZE: 1141edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_ALPHA_SIZE_EXT: 1142edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 11435978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->AlphaBits; 11445978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INTENSITY_SIZE: 11455978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IntensityBits; 11465978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_LUMINANCE_SIZE: 11475978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->LuminanceBits; 1148edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_INDEX_BITS: 11495978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INDEX_SIZE_EXT: 11505978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IndexBits; 1151edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_DEPTH_BITS: 11525978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_DEPTH_SIZE_ARB: 1153edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_DEPTH_SIZE_EXT: 1154edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 11555978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DepthBits; 1156edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_STENCIL_BITS: 11575978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_STENCIL_SIZE_EXT: 1158edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_STENCIL_SIZE_EXT: 1159edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 11605978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->StencilBits; 11615978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul default: 11625978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()"); 11635978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return 0; 11645978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul } 11655978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 11665978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 11675978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 1168eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1169eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation) 1170eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format. 1171eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of: 1172eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1] 1173eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_SIGNED_NORMALIZED = signed int representing [-1, 1] 1174eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_INT = an ordinary unsigned integer 1175f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul * GL_INT = an ordinary signed integer 1176eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_FLOAT = an ordinary float 1177eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 11785978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum 11795978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format) 11805978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 11815978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 11825978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DataType; 11835978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 11845978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 11855978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 1186eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 1187eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the basic format for the given type. The result will be 1188eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, 1189eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, GL_DEPTH_COMPONENT, 1190eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 1191eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 1192813870fd9588de101f68728507cff726d7513695Brian PaulGLenum 1193813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format) 1194813870fd9588de101f68728507cff726d7513695Brian Paul{ 1195813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1196813870fd9588de101f68728507cff726d7513695Brian Paul return info->BaseFormat; 1197813870fd9588de101f68728507cff726d7513695Brian Paul} 1198813870fd9588de101f68728507cff726d7513695Brian Paul 1199813870fd9588de101f68728507cff726d7513695Brian Paul 12007b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/** 12017b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format. Normally 12027b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1. But compressed formats will have block sizes 12037b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc. 12047b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw returns block width in pixels 12057b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh returns block height in pixels 12067b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */ 12077b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid 12087b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh) 12097b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{ 12107b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 12117b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bw = info->BlockWidth; 12127b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bh = info->BlockHeight; 12137b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul} 12147b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 12157b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 1216eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */ 1217813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean 1218813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format) 1219813870fd9588de101f68728507cff726d7513695Brian Paul{ 1220813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1221813870fd9588de101f68728507cff726d7513695Brian Paul return info->BlockWidth > 1 || info->BlockHeight > 1; 1222813870fd9588de101f68728507cff726d7513695Brian Paul} 1223813870fd9588de101f68728507cff726d7513695Brian Paul 1224813870fd9588de101f68728507cff726d7513695Brian Paul 1225813870fd9588de101f68728507cff726d7513695Brian Paul/** 1226e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler * Determine if the given format represents a packed depth/stencil buffer. 1227e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler */ 1228e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick BowlerGLboolean 1229e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format) 1230e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler{ 1231f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler const struct gl_format_info *info = _mesa_get_format_info(format); 1232e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1233f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler return info->BaseFormat == GL_DEPTH_STENCIL; 1234e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler} 1235e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1236e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler 1237e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler/** 1238ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul * Is the given format a signed/unsigned integer color format? 1239f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul */ 1240f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian PaulGLboolean 1241412b9608838b872bc294569b3ee913343a7e66f6Brian Paul_mesa_is_format_integer_color(gl_format format) 1242f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul{ 1243f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1244ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul return (info->DataType == GL_INT || info->DataType == GL_UNSIGNED_INT) && 1245ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul info->BaseFormat != GL_DEPTH_COMPONENT && 1246ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul info->BaseFormat != GL_DEPTH_STENCIL && 1247ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul info->BaseFormat != GL_STENCIL_INDEX; 1248f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul} 1249f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul 1250f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul 1251f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul/** 1252f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format. 1253f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB 1254f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */ 1255f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum 1256f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format) 1257f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{ 1258f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul /* XXX this info should be encoded in gl_format_info */ 1259f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul switch (format) { 1260f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB8: 1261f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA8: 1262f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SARGB8: 1263f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SL8: 1264f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SLA8: 1265f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB_DXT1: 1266f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT1: 1267f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT3: 1268f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT5: 1269f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_SRGB; 1270f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul default: 1271f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_LINEAR; 1272f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul } 1273f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul} 1274f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 1275aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul 1276aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul/** 1277aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For an sRGB format, return the corresponding linear color space format. 1278aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For non-sRGB formats, return the format as-is. 1279aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul */ 1280edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airliegl_format 1281edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie_mesa_get_srgb_format_linear(gl_format format) 1282edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie{ 1283edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie switch (format) { 1284edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGB8: 1285edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGB888; 1286edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1287edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA8: 1288edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA8888; 1289edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1290edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SARGB8: 1291edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_ARGB8888; 1292edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1293edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SL8: 1294edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_L8; 1295edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1296edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SLA8: 1297edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_AL88; 1298edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1299edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGB_DXT1: 1300edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGB_DXT1; 1301edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1302edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA_DXT1: 1303edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA_DXT1; 1304edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1305edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA_DXT3: 1306edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA_DXT3; 1307edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1308edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie case MESA_FORMAT_SRGBA_DXT5: 1309edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie format = MESA_FORMAT_RGBA_DXT5; 1310edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1311edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie default: 1312edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie break; 1313edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie } 1314edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie return format; 1315edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie} 1316edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie 1317f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 1318f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/** 13191c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size 13201c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format. 13211c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */ 13221c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint 13231c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width, 13241c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul GLsizei height, GLsizei depth) 13251c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{ 13261c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1327040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 13281c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 13297bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul /* compressed format (2D only for now) */ 13301c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint bw = info->BlockWidth, bh = info->BlockHeight; 13311c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint wblocks = (width + bw - 1) / bw; 13321c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint hblocks = (height + bh - 1) / bh; 1333040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint sz = wblocks * hblocks * info->BytesPerBlock; 13347bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul assert(depth == 1); 13351c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 13361c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 13371c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul else { 13381c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* non-compressed */ 13391c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint sz = width * height * depth * info->BytesPerBlock; 13401c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 13411c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 13421c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul} 13431c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 13441c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 134574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul/** 134674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * Same as _mesa_format_image_size() but returns a 64-bit value to 134774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * accomodate very large textures. 134874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul */ 134974c324fdbaebb7accaee668f2bc54af4699d0025Brian Pauluint64_t 135074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul_mesa_format_image_size64(gl_format format, GLsizei width, 135174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul GLsizei height, GLsizei depth) 135274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul{ 135374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 135474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul /* Strictly speaking, a conditional isn't needed here */ 135574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 135674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul /* compressed format (2D only for now) */ 135774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t bw = info->BlockWidth, bh = info->BlockHeight; 135874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t wblocks = (width + bw - 1) / bw; 135974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t hblocks = (height + bh - 1) / bh; 136074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t sz = wblocks * hblocks * info->BytesPerBlock; 136174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul assert(depth == 1); 136274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul return sz; 136374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul } 136474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul else { 136574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul /* non-compressed */ 136674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul const uint64_t sz = ((uint64_t) width * 136774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul (uint64_t) height * 136874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul (uint64_t) depth * 136974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul info->BytesPerBlock); 137074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul return sz; 137174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul } 137274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul} 137374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul 137474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul 13751c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 1376040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint 1377040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width) 1378040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{ 1379040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 1380040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 1381040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 1382040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* compressed format */ 1383040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint bw = info->BlockWidth; 1384040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint wblocks = (width + bw - 1) / bw; 1385040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = wblocks * info->BytesPerBlock; 1386040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1387040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1388040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul else { 1389040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = width * info->BytesPerBlock; 1390040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 1391040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 1392040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul} 1393040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 1394040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 1395d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul/** 1396d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * Debug/test: check that all formats are handled in the 1397d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * _mesa_format_to_type_and_comps() function. When new pixel formats 1398d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * are added to Mesa, that function needs to be updated. 1399d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * This is a no-op after the first call. 1400d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul */ 1401d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulstatic void 1402d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulcheck_format_to_type_and_comps(void) 1403d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul{ 1404d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul gl_format f; 1405d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul 1406d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul for (f = MESA_FORMAT_NONE + 1; f < MESA_FORMAT_COUNT; f++) { 1407d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul GLenum datatype = 0; 1408d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul GLuint comps = 0; 1409d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul /* This function will emit a problem/warning if the format is 1410d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * not handled. 1411d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul */ 1412d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul _mesa_format_to_type_and_comps(f, &datatype, &comps); 1413d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul } 1414d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul} 1415d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul 14161c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 14171c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/** 1418813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table. 1419813870fd9588de101f68728507cff726d7513695Brian Paul */ 1420813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1421813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void) 1422813870fd9588de101f68728507cff726d7513695Brian Paul{ 1423813870fd9588de101f68728507cff726d7513695Brian Paul GLuint i; 1424813870fd9588de101f68728507cff726d7513695Brian Paul 1425813870fd9588de101f68728507cff726d7513695Brian Paul assert(Elements(format_info) == MESA_FORMAT_COUNT); 1426813870fd9588de101f68728507cff726d7513695Brian Paul 1427813870fd9588de101f68728507cff726d7513695Brian Paul for (i = 0; i < MESA_FORMAT_COUNT; i++) { 1428813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(i); 1429813870fd9588de101f68728507cff726d7513695Brian Paul assert(info); 1430813870fd9588de101f68728507cff726d7513695Brian Paul 1431813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == i); 1432813870fd9588de101f68728507cff726d7513695Brian Paul 1433e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul if (info->Name == MESA_FORMAT_NONE) 1434e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul continue; 1435e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 1436813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BlockWidth == 1 && info->BlockHeight == 1) { 1437813870fd9588de101f68728507cff726d7513695Brian Paul if (info->RedBits > 0) { 1438813870fd9588de101f68728507cff726d7513695Brian Paul GLuint t = info->RedBits + info->GreenBits 1439813870fd9588de101f68728507cff726d7513695Brian Paul + info->BlueBits + info->AlphaBits; 14400073f50cd47c48c706b4524364b9c0594804febfBrian Paul assert(t / 8 <= info->BytesPerBlock); 14416e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee (void) t; 1442813870fd9588de101f68728507cff726d7513695Brian Paul } 1443813870fd9588de101f68728507cff726d7513695Brian Paul } 1444813870fd9588de101f68728507cff726d7513695Brian Paul 1445813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->DataType == GL_UNSIGNED_NORMALIZED || 1446813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_SIGNED_NORMALIZED || 1447813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_UNSIGNED_INT || 14480073f50cd47c48c706b4524364b9c0594804febfBrian Paul info->DataType == GL_INT || 1449813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_FLOAT); 1450813870fd9588de101f68728507cff726d7513695Brian Paul 1451813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BaseFormat == GL_RGB) { 1452813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1453813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1454813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1455813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1456813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1457813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1458813870fd9588de101f68728507cff726d7513695Brian Paul } 1459813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_RGBA) { 1460813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 1461813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 1462813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1463813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits > 0); 1464813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1465813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1466813870fd9588de101f68728507cff726d7513695Brian Paul } 14675d1387b2da3626326410804026f8b92f1a121fdcIan Romanick else if (info->BaseFormat == GL_RG) { 14685d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->RedBits > 0); 14695d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->GreenBits > 0); 14705d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->BlueBits == 0); 14715d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->AlphaBits == 0); 14725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->LuminanceBits == 0); 14735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->IntensityBits == 0); 14745d1387b2da3626326410804026f8b92f1a121fdcIan Romanick } 14755d1387b2da3626326410804026f8b92f1a121fdcIan Romanick else if (info->BaseFormat == GL_RED) { 14765d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->RedBits > 0); 14775d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->GreenBits == 0); 14785d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->BlueBits == 0); 14795d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->AlphaBits == 0); 14805d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->LuminanceBits == 0); 14815d1387b2da3626326410804026f8b92f1a121fdcIan Romanick assert(info->IntensityBits == 0); 14825d1387b2da3626326410804026f8b92f1a121fdcIan Romanick } 1483813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_LUMINANCE) { 1484813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1485813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1486813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1487813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1488813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits > 0); 1489813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1490813870fd9588de101f68728507cff726d7513695Brian Paul } 1491813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_INTENSITY) { 1492813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1493813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1494813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1495813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1496813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1497813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits > 0); 1498813870fd9588de101f68728507cff726d7513695Brian Paul } 1499813870fd9588de101f68728507cff726d7513695Brian Paul } 1500d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul 1501d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul check_format_to_type_and_comps(); 1502813870fd9588de101f68728507cff726d7513695Brian Paul} 1503813870fd9588de101f68728507cff726d7513695Brian Paul 1504813870fd9588de101f68728507cff726d7513695Brian Paul 1505019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1506813870fd9588de101f68728507cff726d7513695Brian Paul/** 1507019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format. 1508019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code. 1509813870fd9588de101f68728507cff726d7513695Brian Paul */ 1510813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1511019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format, 1512019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul GLenum *datatype, GLuint *comps) 1513813870fd9588de101f68728507cff726d7513695Brian Paul{ 1514019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul switch (format) { 1515019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888: 1516019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888_REV: 1517019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888: 1518019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888_REV: 151974d61d03b54d72217d463c248468cdcd09320efcBrian Paul case MESA_FORMAT_XRGB8888: 152079c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_XRGB8888_REV: 1521019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1522019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1523019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1524019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB888: 1525019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_BGR888: 1526019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1527019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1528019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1529019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565: 1530019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565_REV: 1531019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_5_6_5; 1532019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1533019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1534019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1535019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444: 1536019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444_REV: 1537019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_4_4_4_4; 1538019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1539019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1540019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1541019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555: 1542019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555_REV: 1543019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV; 1544019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1545019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1546019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1547621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák case MESA_FORMAT_ARGB2101010: 1548621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák *datatype = GL_UNSIGNED_INT_2_10_10_10_REV; 1549621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák *comps = 4; 1550621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák return; 1551621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák 155279c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_RGBA5551: 155379c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_UNSIGNED_SHORT_5_5_5_1; 155479c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 4; 155579c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 155679c65410c132c22b67b7635cee740dea9a736f80Brian Paul 15574d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák case MESA_FORMAT_AL44: 15584d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák *datatype = MESA_UNSIGNED_BYTE_4_4; 15594d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák *comps = 2; 15604d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák return; 15614d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák 1562019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88: 1563019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88_REV: 15645d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG88: 15655d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG88_REV: 1566019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1567019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1568019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1569eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1570eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616: 1571eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616_REV: 15725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG1616: 15735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_RG1616_REV: 1574eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *datatype = GL_UNSIGNED_SHORT; 1575eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *comps = 2; 1576eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick return; 1577eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 15785d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_R16: 1579eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák case MESA_FORMAT_A16: 1580bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák case MESA_FORMAT_L16: 1581fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák case MESA_FORMAT_I16: 15825d1387b2da3626326410804026f8b92f1a121fdcIan Romanick *datatype = GL_UNSIGNED_SHORT; 15835d1387b2da3626326410804026f8b92f1a121fdcIan Romanick *comps = 1; 15845d1387b2da3626326410804026f8b92f1a121fdcIan Romanick return; 15855d1387b2da3626326410804026f8b92f1a121fdcIan Romanick 1586019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB332: 1587019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE_3_3_2; 1588019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1589019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1590019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1591019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_A8: 1592019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_L8: 1593019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_I8: 1594019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_CI8: 15955d1387b2da3626326410804026f8b92f1a121fdcIan Romanick case MESA_FORMAT_R8: 159679c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_S8: 1597813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1598813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1599019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1600019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1601019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR: 1602019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR_REV: 1603019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT; 1604813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1605019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1606019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1607019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z24_S8: 1608019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1609019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1610019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1611019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1612019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_S8_Z24: 1613019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1614019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1615019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1616019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1617019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z16: 1618813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_SHORT; 1619019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1620019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1621019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1622e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul case MESA_FORMAT_X8_Z24: 1623e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *datatype = GL_UNSIGNED_INT; 1624e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *comps = 1; 1625e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul return; 1626e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1627c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca case MESA_FORMAT_Z24_X8: 1628c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *datatype = GL_UNSIGNED_INT; 1629c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *comps = 1; 1630c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca return; 1631c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1632019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z32: 1633019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1634019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1635019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1636019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1637019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_DUDV8: 1638019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_BYTE; 1639813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1640019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1641019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 164279c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_SIGNED_R8: 16430be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_A8: 16440be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_L8: 16450be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_I8: 164679c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_BYTE; 164779c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 1; 164879c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 16490be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_RG88_REV: 16500be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_AL88: 165179c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_BYTE; 165279c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 2; 165379c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 1654019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888: 1655019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888_REV: 165679c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_SIGNED_RGBX8888: 1657813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_BYTE; 1658019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1659019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1660880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul 166179c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_RGBA_16: 166279c65410c132c22b67b7635cee740dea9a736f80Brian Paul *datatype = GL_UNSIGNED_SHORT; 166379c65410c132c22b67b7635cee740dea9a736f80Brian Paul *comps = 4; 166479c65410c132c22b67b7635cee740dea9a736f80Brian Paul return; 166579c65410c132c22b67b7635cee740dea9a736f80Brian Paul 16660be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_R16: 16670be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_A16: 16680be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_L16: 16690be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_I16: 1670880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1671880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 1; 1672880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 16730be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_GR1616: 16740be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák case MESA_FORMAT_SIGNED_AL1616: 1675880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1676880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 2; 1677880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1678880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RGB_16: 1679880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1680880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 3; 1681880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1682c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul case MESA_FORMAT_SIGNED_RGBA_16: 1683c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *datatype = GL_SHORT; 1684c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *comps = 4; 1685c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul return; 1686019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1687019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1688019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB8: 1689019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1690019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1691019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1692019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA8: 1693019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SARGB8: 1694019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1695019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1696019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1697019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SL8: 1698019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1699813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1700019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1701019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SLA8: 1702019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1703019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1704019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1705019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1706019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1707019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1 1708019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FXT1: 1709019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FXT1: 1710019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1711019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc 1712019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_DXT1: 1713019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT1: 1714019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT3: 1715019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT5: 1716019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1717019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB_DXT1: 1718019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT1: 1719019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT3: 1720019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT5: 1721019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 172269c78bf2c21c239d6064847dd0628f3526d68f9bIan Romanick#endif 17238d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_RED_RGTC1: 17248d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_SIGNED_RED_RGTC1: 17258d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_RG_RGTC2: 17268d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie case MESA_FORMAT_SIGNED_RG_RGTC2: 17277d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_L_LATC1: 17287d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_SIGNED_L_LATC1: 17297d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_LA_LATC2: 17307d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák case MESA_FORMAT_SIGNED_LA_LATC2: 1731019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul /* XXX generate error instead? */ 1732813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1733019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 0; 1734019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1735019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1736019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT32: 1737019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1738019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1739019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1740019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT16: 1741019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1742019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1743019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1744019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT32: 1745019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1746019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1747019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1748019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT16: 1749019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1750019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1751019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1752019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: 17530ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák case MESA_FORMAT_RG_FLOAT32: 1754019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1755019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1756019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1757019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: 17580ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák case MESA_FORMAT_RG_FLOAT16: 1759019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1760019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1761019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1762019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT32: 1763019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT32: 1764019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT32: 17650ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák case MESA_FORMAT_R_FLOAT32: 1766019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1767019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1768019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1769019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT16: 1770019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT16: 1771019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT16: 17720ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák case MESA_FORMAT_R_FLOAT16: 1773019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1774019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1775019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1776019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1777abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT8: 1778abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_BYTE; 1779abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1780abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1781abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT16: 1782abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_SHORT; 1783abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1784abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1785abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_INT32: 1786abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_INT; 1787abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1788abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1789abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 1790abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul /** 1791abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul * \name Non-normalized unsigned integer formats. 1792abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul */ 1793abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT8: 1794abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_BYTE; 1795abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1796abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1797abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT16: 1798abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_SHORT; 1799abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1800abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1801abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul case MESA_FORMAT_RGBA_UINT32: 1802abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *datatype = GL_UNSIGNED_INT; 1803abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul *comps = 4; 1804abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul return; 1805abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul 180679c65410c132c22b67b7635cee740dea9a736f80Brian Paul case MESA_FORMAT_COUNT: 1807a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee assert(0); 1808a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee return; 1809a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee 1810a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee case MESA_FORMAT_NONE: 181179c65410c132c22b67b7635cee740dea9a736f80Brian Paul /* For debug builds, warn if any formats are not handled */ 1812280750c5cabfc5f312c3abe0424f57b2edeb53dfVinson Lee#ifdef DEBUG 1813019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul default: 181479c65410c132c22b67b7635cee740dea9a736f80Brian Paul#endif 1815c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul _mesa_problem(NULL, "bad format %s in _mesa_format_to_type_and_comps", 1816c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul _mesa_get_format_name(format)); 1817019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = 0; 1818019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1819813870fd9588de101f68728507cff726d7513695Brian Paul } 1820813870fd9588de101f68728507cff726d7513695Brian Paul} 1821