formats.c revision 17e96718946486ef77927fcf3bb299d8bff32b98
1813870fd9588de101f68728507cff726d7513695Brian Paul/* 2813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa 3-D graphics library 3813870fd9588de101f68728507cff726d7513695Brian Paul * Version: 7.7 4813870fd9588de101f68728507cff726d7513695Brian Paul * 5813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 6813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (c) 2008-2009 VMware, Inc. 7813870fd9588de101f68728507cff726d7513695Brian Paul * 8813870fd9588de101f68728507cff726d7513695Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 9813870fd9588de101f68728507cff726d7513695Brian Paul * copy of this software and associated documentation files (the "Software"), 10813870fd9588de101f68728507cff726d7513695Brian Paul * to deal in the Software without restriction, including without limitation 11813870fd9588de101f68728507cff726d7513695Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12813870fd9588de101f68728507cff726d7513695Brian Paul * and/or sell copies of the Software, and to permit persons to whom the 13813870fd9588de101f68728507cff726d7513695Brian Paul * Software is furnished to do so, subject to the following conditions: 14813870fd9588de101f68728507cff726d7513695Brian Paul * 15813870fd9588de101f68728507cff726d7513695Brian Paul * The above copyright notice and this permission notice shall be included 16813870fd9588de101f68728507cff726d7513695Brian Paul * in all copies or substantial portions of the Software. 17813870fd9588de101f68728507cff726d7513695Brian Paul * 18813870fd9588de101f68728507cff726d7513695Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19813870fd9588de101f68728507cff726d7513695Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20813870fd9588de101f68728507cff726d7513695Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21813870fd9588de101f68728507cff726d7513695Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 22813870fd9588de101f68728507cff726d7513695Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23813870fd9588de101f68728507cff726d7513695Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24813870fd9588de101f68728507cff726d7513695Brian Paul */ 25813870fd9588de101f68728507cff726d7513695Brian Paul 26813870fd9588de101f68728507cff726d7513695Brian Paul 27c28d78f8324cfc17936af63c258a1cc55d590d60Brian Paul#include "imports.h" 28813870fd9588de101f68728507cff726d7513695Brian Paul#include "formats.h" 29813870fd9588de101f68728507cff726d7513695Brian Paul#include "config.h" 30813870fd9588de101f68728507cff726d7513695Brian Paul 31813870fd9588de101f68728507cff726d7513695Brian Paul 32813870fd9588de101f68728507cff726d7513695Brian Paul/** 33be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats. 34be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 35be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info 36be0765cd6ec47cf068775197f312a1123e044566Brian Paul{ 37be0765cd6ec47cf068775197f312a1123e044566Brian Paul gl_format Name; 38be0765cd6ec47cf068775197f312a1123e044566Brian Paul 39bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul /** text name for debugging */ 40bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const char *StrName; 41bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 42be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 43be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Base format is one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, 44eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, 45eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 46be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 47be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum BaseFormat; 48be0765cd6ec47cf068775197f312a1123e044566Brian Paul 49be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 50be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Logical data type: one of GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALED, 51be0765cd6ec47cf068775197f312a1123e044566Brian Paul * GL_UNSIGNED_INT, GL_SIGNED_INT, GL_FLOAT. 52be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 53be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLenum DataType; 54be0765cd6ec47cf068775197f312a1123e044566Brian Paul 55be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte RedBits; 56be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte GreenBits; 57be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlueBits; 58be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte AlphaBits; 59be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte LuminanceBits; 60be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IntensityBits; 61be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte IndexBits; 62be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte DepthBits; 63be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte StencilBits; 64be0765cd6ec47cf068775197f312a1123e044566Brian Paul 65be0765cd6ec47cf068775197f312a1123e044566Brian Paul /** 66be0765cd6ec47cf068775197f312a1123e044566Brian Paul * To describe compressed formats. If not compressed, Width=Height=1. 67be0765cd6ec47cf068775197f312a1123e044566Brian Paul */ 68be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BlockWidth, BlockHeight; 69be0765cd6ec47cf068775197f312a1123e044566Brian Paul GLubyte BytesPerBlock; 70be0765cd6ec47cf068775197f312a1123e044566Brian Paul}; 71be0765cd6ec47cf068775197f312a1123e044566Brian Paul 72be0765cd6ec47cf068775197f312a1123e044566Brian Paul 73be0765cd6ec47cf068775197f312a1123e044566Brian Paul/** 74813870fd9588de101f68728507cff726d7513695Brian Paul * Info about each format. 75813870fd9588de101f68728507cff726d7513695Brian Paul * These must be in the same order as the MESA_FORMAT_* enums so that 76813870fd9588de101f68728507cff726d7513695Brian Paul * we can do lookups without searching. 77813870fd9588de101f68728507cff726d7513695Brian Paul */ 78813870fd9588de101f68728507cff726d7513695Brian Paulstatic struct gl_format_info format_info[MESA_FORMAT_COUNT] = 79813870fd9588de101f68728507cff726d7513695Brian Paul{ 80813870fd9588de101f68728507cff726d7513695Brian Paul { 81e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul MESA_FORMAT_NONE, /* Name */ 82bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_NONE", /* StrName */ 83e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* BaseFormat */ 84e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul GL_NONE, /* DataType */ 85e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 86e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 87e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 0, 0, 0 /* BlockWidth/Height,Bytes */ 88e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul }, 89e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul { 90813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888, /* Name */ 91bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888", /* StrName */ 92813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 93813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 94813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 95813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 96813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 97813870fd9588de101f68728507cff726d7513695Brian Paul }, 98813870fd9588de101f68728507cff726d7513695Brian Paul { 99813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA8888_REV, /* Name */ 100bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA8888_REV", /* StrName */ 101813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 102813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 103813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 104813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 105813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 106813870fd9588de101f68728507cff726d7513695Brian Paul }, 107813870fd9588de101f68728507cff726d7513695Brian Paul { 108813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888, /* Name */ 109bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888", /* StrName */ 110813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 111813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 112813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 113813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 114813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 115813870fd9588de101f68728507cff726d7513695Brian Paul }, 116813870fd9588de101f68728507cff726d7513695Brian Paul { 117813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB8888_REV, /* Name */ 118bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB8888_REV", /* StrName */ 119813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 120813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 121813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, /* Red/Green/Blue/AlphaBits */ 122813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 123813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 124813870fd9588de101f68728507cff726d7513695Brian Paul }, 125813870fd9588de101f68728507cff726d7513695Brian Paul { 12674d61d03b54d72217d463c248468cdcd09320efcBrian Paul MESA_FORMAT_XRGB8888, /* Name */ 127bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_XRGB8888", /* StrName */ 12874d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_RGB, /* BaseFormat */ 12974d61d03b54d72217d463c248468cdcd09320efcBrian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 13074d61d03b54d72217d463c248468cdcd09320efcBrian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 13174d61d03b54d72217d463c248468cdcd09320efcBrian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 13274d61d03b54d72217d463c248468cdcd09320efcBrian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 13374d61d03b54d72217d463c248468cdcd09320efcBrian Paul }, 13474d61d03b54d72217d463c248468cdcd09320efcBrian Paul { 1352d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer MESA_FORMAT_XRGB8888_REV, /* Name */ 1362d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer "MESA_FORMAT_XRGB8888_REV", /* StrName */ 1372d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_RGB, /* BaseFormat */ 1382d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer GL_UNSIGNED_NORMALIZED, /* DataType */ 1392d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 1402d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 1412d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer 1, 1, 4 /* BlockWidth/Height,Bytes */ 1422d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer }, 1432d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer { 144813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB888, /* Name */ 145bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB888", /* StrName */ 146813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 147813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 148813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 149813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 150813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 151813870fd9588de101f68728507cff726d7513695Brian Paul }, 152813870fd9588de101f68728507cff726d7513695Brian Paul { 153813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_BGR888, /* Name */ 154bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_BGR888", /* StrName */ 155813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 156813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 157813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, /* Red/Green/Blue/AlphaBits */ 158813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 159813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 /* BlockWidth/Height,Bytes */ 160813870fd9588de101f68728507cff726d7513695Brian Paul }, 161813870fd9588de101f68728507cff726d7513695Brian Paul { 162813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565, /* Name */ 163bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565", /* StrName */ 164813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 165813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 166813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 167813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 168813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 169813870fd9588de101f68728507cff726d7513695Brian Paul }, 170813870fd9588de101f68728507cff726d7513695Brian Paul { 171813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB565_REV, /* Name */ 172bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB565_REV", /* StrName */ 173813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 174813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 175813870fd9588de101f68728507cff726d7513695Brian Paul 5, 6, 5, 0, /* Red/Green/Blue/AlphaBits */ 176813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 177813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 178813870fd9588de101f68728507cff726d7513695Brian Paul }, 179813870fd9588de101f68728507cff726d7513695Brian Paul { 180813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444, /* Name */ 181bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444", /* StrName */ 182813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 183813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 184813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 185813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 186813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 187813870fd9588de101f68728507cff726d7513695Brian Paul }, 188813870fd9588de101f68728507cff726d7513695Brian Paul { 189813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB4444_REV, /* Name */ 190bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB4444_REV", /* StrName */ 191813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 192813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 193813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, /* Red/Green/Blue/AlphaBits */ 194813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 195813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 196813870fd9588de101f68728507cff726d7513695Brian Paul }, 197813870fd9588de101f68728507cff726d7513695Brian Paul { 198813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA5551, /* Name */ 199bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA5551", /* StrName */ 200813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 201813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 202813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 203813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 204813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 205813870fd9588de101f68728507cff726d7513695Brian Paul }, 206813870fd9588de101f68728507cff726d7513695Brian Paul { 207813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555, /* Name */ 208bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555", /* StrName */ 209813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 210813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 211813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 212813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 213813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 214813870fd9588de101f68728507cff726d7513695Brian Paul }, 215813870fd9588de101f68728507cff726d7513695Brian Paul { 216813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ARGB1555_REV, /* Name */ 217bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ARGB1555_REV", /* StrName */ 218813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, /* BaseFormat */ 219813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 220813870fd9588de101f68728507cff726d7513695Brian Paul 5, 5, 5, 1, /* Red/Green/Blue/AlphaBits */ 221813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 222813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 223813870fd9588de101f68728507cff726d7513695Brian Paul }, 224813870fd9588de101f68728507cff726d7513695Brian Paul { 225813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88, /* Name */ 226bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88", /* StrName */ 227813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 228813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 229813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 230813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 231813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 232813870fd9588de101f68728507cff726d7513695Brian Paul }, 233813870fd9588de101f68728507cff726d7513695Brian Paul { 234813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_AL88_REV, /* Name */ 235bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_AL88_REV", /* StrName */ 236813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, /* BaseFormat */ 237813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 238813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 239813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 240813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 241813870fd9588de101f68728507cff726d7513695Brian Paul }, 242813870fd9588de101f68728507cff726d7513695Brian Paul { 243eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616, /* Name */ 244eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616", /* StrName */ 245eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 246eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 247eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 248eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 249eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 250eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 251eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 252eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick MESA_FORMAT_AL1616_REV, /* Name */ 253eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick "MESA_FORMAT_AL1616_REV", /* StrName */ 254eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_LUMINANCE_ALPHA, /* BaseFormat */ 255eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick GL_UNSIGNED_NORMALIZED, /* DataType */ 256eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 0, 0, 0, 16, /* Red/Green/Blue/AlphaBits */ 257eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 16, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 258eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1, 1, 4 /* BlockWidth/Height,Bytes */ 259eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick }, 260eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick { 261813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB332, /* Name */ 262bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB332", /* StrName */ 263813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 264813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 265813870fd9588de101f68728507cff726d7513695Brian Paul 3, 3, 2, 0, /* Red/Green/Blue/AlphaBits */ 266813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 267813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 268813870fd9588de101f68728507cff726d7513695Brian Paul }, 269813870fd9588de101f68728507cff726d7513695Brian Paul { 270813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_A8, /* Name */ 271bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_A8", /* StrName */ 272813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, /* BaseFormat */ 273813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 274813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, /* Red/Green/Blue/AlphaBits */ 275813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 276813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 277813870fd9588de101f68728507cff726d7513695Brian Paul }, 278813870fd9588de101f68728507cff726d7513695Brian Paul { 279813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_L8, /* Name */ 280bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_L8", /* StrName */ 281813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE, /* BaseFormat */ 282813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 283813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 284813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 285813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 286813870fd9588de101f68728507cff726d7513695Brian Paul }, 287813870fd9588de101f68728507cff726d7513695Brian Paul { 288813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_I8, /* Name */ 289bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_I8", /* StrName */ 290813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, /* BaseFormat */ 291813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 292813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 293813870fd9588de101f68728507cff726d7513695Brian Paul 0, 8, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 294813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 295813870fd9588de101f68728507cff726d7513695Brian Paul }, 296813870fd9588de101f68728507cff726d7513695Brian Paul { 297813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_CI8, /* Name */ 298bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_CI8", /* StrName */ 299813870fd9588de101f68728507cff726d7513695Brian Paul GL_COLOR_INDEX, /* BaseFormat */ 300813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 301813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 302813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 8, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 303813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 304813870fd9588de101f68728507cff726d7513695Brian Paul }, 305813870fd9588de101f68728507cff726d7513695Brian Paul { 306813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR, /* Name */ 307bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR", /* StrName */ 308813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 309813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 310813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 311813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 312813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 313813870fd9588de101f68728507cff726d7513695Brian Paul }, 314813870fd9588de101f68728507cff726d7513695Brian Paul { 315813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_YCBCR_REV, /* Name */ 316bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_YCBCR_REV", /* StrName */ 317813870fd9588de101f68728507cff726d7513695Brian Paul GL_YCBCR_MESA, /* BaseFormat */ 318813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 319813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 320813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 321813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 322813870fd9588de101f68728507cff726d7513695Brian Paul }, 323813870fd9588de101f68728507cff726d7513695Brian Paul { 324813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z24_S8, /* Name */ 325bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z24_S8", /* StrName */ 326813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 327813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 328813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 329813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 330813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 331813870fd9588de101f68728507cff726d7513695Brian Paul }, 332813870fd9588de101f68728507cff726d7513695Brian Paul { 333813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8_Z24, /* Name */ 334bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8_Z24", /* StrName */ 335813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_STENCIL, /* BaseFormat */ 336813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 337813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 338813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 24, 8, /* Lum/Int/Index/Depth/StencilBits */ 339813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 340813870fd9588de101f68728507cff726d7513695Brian Paul }, 341813870fd9588de101f68728507cff726d7513695Brian Paul { 342813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z16, /* Name */ 343bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z16", /* StrName */ 344813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 345813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 346813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 347813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 0, /* Lum/Int/Index/Depth/StencilBits */ 348813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 /* BlockWidth/Height,Bytes */ 349813870fd9588de101f68728507cff726d7513695Brian Paul }, 350813870fd9588de101f68728507cff726d7513695Brian Paul { 351e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul MESA_FORMAT_X8_Z24, /* Name */ 352bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_X8_Z24", /* StrName */ 353e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 354e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul GL_UNSIGNED_INT, /* DataType */ 355e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 356e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 357e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 358e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul }, 359e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul { 360c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca MESA_FORMAT_Z24_X8, /* Name */ 361c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca "MESA_FORMAT_Z24_X8", /* StrName */ 362c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_DEPTH_COMPONENT, /* BaseFormat */ 363c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca GL_UNSIGNED_INT, /* DataType */ 364c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 365c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 0, 0, 0, 24, 0, /* Lum/Int/Index/Depth/StencilBits */ 366c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1, 1, 4 /* BlockWidth/Height,Bytes */ 367c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca }, 368c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca { 369813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_Z32, /* Name */ 370bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_Z32", /* StrName */ 371813870fd9588de101f68728507cff726d7513695Brian Paul GL_DEPTH_COMPONENT, /* BaseFormat */ 372813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 373813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 374813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 0, /* Lum/Int/Index/Depth/StencilBits */ 375813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 /* BlockWidth/Height,Bytes */ 376813870fd9588de101f68728507cff726d7513695Brian Paul }, 377813870fd9588de101f68728507cff726d7513695Brian Paul { 378813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_S8, /* Name */ 379bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_S8", /* StrName */ 380813870fd9588de101f68728507cff726d7513695Brian Paul GL_STENCIL_INDEX, /* BaseFormat */ 381813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_INT, /* DataType */ 382813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 383813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 8, /* Lum/Int/Index/Depth/StencilBits */ 384813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 385813870fd9588de101f68728507cff726d7513695Brian Paul }, 386813870fd9588de101f68728507cff726d7513695Brian Paul { 387813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB8, 388bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB8", 389813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 390813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 391813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 0, 392813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 393813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 3 394813870fd9588de101f68728507cff726d7513695Brian Paul }, 395813870fd9588de101f68728507cff726d7513695Brian Paul { 396813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA8, 397bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA8", 398813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 399813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 400813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 401813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 402813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 403813870fd9588de101f68728507cff726d7513695Brian Paul }, 404813870fd9588de101f68728507cff726d7513695Brian Paul { 405813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SARGB8, 406bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SARGB8", 407813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 408813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 409813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 410813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 411813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 412813870fd9588de101f68728507cff726d7513695Brian Paul }, 413813870fd9588de101f68728507cff726d7513695Brian Paul { 414813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SL8, 415bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SL8", 41671cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul GL_LUMINANCE, 417813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 41871cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 0, 0, 0, 0, 419813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 42071cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul 1, 1, 1 421813870fd9588de101f68728507cff726d7513695Brian Paul }, 422813870fd9588de101f68728507cff726d7513695Brian Paul { 423813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SLA8, 424bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SLA8", 425813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 426813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 427813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 8, 428813870fd9588de101f68728507cff726d7513695Brian Paul 8, 0, 0, 0, 0, 429813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 430813870fd9588de101f68728507cff726d7513695Brian Paul }, 431813870fd9588de101f68728507cff726d7513695Brian Paul { 432813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGB_DXT1, /* Name */ 433bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGB_DXT1", /* StrName */ 434813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 435813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 436813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 437813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 438813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 439813870fd9588de101f68728507cff726d7513695Brian Paul }, 440813870fd9588de101f68728507cff726d7513695Brian Paul { 441813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT1, 442bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT1", 443813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 444813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 445813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 446813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 447813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 448813870fd9588de101f68728507cff726d7513695Brian Paul }, 449813870fd9588de101f68728507cff726d7513695Brian Paul { 450813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT3, 451bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT3", 452813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 453813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 454813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 455813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 456813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 457813870fd9588de101f68728507cff726d7513695Brian Paul }, 458813870fd9588de101f68728507cff726d7513695Brian Paul { 459813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SRGBA_DXT5, 460bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SRGBA_DXT5", 461813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 462813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 463813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 464813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 465813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 466813870fd9588de101f68728507cff726d7513695Brian Paul }, 467813870fd9588de101f68728507cff726d7513695Brian Paul 468813870fd9588de101f68728507cff726d7513695Brian Paul { 469813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FXT1, 470bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FXT1", 471813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 472813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 473c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 0, /* approx Red/Green/BlueBits */ 474813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 475813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 476813870fd9588de101f68728507cff726d7513695Brian Paul }, 477813870fd9588de101f68728507cff726d7513695Brian Paul { 478813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FXT1, 479bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FXT1", 480813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 481813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 482c02cd82b463661def7842f910dc561313559df80Brian Paul 4, 4, 4, 1, /* approx Red/Green/Blue/AlphaBits */ 483813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 484813870fd9588de101f68728507cff726d7513695Brian Paul 8, 4, 16 /* 16 bytes per 8x4 block */ 485813870fd9588de101f68728507cff726d7513695Brian Paul }, 486813870fd9588de101f68728507cff726d7513695Brian Paul 487813870fd9588de101f68728507cff726d7513695Brian Paul { 488813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_DXT1, /* Name */ 489bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_DXT1", /* StrName */ 490813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, /* BaseFormat */ 491813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, /* DataType */ 492813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 0, /* approx Red/Green/Blue/AlphaBits */ 493813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 494813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 495813870fd9588de101f68728507cff726d7513695Brian Paul }, 496813870fd9588de101f68728507cff726d7513695Brian Paul { 497813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT1, 498bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT1", 499813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 500813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 501813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 502813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 503813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 8 /* 8 bytes per 4x4 block */ 504813870fd9588de101f68728507cff726d7513695Brian Paul }, 505813870fd9588de101f68728507cff726d7513695Brian Paul { 506813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT3, 507bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT3", 508813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 509813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 510813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 511813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 512813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 513813870fd9588de101f68728507cff726d7513695Brian Paul }, 514813870fd9588de101f68728507cff726d7513695Brian Paul { 515813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_DXT5, 516bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_DXT5", 517813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 518813870fd9588de101f68728507cff726d7513695Brian Paul GL_UNSIGNED_NORMALIZED, 519813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 4, 4, 520813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 521813870fd9588de101f68728507cff726d7513695Brian Paul 4, 4, 16 /* 16 bytes per 4x4 block */ 522813870fd9588de101f68728507cff726d7513695Brian Paul }, 523813870fd9588de101f68728507cff726d7513695Brian Paul { 524813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT32, 525bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT32", 526813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 527813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 528813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 32, 529813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 530813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 16 531813870fd9588de101f68728507cff726d7513695Brian Paul }, 532813870fd9588de101f68728507cff726d7513695Brian Paul { 533813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGBA_FLOAT16, 534bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGBA_FLOAT16", 535813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 536813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 537813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 16, 538813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 539813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 540813870fd9588de101f68728507cff726d7513695Brian Paul }, 541813870fd9588de101f68728507cff726d7513695Brian Paul { 542813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT32, 543bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT32", 544813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 545813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 546813870fd9588de101f68728507cff726d7513695Brian Paul 32, 32, 32, 0, 547813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 548813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 12 549813870fd9588de101f68728507cff726d7513695Brian Paul }, 550813870fd9588de101f68728507cff726d7513695Brian Paul { 551813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_RGB_FLOAT16, 552bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_RGB_FLOAT16", 553813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGB, 554813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 555813870fd9588de101f68728507cff726d7513695Brian Paul 16, 16, 16, 0, 556813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 557813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 6 558813870fd9588de101f68728507cff726d7513695Brian Paul }, 559813870fd9588de101f68728507cff726d7513695Brian Paul { 560813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT32, 561bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT32", 562813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 563813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 564813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 565813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 566813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 567813870fd9588de101f68728507cff726d7513695Brian Paul }, 568813870fd9588de101f68728507cff726d7513695Brian Paul { 569813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_ALPHA_FLOAT16, 570bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_ALPHA_FLOAT16", 571813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 572813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 573813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 574813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 575813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 576813870fd9588de101f68728507cff726d7513695Brian Paul }, 577813870fd9588de101f68728507cff726d7513695Brian Paul { 578813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT32, 579bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT32", 580813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 581813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 582813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 583813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 584813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 585813870fd9588de101f68728507cff726d7513695Brian Paul }, 586813870fd9588de101f68728507cff726d7513695Brian Paul { 587813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_FLOAT16, 588bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_FLOAT16", 589813870fd9588de101f68728507cff726d7513695Brian Paul GL_ALPHA, 590813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 591813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 592813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 593813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 594813870fd9588de101f68728507cff726d7513695Brian Paul }, 595813870fd9588de101f68728507cff726d7513695Brian Paul { 596813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, 597bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32", 598813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 599813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 600813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 32, 601813870fd9588de101f68728507cff726d7513695Brian Paul 32, 0, 0, 0, 0, 602813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 8 603813870fd9588de101f68728507cff726d7513695Brian Paul }, 604813870fd9588de101f68728507cff726d7513695Brian Paul { 605813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, 606bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16", 607813870fd9588de101f68728507cff726d7513695Brian Paul GL_LUMINANCE_ALPHA, 608813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 609813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 16, 610813870fd9588de101f68728507cff726d7513695Brian Paul 16, 0, 0, 0, 0, 611813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 612813870fd9588de101f68728507cff726d7513695Brian Paul }, 613813870fd9588de101f68728507cff726d7513695Brian Paul { 614813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT32, 615bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT32", 616813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 617813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 618813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 619813870fd9588de101f68728507cff726d7513695Brian Paul 0, 32, 0, 0, 0, 620813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 621813870fd9588de101f68728507cff726d7513695Brian Paul }, 622813870fd9588de101f68728507cff726d7513695Brian Paul { 623813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_INTENSITY_FLOAT16, 624bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_INTENSITY_FLOAT16", 625813870fd9588de101f68728507cff726d7513695Brian Paul GL_INTENSITY, 626813870fd9588de101f68728507cff726d7513695Brian Paul GL_FLOAT, 627813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 628813870fd9588de101f68728507cff726d7513695Brian Paul 0, 16, 0, 0, 0, 629813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 630813870fd9588de101f68728507cff726d7513695Brian Paul }, 631813870fd9588de101f68728507cff726d7513695Brian Paul { 632813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_DUDV8, 633bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_DUDV8", 634813870fd9588de101f68728507cff726d7513695Brian Paul GL_DUDV_ATI, 635813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 636813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 637813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 638813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 2 639813870fd9588de101f68728507cff726d7513695Brian Paul }, 64084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 64184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 8 bits / channel */ 64284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 64384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R8, /* Name */ 64484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R8", /* StrName */ 64584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, /* BaseFormat */ 64684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, /* DataType */ 64784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ 64884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */ 64984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 1 /* BlockWidth/Height,Bytes */ 65084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 65184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 65284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RG88, 65384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RG88", 65484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 65584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 65684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 0, 0, 65784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 65884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 65984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 66084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 66184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGBX8888, 66284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGBX8888", 66384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 66484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 66584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 8, 8, 8, 0, 66684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 66784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 /* 4 bpp, but no alpha */ 66884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 669813870fd9588de101f68728507cff726d7513695Brian Paul { 670813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888, 671bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888", 672813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 673813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 674813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 675813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 676813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 677813870fd9588de101f68728507cff726d7513695Brian Paul }, 678813870fd9588de101f68728507cff726d7513695Brian Paul { 679813870fd9588de101f68728507cff726d7513695Brian Paul MESA_FORMAT_SIGNED_RGBA8888_REV, 680bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA8888_REV", 681813870fd9588de101f68728507cff726d7513695Brian Paul GL_RGBA, 682813870fd9588de101f68728507cff726d7513695Brian Paul GL_SIGNED_NORMALIZED, 683813870fd9588de101f68728507cff726d7513695Brian Paul 8, 8, 8, 8, 684813870fd9588de101f68728507cff726d7513695Brian Paul 0, 0, 0, 0, 0, 685813870fd9588de101f68728507cff726d7513695Brian Paul 1, 1, 4 686813870fd9588de101f68728507cff726d7513695Brian Paul }, 68784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 68884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul /* Signed 16 bits / channel */ 68984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 69084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_R_16, 69184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_R_16", 69284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 69384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 69484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 0, 0, 0, 69584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 69684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 2 69784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 69884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 69984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RG_16, 70084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RG_16", 70184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 70284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 70384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 0, 0, 70484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 70584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 4 70684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 70784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul { 70884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul MESA_FORMAT_SIGNED_RGB_16, 70984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul "MESA_FORMAT_SIGNED_RGB_16", 71084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_RGBA, 71184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul GL_SIGNED_NORMALIZED, 71284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 16, 16, 16, 0, 71384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 0, 0, 0, 0, 0, 71484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul 1, 1, 6 71584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul }, 716c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul { 717c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul MESA_FORMAT_SIGNED_RGBA_16, 718bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul "MESA_FORMAT_SIGNED_RGBA_16", 719c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_RGBA, 720c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul GL_SIGNED_NORMALIZED, 721c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 16, 16, 16, 16, 722c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 0, 0, 0, 0, 0, 723c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul 1, 1, 8 72417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul }, 72517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul { 72617e96718946486ef77927fcf3bb299d8bff32b98Brian Paul MESA_FORMAT_RGBA_16, 72717e96718946486ef77927fcf3bb299d8bff32b98Brian Paul "MESA_FORMAT_RGBA_16", 72817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_RGBA, 72917e96718946486ef77927fcf3bb299d8bff32b98Brian Paul GL_UNSIGNED_NORMALIZED, 73017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 16, 16, 16, 16, 73117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 0, 0, 0, 0, 0, 73217e96718946486ef77927fcf3bb299d8bff32b98Brian Paul 1, 1, 8 733c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul } 734813870fd9588de101f68728507cff726d7513695Brian Paul}; 735813870fd9588de101f68728507cff726d7513695Brian Paul 736813870fd9588de101f68728507cff726d7513695Brian Paul 737813870fd9588de101f68728507cff726d7513695Brian Paul 738813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info * 739813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format) 740813870fd9588de101f68728507cff726d7513695Brian Paul{ 741813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = &format_info[format]; 742813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == format); 743813870fd9588de101f68728507cff726d7513695Brian Paul return info; 744813870fd9588de101f68728507cff726d7513695Brian Paul} 745813870fd9588de101f68728507cff726d7513695Brian Paul 746813870fd9588de101f68728507cff726d7513695Brian Paul 747bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */ 748bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char * 749bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format) 750bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{ 751bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 752bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul ASSERT(info->BytesPerBlock); 753bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul return info->StrName; 754bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul} 755bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 756bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 757bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul 758eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 759eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format. 760eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel). But for compressed formats 761eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc. 762eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 763813870fd9588de101f68728507cff726d7513695Brian PaulGLuint 764813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format) 765813870fd9588de101f68728507cff726d7513695Brian Paul{ 766813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 767813870fd9588de101f68728507cff726d7513695Brian Paul ASSERT(info->BytesPerBlock); 768813870fd9588de101f68728507cff726d7513695Brian Paul return info->BytesPerBlock; 769813870fd9588de101f68728507cff726d7513695Brian Paul} 770813870fd9588de101f68728507cff726d7513695Brian Paul 771813870fd9588de101f68728507cff726d7513695Brian Paul 772eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 773eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format. 774eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format one of MESA_FORMAT_x 775eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc. 776eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 7775978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint 7785978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname) 7795978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 7805978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 7815978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 7825978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul switch (pname) { 783edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RED_BITS: 7845978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_RED_SIZE: 785edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_RED_SIZE_EXT: 786edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: 7875978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->RedBits; 788edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_GREEN_BITS: 7895978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_GREEN_SIZE: 790edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_GREEN_SIZE_EXT: 791edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 7925978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->GreenBits; 793edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_BLUE_BITS: 7945978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_BLUE_SIZE: 795edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_BLUE_SIZE_EXT: 796edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 7975978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->BlueBits; 798edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_ALPHA_BITS: 7995978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_ALPHA_SIZE: 800edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_ALPHA_SIZE_EXT: 801edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 8025978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->AlphaBits; 8035978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INTENSITY_SIZE: 8045978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IntensityBits; 8055978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_LUMINANCE_SIZE: 8065978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->LuminanceBits; 807edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_INDEX_BITS: 8085978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_INDEX_SIZE_EXT: 8095978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->IndexBits; 810edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_DEPTH_BITS: 8115978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_DEPTH_SIZE_ARB: 812edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_DEPTH_SIZE_EXT: 813edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 8145978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DepthBits; 815edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_STENCIL_BITS: 8165978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul case GL_TEXTURE_STENCIL_SIZE_EXT: 817edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_RENDERBUFFER_STENCIL_SIZE_EXT: 818edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 8195978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->StencilBits; 8205978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul default: 8215978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()"); 8225978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return 0; 8235978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul } 8245978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 8255978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 8265978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 827eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 828eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation) 829eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format. 830eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of: 831eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1] 832eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_SIGNED_NORMALIZED = signed int representing [-1, 1] 833eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_UNSIGNED_INT = an ordinary unsigned integer 834eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_FLOAT = an ordinary float 835eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 8365978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum 8375978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format) 8385978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{ 8395978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 8405978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul return info->DataType; 8415978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul} 8425978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 8435978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul 844eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** 845eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the basic format for the given type. The result will be 846eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, 847eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, GL_DEPTH_COMPONENT, 848eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_STENCIL_INDEX, GL_DEPTH_STENCIL. 849eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */ 850813870fd9588de101f68728507cff726d7513695Brian PaulGLenum 851813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format) 852813870fd9588de101f68728507cff726d7513695Brian Paul{ 853813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 854813870fd9588de101f68728507cff726d7513695Brian Paul return info->BaseFormat; 855813870fd9588de101f68728507cff726d7513695Brian Paul} 856813870fd9588de101f68728507cff726d7513695Brian Paul 857813870fd9588de101f68728507cff726d7513695Brian Paul 8587b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/** 8597b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format. Normally 8607b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1. But compressed formats will have block sizes 8617b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc. 8627b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw returns block width in pixels 8637b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh returns block height in pixels 8647b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */ 8657b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid 8667b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh) 8677b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{ 8687b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 8697b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bw = info->BlockWidth; 8707b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul *bh = info->BlockHeight; 8717b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul} 8727b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 8737b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul 874eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */ 875813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean 876813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format) 877813870fd9588de101f68728507cff726d7513695Brian Paul{ 878813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 879813870fd9588de101f68728507cff726d7513695Brian Paul return info->BlockWidth > 1 || info->BlockHeight > 1; 880813870fd9588de101f68728507cff726d7513695Brian Paul} 881813870fd9588de101f68728507cff726d7513695Brian Paul 882813870fd9588de101f68728507cff726d7513695Brian Paul 883813870fd9588de101f68728507cff726d7513695Brian Paul/** 884f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format. 885f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB 886f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */ 887f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum 888f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format) 889f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{ 890f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul /* XXX this info should be encoded in gl_format_info */ 891f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul switch (format) { 892f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB8: 893f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA8: 894f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SARGB8: 895f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SL8: 896f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SLA8: 897f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGB_DXT1: 898f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT1: 899f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT3: 900f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul case MESA_FORMAT_SRGBA_DXT5: 901f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_SRGB; 902f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul default: 903f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul return GL_LINEAR; 904f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul } 905f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul} 906f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 907f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul 908f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/** 9091c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size 9101c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format. 9111c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */ 9121c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint 9131c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width, 9141c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul GLsizei height, GLsizei depth) 9151c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{ 9161c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 917040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 9181c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 9191c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* compressed format */ 9201c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint bw = info->BlockWidth, bh = info->BlockHeight; 9211c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint wblocks = (width + bw - 1) / bw; 9221c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint hblocks = (height + bh - 1) / bh; 923040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint sz = wblocks * hblocks * info->BytesPerBlock; 9241c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 9251c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 9261c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul else { 9271c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul /* non-compressed */ 9281c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul const GLuint sz = width * height * depth * info->BytesPerBlock; 9291c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul return sz; 9301c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul } 9311c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul} 9321c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 9331c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 9341c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 935040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint 936040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width) 937040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{ 938040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const struct gl_format_info *info = _mesa_get_format_info(format); 939040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* Strictly speaking, a conditional isn't needed here */ 940040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul if (info->BlockWidth > 1 || info->BlockHeight > 1) { 941040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul /* compressed format */ 942040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint bw = info->BlockWidth; 943040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLuint wblocks = (width + bw - 1) / bw; 944040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = wblocks * info->BytesPerBlock; 945040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 946040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 947040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul else { 948040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul const GLint stride = width * info->BytesPerBlock; 949040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul return stride; 950040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul } 951040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul} 952040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 953040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul 9541c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul 9551c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/** 956813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table. 957813870fd9588de101f68728507cff726d7513695Brian Paul */ 958813870fd9588de101f68728507cff726d7513695Brian Paulvoid 959813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void) 960813870fd9588de101f68728507cff726d7513695Brian Paul{ 961813870fd9588de101f68728507cff726d7513695Brian Paul GLuint i; 962813870fd9588de101f68728507cff726d7513695Brian Paul 963813870fd9588de101f68728507cff726d7513695Brian Paul assert(Elements(format_info) == MESA_FORMAT_COUNT); 964813870fd9588de101f68728507cff726d7513695Brian Paul 965813870fd9588de101f68728507cff726d7513695Brian Paul for (i = 0; i < MESA_FORMAT_COUNT; i++) { 966813870fd9588de101f68728507cff726d7513695Brian Paul const struct gl_format_info *info = _mesa_get_format_info(i); 967813870fd9588de101f68728507cff726d7513695Brian Paul assert(info); 968813870fd9588de101f68728507cff726d7513695Brian Paul 969813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->Name == i); 970813870fd9588de101f68728507cff726d7513695Brian Paul 971e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul if (info->Name == MESA_FORMAT_NONE) 972e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul continue; 973e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul 974813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BlockWidth == 1 && info->BlockHeight == 1) { 975813870fd9588de101f68728507cff726d7513695Brian Paul if (info->RedBits > 0) { 976813870fd9588de101f68728507cff726d7513695Brian Paul GLuint t = info->RedBits + info->GreenBits 977813870fd9588de101f68728507cff726d7513695Brian Paul + info->BlueBits + info->AlphaBits; 978813870fd9588de101f68728507cff726d7513695Brian Paul assert(t / 8 == info->BytesPerBlock); 9796e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee (void) t; 980813870fd9588de101f68728507cff726d7513695Brian Paul } 981813870fd9588de101f68728507cff726d7513695Brian Paul } 982813870fd9588de101f68728507cff726d7513695Brian Paul 983813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->DataType == GL_UNSIGNED_NORMALIZED || 984813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_SIGNED_NORMALIZED || 985813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_UNSIGNED_INT || 986813870fd9588de101f68728507cff726d7513695Brian Paul info->DataType == GL_FLOAT); 987813870fd9588de101f68728507cff726d7513695Brian Paul 988813870fd9588de101f68728507cff726d7513695Brian Paul if (info->BaseFormat == GL_RGB) { 989813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 990813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 991813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 992813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 993813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 994813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 995813870fd9588de101f68728507cff726d7513695Brian Paul } 996813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_RGBA) { 997813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits > 0); 998813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits > 0); 999813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits > 0); 1000813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits > 0); 1001813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1002813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1003813870fd9588de101f68728507cff726d7513695Brian Paul } 1004813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_LUMINANCE) { 1005813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1006813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1007813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1008813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1009813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits > 0); 1010813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits == 0); 1011813870fd9588de101f68728507cff726d7513695Brian Paul } 1012813870fd9588de101f68728507cff726d7513695Brian Paul else if (info->BaseFormat == GL_INTENSITY) { 1013813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->RedBits == 0); 1014813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->GreenBits == 0); 1015813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->BlueBits == 0); 1016813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->AlphaBits == 0); 1017813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->LuminanceBits == 0); 1018813870fd9588de101f68728507cff726d7513695Brian Paul assert(info->IntensityBits > 0); 1019813870fd9588de101f68728507cff726d7513695Brian Paul } 1020813870fd9588de101f68728507cff726d7513695Brian Paul 1021813870fd9588de101f68728507cff726d7513695Brian Paul } 1022813870fd9588de101f68728507cff726d7513695Brian Paul} 1023813870fd9588de101f68728507cff726d7513695Brian Paul 1024813870fd9588de101f68728507cff726d7513695Brian Paul 1025019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1026813870fd9588de101f68728507cff726d7513695Brian Paul/** 1027019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format. 1028019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code. 1029813870fd9588de101f68728507cff726d7513695Brian Paul */ 1030813870fd9588de101f68728507cff726d7513695Brian Paulvoid 1031019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format, 1032019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul GLenum *datatype, GLuint *comps) 1033813870fd9588de101f68728507cff726d7513695Brian Paul{ 1034019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul switch (format) { 1035019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888: 1036019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA8888_REV: 1037019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888: 1038019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB8888_REV: 103974d61d03b54d72217d463c248468cdcd09320efcBrian Paul case MESA_FORMAT_XRGB8888: 1040019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1041019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1042019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1043019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB888: 1044019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_BGR888: 1045019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1046019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1047019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1048019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565: 1049019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB565_REV: 1050019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_5_6_5; 1051019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1052019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1053019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1054019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444: 1055019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB4444_REV: 1056019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_4_4_4_4; 1057019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1058019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1059019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1060019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555: 1061019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ARGB1555_REV: 1062019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV; 1063019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1064019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1065019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1066019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88: 1067019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_AL88_REV: 1068019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1069019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1070019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1071eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1072eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616: 1073eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick case MESA_FORMAT_AL1616_REV: 1074eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *datatype = GL_UNSIGNED_SHORT; 1075eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick *comps = 2; 1076eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick return; 1077eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick 1078019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB332: 1079019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE_3_3_2; 1080019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1081019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1082019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1083019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_A8: 1084019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_L8: 1085019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_I8: 1086019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_CI8: 1087813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1088813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1089019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1090019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1091019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR: 1092019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_YCBCR_REV: 1093019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_SHORT; 1094813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1095019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1096019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1097019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z24_S8: 1098019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1099019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1100019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1101019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1102019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_S8_Z24: 1103019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1104019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; /* XXX OK? */ 1105019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1106019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1107019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z16: 1108813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_SHORT; 1109019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1110019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1111019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1112e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul case MESA_FORMAT_X8_Z24: 1113e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *datatype = GL_UNSIGNED_INT; 1114e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul *comps = 1; 1115e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul return; 1116e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul 1117c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca case MESA_FORMAT_Z24_X8: 1118c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *datatype = GL_UNSIGNED_INT; 1119c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca *comps = 1; 1120c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca return; 1121c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca 1122019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_Z32: 1123019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_INT; 1124019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1125019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1126019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1127019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_DUDV8: 1128019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_BYTE; 1129813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 2; 1130019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1131019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1132019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888: 1133019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SIGNED_RGBA8888_REV: 1134813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_BYTE; 1135019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1136019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1137880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul 1138880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_R_16: 1139880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1140880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 1; 1141880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1142880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RG_16: 1143880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1144880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 2; 1145880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1146880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul case MESA_FORMAT_SIGNED_RGB_16: 1147880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *datatype = GL_SHORT; 1148880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul *comps = 3; 1149880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul return; 1150c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul case MESA_FORMAT_SIGNED_RGBA_16: 1151c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *datatype = GL_SHORT; 1152c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul *comps = 4; 1153c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul return; 1154019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1155019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1156019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB8: 1157019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1158019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1159019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1160019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA8: 1161019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SARGB8: 1162019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1163019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1164019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1165019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SL8: 1166019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1167813870fd9588de101f68728507cff726d7513695Brian Paul *comps = 1; 1168019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1169019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SLA8: 1170019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_UNSIGNED_BYTE; 1171019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1172019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1173019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1174019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1175019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1 1176019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FXT1: 1177019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FXT1: 1178019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1179019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc 1180019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_DXT1: 1181019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT1: 1182019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT3: 1183019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_DXT5: 1184019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB 1185019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGB_DXT1: 1186019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT1: 1187019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT3: 1188019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_SRGBA_DXT5: 1189019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1190019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul /* XXX generate error instead? */ 1191813870fd9588de101f68728507cff726d7513695Brian Paul *datatype = GL_UNSIGNED_BYTE; 1192019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 0; 1193019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1194019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif 1195019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1196019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT32: 1197019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1198019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1199019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1200019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGBA_FLOAT16: 1201019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1202019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 4; 1203019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1204019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT32: 1205019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1206019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1207019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1208019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_RGB_FLOAT16: 1209019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1210019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 3; 1211019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1212019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: 1213019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1214019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1215019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1216019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: 1217019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1218019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 2; 1219019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1220019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT32: 1221019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT32: 1222019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT32: 1223019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_FLOAT; 1224019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1225019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1226019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_ALPHA_FLOAT16: 1227019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_LUMINANCE_FLOAT16: 1228019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul case MESA_FORMAT_INTENSITY_FLOAT16: 1229019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = GL_HALF_FLOAT_ARB; 1230019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1231019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul return; 1232019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul 1233019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul default: 1234019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul _mesa_problem(NULL, "bad format in _mesa_format_to_type_and_comps"); 1235019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *datatype = 0; 1236019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul *comps = 1; 1237813870fd9588de101f68728507cff726d7513695Brian Paul } 1238813870fd9588de101f68728507cff726d7513695Brian Paul} 1239