1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/************************************************************************** 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (c) 2008-2010 VMware, Inc. 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * All Rights Reserved. 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * copy of this software and associated documentation files (the 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * "Software"), to deal in the Software without restriction, including 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * without limitation the rights to use, copy, modify, merge, publish, 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * distribute, sub license, and/or sell copies of the Software, and to 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * permit persons to whom the Software is furnished to do so, subject to 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the following conditions: 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The above copyright notice and this permission notice (including the 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * next paragraph) shall be included in all copies or substantial portions 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * of the Software. 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org **************************************************************************/ 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Mesa / Gallium format conversion and format selection code. 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \author Brian Paul 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/imports.h" 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/context.h" 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/glformats.h" 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/texstore.h" 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/image.h" 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/macros.h" 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "main/mfeatures.h" 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "pipe/p_context.h" 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "pipe/p_defines.h" 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "pipe/p_screen.h" 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "util/u_format.h" 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "st_context.h" 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "st_format.h" 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Translate Mesa format to Gallium format. 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgenum pipe_format 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_mesa_format_to_pipe_format(gl_format mesaFormat) 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (mesaFormat) { 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA8888: 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A8B8G8R8_UNORM; 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA8888_REV: 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8A8_UNORM; 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB8888: 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B8G8R8A8_UNORM; 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB8888_REV: 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A8R8G8B8_UNORM; 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBX8888: 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_X8B8G8R8_UNORM; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBX8888_REV: 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8X8_UNORM; 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_XRGB8888: 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B8G8R8X8_UNORM; 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_XRGB8888_REV: 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_X8R8G8B8_UNORM; 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB1555: 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B5G5R5A1_UNORM; 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB4444: 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B4G4R4A4_UNORM; 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB565: 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B5G6R5_UNORM; 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB332: 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B2G3R3_UNORM; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB2101010: 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B10G10R10A2_UNORM; 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_AL44: 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L4A4_UNORM; 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_AL88: 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8A8_UNORM; 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_AL1616: 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16A16_UNORM; 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_A8: 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A8_UNORM; 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_A16: 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A16_UNORM; 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_L8: 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8_UNORM; 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_L16: 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16_UNORM; 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_I8: 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I8_UNORM; 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_I16: 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I16_UNORM; 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z16: 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_Z16_UNORM; 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z32: 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_Z32_UNORM; 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z24_S8: 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_S8_UINT_Z24_UNORM; 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_S8_Z24: 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_Z24_UNORM_S8_UINT; 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z24_X8: 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_X8Z24_UNORM; 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_X8_Z24: 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_Z24X8_UNORM; 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_S8: 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_S8_UINT; 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z32_FLOAT: 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_Z32_FLOAT; 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_Z32_FLOAT_X24S8: 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_Z32_FLOAT_S8X24_UINT; 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_YCBCR: 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_UYVY; 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_texture_s3tc 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_DXT1: 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT1_RGB; 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_DXT1: 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT1_RGBA; 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_DXT3: 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT3_RGBA; 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_DXT5: 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT5_RGBA; 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_texture_sRGB 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SRGB_DXT1: 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT1_SRGB; 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SRGBA_DXT1: 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT1_SRGBA; 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SRGBA_DXT3: 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT3_SRGBA; 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SRGBA_DXT5: 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_DXT5_SRGBA; 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_texture_sRGB 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SLA8: 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8A8_SRGB; 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SL8: 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8_SRGB; 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SRGB8: 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8_SRGB; 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SRGBA8: 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A8B8G8R8_SRGB; 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SARGB8: 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B8G8R8A8_SRGB; 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_FLOAT32: 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32B32A32_FLOAT; 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_FLOAT16: 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16A16_FLOAT; 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_FLOAT32: 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32B32_FLOAT; 160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_FLOAT16: 161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16_FLOAT; 162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: 163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L32A32_FLOAT; 164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: 165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16A16_FLOAT; 166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_FLOAT32: 167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L32_FLOAT; 168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_FLOAT16: 169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16_FLOAT; 170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_FLOAT32: 171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A32_FLOAT; 172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_FLOAT16: 173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A16_FLOAT; 174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_FLOAT32: 175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I32_FLOAT; 176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_FLOAT16: 177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I16_FLOAT; 178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_FLOAT32: 179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32_FLOAT; 180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_FLOAT16: 181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16_FLOAT; 182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_FLOAT32: 183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32_FLOAT; 184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_FLOAT16: 185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16_FLOAT; 186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R8: 188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8_UNORM; 189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R16: 190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16_UNORM; 191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_GR88: 192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8_UNORM; 193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG1616: 194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16_UNORM; 195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_16: 196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16A16_UNORM; 197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* signed int formats */ 199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_UINT8: 200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A8_UINT; 201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_UINT16: 202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A16_UINT; 203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_UINT32: 204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A32_UINT; 205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_INT8: 207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A8_SINT; 208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_INT16: 209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A16_SINT; 210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ALPHA_INT32: 211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A32_SINT; 212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_UINT8: 214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I8_UINT; 215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_UINT16: 216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I16_UINT; 217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_UINT32: 218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I32_UINT; 219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_INT8: 221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I8_SINT; 222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_INT16: 223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I16_SINT; 224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_INTENSITY_INT32: 225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I32_SINT; 226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_UINT8: 228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8_UINT; 229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_UINT16: 230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16_UINT; 231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_UINT32: 232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L32_UINT; 233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_INT8: 235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8_SINT; 236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_INT16: 237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16_SINT; 238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_INT32: 239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L32_SINT; 240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_UINT8: 242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8A8_UINT; 243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_UINT16: 244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16A16_UINT; 245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_UINT32: 246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L32A32_UINT; 247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_INT8: 249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8A8_SINT; 250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_INT16: 251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16A16_SINT; 252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LUMINANCE_ALPHA_INT32: 253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L32A32_SINT; 254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_INT8: 256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8_SINT; 257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_INT8: 258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8_SINT; 259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_INT8: 260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8_SINT; 261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_INT8: 262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8A8_SINT; 263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_INT16: 264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16_SINT; 265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_INT16: 266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16_SINT; 267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_INT16: 268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16_SINT; 269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_INT16: 270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16A16_SINT; 271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_INT32: 272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32_SINT; 273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_INT32: 274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32_SINT; 275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_INT32: 276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32B32_SINT; 277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_INT32: 278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32B32A32_SINT; 279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* unsigned int formats */ 281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_UINT8: 282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8_UINT; 283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_UINT8: 284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8_UINT; 285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_UINT8: 286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8_UINT; 287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_UINT8: 288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8A8_UINT; 289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_UINT16: 290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16_UINT; 291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_UINT16: 292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16_UINT; 293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_UINT16: 294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16_UINT; 295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_UINT16: 296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16A16_UINT; 297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R_UINT32: 298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32_UINT; 299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_UINT32: 300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32_UINT; 301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB_UINT32: 302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32B32_UINT; 303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGBA_UINT32: 304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R32G32B32A32_UINT; 305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RED_RGTC1: 307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_RGTC1_UNORM; 308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_RED_RGTC1: 309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_RGTC1_SNORM; 310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RG_RGTC2: 311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_RGTC2_UNORM; 312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_RG_RGTC2: 313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_RGTC2_SNORM; 314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_L_LATC1: 316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_LATC1_UNORM; 317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_L_LATC1: 318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_LATC1_SNORM; 319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_LA_LATC2: 320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_LATC2_UNORM; 321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_LA_LATC2: 322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_LATC2_SNORM; 323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ETC1_RGB8: 325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_ETC1_RGB8; 326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* signed normalized formats */ 328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_R8: 329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8_SNORM; 330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_RG88_REV: 331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8_SNORM; 332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_RGBA8888_REV: 333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R8G8B8A8_SNORM; 334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_A8: 336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A8_SNORM; 337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_L8: 338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8_SNORM; 339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_AL88: 340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L8A8_SNORM; 341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_I8: 342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I8_SNORM; 343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_R16: 345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16_SNORM; 346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_GR1616: 347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16_SNORM; 348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_RGBA_16: 349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R16G16B16A16_SNORM; 350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_A16: 352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_A16_SNORM; 353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_L16: 354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16_SNORM; 355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_AL1616: 356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_L16A16_SNORM; 357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_SIGNED_I16: 358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_I16_SNORM; 359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_RGB9_E5_FLOAT: 361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R9G9B9E5_FLOAT; 362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_R11_G11_B10_FLOAT: 363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_R11G11B10_FLOAT; 364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MESA_FORMAT_ARGB2101010_UINT: 365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_B10G10R10A2_UINT; 366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(0); 368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_NONE; 369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Translate Gallium format to Mesa format. 375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggl_format 377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_pipe_format_to_mesa_format(enum pipe_format format) 378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (format) { 380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A8B8G8R8_UNORM: 381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA8888; 382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8A8_UNORM: 383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA8888_REV; 384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B8G8R8A8_UNORM: 385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ARGB8888; 386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A8R8G8B8_UNORM: 387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ARGB8888_REV; 388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_X8B8G8R8_UNORM: 389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBX8888; 390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8X8_UNORM: 391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBX8888_REV; 392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B8G8R8X8_UNORM: 393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_XRGB8888; 394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_X8R8G8B8_UNORM: 395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_XRGB8888_REV; 396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B5G5R5A1_UNORM: 397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ARGB1555; 398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B4G4R4A4_UNORM: 399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ARGB4444; 400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B5G6R5_UNORM: 401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB565; 402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B2G3R3_UNORM: 403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB332; 404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B10G10R10A2_UNORM: 405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ARGB2101010; 406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L4A4_UNORM: 407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_AL44; 408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8A8_UNORM: 409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_AL88; 410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16A16_UNORM: 411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_AL1616; 412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A8_UNORM: 413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_A8; 414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A16_UNORM: 415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_A16; 416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8_UNORM: 417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_L8; 418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16_UNORM: 419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_L16; 420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I8_UNORM: 421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_I8; 422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I16_UNORM: 423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_I16; 424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_S8_UINT: 425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_S8; 426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16A16_UNORM: 428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_16; 429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_Z16_UNORM: 431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_Z16; 432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_Z32_UNORM: 433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_Z32; 434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_S8_UINT_Z24_UNORM: 435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_Z24_S8; 436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_X8Z24_UNORM: 437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_Z24_X8; 438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_Z24X8_UNORM: 439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_X8_Z24; 440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_Z24_UNORM_S8_UINT: 441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_S8_Z24; 442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_Z32_FLOAT: 443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_Z32_FLOAT; 444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT: 445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_Z32_FLOAT_X24S8; 446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_UYVY: 448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_YCBCR; 449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_YUYV: 450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_YCBCR_REV; 451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_texture_s3tc 453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT1_RGB: 454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_DXT1; 455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT1_RGBA: 456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_DXT1; 457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT3_RGBA: 458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_DXT3; 459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT5_RGBA: 460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_DXT5; 461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_texture_sRGB 462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT1_SRGB: 463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SRGB_DXT1; 464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT1_SRGBA: 465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SRGBA_DXT1; 466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT3_SRGBA: 467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SRGBA_DXT3; 468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_DXT5_SRGBA: 469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SRGBA_DXT5; 470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if FEATURE_EXT_texture_sRGB 474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8A8_SRGB: 475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SLA8; 476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8_SRGB: 477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SL8; 478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8_SRGB: 479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SRGB8; 480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A8B8G8R8_SRGB: 481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SRGBA8; 482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B8G8R8A8_SRGB: 483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SARGB8; 484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32B32A32_FLOAT: 486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_FLOAT32; 487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16A16_FLOAT: 488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_FLOAT16; 489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32B32_FLOAT: 490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_FLOAT32; 491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16_FLOAT: 492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_FLOAT16; 493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L32A32_FLOAT: 494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32; 495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16A16_FLOAT: 496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16; 497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L32_FLOAT: 498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_FLOAT32; 499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16_FLOAT: 500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_FLOAT16; 501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A32_FLOAT: 502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_FLOAT32; 503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A16_FLOAT: 504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_FLOAT16; 505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I32_FLOAT: 506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_FLOAT32; 507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I16_FLOAT: 508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_FLOAT16; 509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32_FLOAT: 510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_FLOAT32; 511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16_FLOAT: 512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_FLOAT16; 513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32_FLOAT: 514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_FLOAT32; 515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16_FLOAT: 516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_FLOAT16; 517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8_UNORM: 519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R8; 520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16_UNORM: 521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R16; 522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8_UNORM: 523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_GR88; 524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16_UNORM: 525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG1616; 526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A8_UINT: 528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_UINT8; 529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A16_UINT: 530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_UINT16; 531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A32_UINT: 532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_UINT32; 533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A8_SINT: 534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_INT8; 535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A16_SINT: 536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_INT16; 537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A32_SINT: 538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ALPHA_INT32; 539f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 540f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I8_UINT: 541f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_UINT8; 542f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I16_UINT: 543f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_UINT16; 544f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I32_UINT: 545f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_UINT32; 546f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I8_SINT: 547f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_INT8; 548f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I16_SINT: 549f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_INT16; 550f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I32_SINT: 551f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_INTENSITY_INT32; 552f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 553f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8_UINT: 554f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_UINT8; 555f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16_UINT: 556f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_UINT16; 557f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L32_UINT: 558f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_UINT32; 559f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8_SINT: 560f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_INT8; 561f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16_SINT: 562f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_INT16; 563f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L32_SINT: 564f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_INT32; 565f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 566f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8A8_UINT: 567f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_UINT8; 568f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16A16_UINT: 569f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_UINT16; 570f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L32A32_UINT: 571f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_UINT32; 572f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8A8_SINT: 573f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_INT8; 574f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16A16_SINT: 575f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_INT16; 576f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L32A32_SINT: 577f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LUMINANCE_ALPHA_INT32; 578f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 579f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8_SINT: 580f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_INT8; 581f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8_SINT: 582f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_INT8; 583f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8_SINT: 584f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_INT8; 585f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8A8_SINT: 586f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_INT8; 587f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 588f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16_SINT: 589f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_INT16; 590f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16_SINT: 591f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_INT16; 592f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16_SINT: 593f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_INT16; 594f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16A16_SINT: 595f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_INT16; 596f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 597f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32_SINT: 598f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_INT32; 599f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32_SINT: 600f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_INT32; 601f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32B32_SINT: 602f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_INT32; 603f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32B32A32_SINT: 604f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_INT32; 605f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 606f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* unsigned int formats */ 607f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8_UINT: 608f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_UINT8; 609f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8_UINT: 610f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_UINT8; 611f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8_UINT: 612f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_UINT8; 613f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8A8_UINT: 614f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_UINT8; 615f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 616f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16_UINT: 617f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_UINT16; 618f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16_UINT: 619f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_UINT16; 620f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16_UINT: 621f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_UINT16; 622f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16A16_UINT: 623f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_UINT16; 624f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 625f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32_UINT: 626f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R_UINT32; 627f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32_UINT: 628f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_UINT32; 629f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32B32_UINT: 630f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB_UINT32; 631f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R32G32B32A32_UINT: 632f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGBA_UINT32; 633f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 634f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_RGTC1_UNORM: 635f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RED_RGTC1; 636f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_RGTC1_SNORM: 637f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_RED_RGTC1; 638f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_RGTC2_UNORM: 639f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RG_RGTC2; 640f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_RGTC2_SNORM: 641f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_RG_RGTC2; 642f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 643f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_LATC1_UNORM: 644f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_L_LATC1; 645f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_LATC1_SNORM: 646f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_L_LATC1; 647f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_LATC2_UNORM: 648f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_LA_LATC2; 649f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_LATC2_SNORM: 650f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_LA_LATC2; 651f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 652f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_ETC1_RGB8: 653f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ETC1_RGB8; 654f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 655f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* signed normalized formats */ 656f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8_SNORM: 657f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_R8; 658f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8_SNORM: 659f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_RG88_REV; 660f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R8G8B8A8_SNORM: 661f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_RGBA8888_REV; 662f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 663f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A8_SNORM: 664f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_A8; 665f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8_SNORM: 666f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_L8; 667f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L8A8_SNORM: 668f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_AL88; 669f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I8_SNORM: 670f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_I8; 671f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 672f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16_SNORM: 673f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_R16; 674f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16_SNORM: 675f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_GR1616; 676f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R16G16B16A16_SNORM: 677f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_RGBA_16; 678f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 679f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_A16_SNORM: 680f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_A16; 681f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16_SNORM: 682f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_L16; 683f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_L16A16_SNORM: 684f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_AL1616; 685f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_I16_SNORM: 686f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_SIGNED_I16; 687f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 688f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R9G9B9E5_FLOAT: 689f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_RGB9_E5_FLOAT; 690f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_R11G11B10_FLOAT: 691f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_R11_G11_B10_FLOAT; 692f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 693f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case PIPE_FORMAT_B10G10R10A2_UINT: 694f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_ARGB2101010_UINT; 695f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 696f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org assert(0); 697f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_NONE; 698f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 699f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 700f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 701f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 702f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 703f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Map GL texture formats to Gallium pipe formats. 704f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 705f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct format_mapping 706f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 707f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum glFormats[18]; /**< list of GLenum formats, 0-terminated */ 708f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum pipe_format pipeFormats[10]; /**< list of pipe formats, 0-terminated */ 709f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 710f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 711f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 712f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define DEFAULT_RGBA_FORMATS \ 713f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_B8G8R8A8_UNORM, \ 714f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A8R8G8B8_UNORM, \ 715f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A8B8G8R8_UNORM, \ 716f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_B5G6R5_UNORM, \ 717f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 0 718f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 719f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define DEFAULT_RGB_FORMATS \ 720f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_B8G8R8X8_UNORM, \ 721f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_X8R8G8B8_UNORM, \ 722f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_X8B8G8R8_UNORM, \ 723f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_B8G8R8A8_UNORM, \ 724f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A8R8G8B8_UNORM, \ 725f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A8B8G8R8_UNORM, \ 726f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_B5G6R5_UNORM, \ 727f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 0 728f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 729f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define DEFAULT_SRGBA_FORMATS \ 730f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_B8G8R8A8_SRGB, \ 731f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A8R8G8B8_SRGB, \ 732f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A8B8G8R8_SRGB, \ 733f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 0 734f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 735f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define DEFAULT_DEPTH_FORMATS \ 736f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_Z24X8_UNORM, \ 737f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_X8Z24_UNORM, \ 738f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_Z16_UNORM, \ 739f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_Z24_UNORM_S8_UINT, \ 740f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_S8_UINT_Z24_UNORM, \ 741f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 0 742f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 743f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define DEFAULT_SNORM8_RGBA_FORMATS \ 744f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8G8B8A8_SNORM, \ 745f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 0 746f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 747f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define DEFAULT_UNORM16_RGBA_FORMATS \ 748f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16B16A16_UNORM, \ 749f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org DEFAULT_RGBA_FORMATS 750f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 751f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 752f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 753f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * This table maps OpenGL texture format enums to Gallium pipe_format enums. 754f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Multiple GL enums might map to multiple pipe_formats. 755f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The first pipe format in the list that's supported is the one that's chosen. 756f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 757f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic const struct format_mapping format_map[] = { 758f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Basic RGB, RGBA formats */ 759f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 760f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB10, GL_RGB10_A2, 0 }, 761f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B10G10R10A2_UNORM, DEFAULT_RGBA_FORMATS } 762f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 763f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 764f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 4, GL_RGBA, GL_RGBA8, 0 }, 765f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8B8A8_UNORM, DEFAULT_RGBA_FORMATS } 766f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 767f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 768f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, 0 }, 769f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B8G8R8A8_UNORM, DEFAULT_RGBA_FORMATS } 770f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 771f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 772f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 3, GL_RGB, GL_RGB8, 0 }, 773f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { DEFAULT_RGB_FORMATS } 774f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 775f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 776f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB12, GL_RGB16, GL_RGBA12, GL_RGBA16, 0 }, 777f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16A16_UNORM, DEFAULT_RGBA_FORMATS } 778f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 779f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 780f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA4, GL_RGBA2, 0 }, 781f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B4G4R4A4_UNORM, DEFAULT_RGBA_FORMATS } 782f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 783f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 784f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB5_A1, 0 }, 785f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B5G5R5A1_UNORM, DEFAULT_RGBA_FORMATS } 786f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 787f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 788f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R3_G3_B2, 0 }, 789f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B2G3R3_UNORM, PIPE_FORMAT_B5G6R5_UNORM, 790f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_B5G5R5A1_UNORM, DEFAULT_RGBA_FORMATS } 791f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 792f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 793f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB5, GL_RGB4 }, 794f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B5G6R5_UNORM, PIPE_FORMAT_B5G5R5A1_UNORM, 795f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org DEFAULT_RGBA_FORMATS } 796f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 797f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 798f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB565 }, 799f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B5G6R5_UNORM, DEFAULT_RGBA_FORMATS } 800f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 801f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 802f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* basic Alpha formats */ 803f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 804f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA12, GL_ALPHA16, 0 }, 805f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A16_UNORM, PIPE_FORMAT_A8_UNORM, 806f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org DEFAULT_RGBA_FORMATS } 807f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 808f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 809f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA, GL_ALPHA4, GL_ALPHA8, GL_COMPRESSED_ALPHA, 0 }, 810f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A8_UNORM, DEFAULT_RGBA_FORMATS } 811f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 812f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 813f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* basic Luminance formats */ 814f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 815f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE12, GL_LUMINANCE16, 0 }, 816f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16_UNORM, PIPE_FORMAT_L8_UNORM, DEFAULT_RGB_FORMATS } 817f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 818f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 819f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1, GL_LUMINANCE, GL_LUMINANCE4, GL_LUMINANCE8, 0 }, 820f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8_UNORM, DEFAULT_RGB_FORMATS } 821f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 822f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 823f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* basic Luminance/Alpha formats */ 824f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 825f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE12_ALPHA4, GL_LUMINANCE12_ALPHA12, 826f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_LUMINANCE16_ALPHA16, 0}, 827f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16A16_UNORM, PIPE_FORMAT_L8A8_UNORM, 828f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org DEFAULT_RGBA_FORMATS } 829f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 830f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 831f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 2, GL_LUMINANCE_ALPHA, GL_LUMINANCE6_ALPHA2, GL_LUMINANCE8_ALPHA8, 0 }, 832f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8A8_UNORM, DEFAULT_RGBA_FORMATS } 833f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 834f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 835f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE4_ALPHA4, 0 }, 836f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L4A4_UNORM, PIPE_FORMAT_L8A8_UNORM, 837f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org DEFAULT_RGBA_FORMATS } 838f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 839f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 840f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* basic Intensity formats */ 841f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 842f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY12, GL_INTENSITY16, 0 }, 843f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I16_UNORM, PIPE_FORMAT_I8_UNORM, DEFAULT_RGBA_FORMATS } 844f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 845f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 846f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY, GL_INTENSITY4, GL_INTENSITY8, 847f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_COMPRESSED_INTENSITY, 0 }, 848f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I8_UNORM, DEFAULT_RGBA_FORMATS } 849f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 850f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 851f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* YCbCr */ 852f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 853f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_YCBCR_MESA, 0 }, 854f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_UYVY, PIPE_FORMAT_YUYV, 0 } 855f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 856f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 857f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* compressed formats */ /* XXX PIPE_BIND_SAMPLER_VIEW only */ 858f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 859f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RGB, 0 }, 860f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT1_RGB, DEFAULT_RGB_FORMATS } 861f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 862f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 863f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RGBA, 0 }, 864f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT5_RGBA, DEFAULT_RGBA_FORMATS } 865f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 866f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 867f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB_S3TC, GL_RGB4_S3TC, GL_COMPRESSED_RGB_S3TC_DXT1_EXT, 0 }, 868f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT1_RGB, 0 } 869f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 870f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 871f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, 0 }, 872f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT1_RGBA, 0 } 873f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 874f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 875f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA_S3TC, GL_RGBA4_S3TC, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, 0 }, 876f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT3_RGBA, 0 } 877f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 878f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 879f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, 0 }, 880f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT5_RGBA, 0 } 881f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 882f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 883f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if 0 884f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 885f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RGB_FXT1_3DFX, 0 }, 886f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_RGB_FXT1, 0 } 887f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 888f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 889f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RGBA_FXT1_3DFX, 0 }, 890f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_RGBA_FXT1, 0 } 891f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 892f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 893f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 894f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Depth formats */ 895f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 896f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_DEPTH_COMPONENT16, 0 }, 897f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_Z16_UNORM, DEFAULT_DEPTH_FORMATS } 898f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 899f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 900f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_DEPTH_COMPONENT24, 0 }, 901f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_Z24X8_UNORM, PIPE_FORMAT_X8Z24_UNORM, 902f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org DEFAULT_DEPTH_FORMATS } 903f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 904f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 905f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_DEPTH_COMPONENT32, 0 }, 906f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_Z32_UNORM, DEFAULT_DEPTH_FORMATS } 907f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 908f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 909f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_DEPTH_COMPONENT, 0 }, 910f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { DEFAULT_DEPTH_FORMATS } 911f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 912f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 913f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_DEPTH_COMPONENT32F, 0 }, 914f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_Z32_FLOAT, 0 } 915f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 916f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 917f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* stencil formats */ 918f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 919f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_STENCIL_INDEX, GL_STENCIL_INDEX1_EXT, GL_STENCIL_INDEX4_EXT, 920f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_STENCIL_INDEX8_EXT, GL_STENCIL_INDEX16_EXT, 0 }, 921f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 922f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_S8_UINT, PIPE_FORMAT_Z24_UNORM_S8_UINT, 923f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_S8_UINT_Z24_UNORM, 0 924f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 925f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 926f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 927f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Depth / Stencil formats */ 928f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 929f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_DEPTH_STENCIL_EXT, GL_DEPTH24_STENCIL8_EXT, 0 }, 930f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_Z24_UNORM_S8_UINT, PIPE_FORMAT_S8_UINT_Z24_UNORM, 0 } 931f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 932f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 933f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_DEPTH32F_STENCIL8, 0 }, 934f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_Z32_FLOAT_S8X24_UINT, 0 } 935f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 936f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 937f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* sRGB formats */ 938f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 939f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_SRGB_EXT, GL_SRGB8_EXT, GL_SRGB_ALPHA_EXT, GL_SRGB8_ALPHA8_EXT, 0 }, 940f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { DEFAULT_SRGBA_FORMATS } 941f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 942f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 943f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SRGB_EXT, GL_COMPRESSED_SRGB_S3TC_DXT1_EXT, 0 }, 944f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT1_SRGB, DEFAULT_SRGBA_FORMATS } 945f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 946f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 947f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, 0 }, 948f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT1_SRGBA, 0 } 949f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 950f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 951f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SRGB_ALPHA_EXT, 952f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, 0 }, 953f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT3_SRGBA, DEFAULT_SRGBA_FORMATS } 954f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 955f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 956f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, 0 }, 957f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_DXT5_SRGBA, 0 } 958f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 959f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 960f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_SLUMINANCE_ALPHA_EXT, GL_SLUMINANCE8_ALPHA8_EXT, 961f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_COMPRESSED_SLUMINANCE_EXT, GL_COMPRESSED_SLUMINANCE_ALPHA_EXT, 0 }, 962f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8A8_SRGB, DEFAULT_SRGBA_FORMATS } 963f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 964f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 965f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_SLUMINANCE_EXT, GL_SLUMINANCE8_EXT, 0 }, 966f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8_SRGB, DEFAULT_SRGBA_FORMATS } 967f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 968f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 969f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* 16-bit float formats */ 970f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 971f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA16F_ARB, 0 }, 972f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16A16_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 973f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 974f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 975f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB16F_ARB, 0 }, 976f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 977f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 978f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 979f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 980f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA16F_ARB, 0 }, 981f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 982f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 983f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 984f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 985f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA16F_ARB, 0 }, 986f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A16_FLOAT, PIPE_FORMAT_L16A16_FLOAT, 987f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 988f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 989f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 990f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 991f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY16F_ARB, 0 }, 992f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I16_FLOAT, PIPE_FORMAT_L16A16_FLOAT, 993f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_I32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 994f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 995f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 996f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 997f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE16F_ARB, 0 }, 998f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16_FLOAT, PIPE_FORMAT_L16A16_FLOAT, 999f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 1000f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 1001f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1002f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1003f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R16F, 0 }, 1004f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16_FLOAT, PIPE_FORMAT_R16G16_FLOAT, 1005f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 1006f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 1007f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1008f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1009f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG16F, 0 }, 1010f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 1011f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 0 } 1012f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1013f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1014f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* 32-bit float formats */ 1015f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1016f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA32F_ARB, 0 }, 1017f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1018f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1019f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1020f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB32F_ARB, 0 }, 1021f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 1022f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1023f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1024f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1025f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA32F_ARB, 0 }, 1026f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L32A32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 1027f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1028f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1029f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1030f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA32F_ARB, 0 }, 1031f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A32_FLOAT, PIPE_FORMAT_L32A32_FLOAT, 1032f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_A16_FLOAT, 1033f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1034f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1035f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1036f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY32F_ARB, 0 }, 1037f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I32_FLOAT, PIPE_FORMAT_L32A32_FLOAT, 1038f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_I16_FLOAT, 1039f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1040f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1041f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1042f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE32F_ARB, 0 }, 1043f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L32_FLOAT, PIPE_FORMAT_L32A32_FLOAT, 1044f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_L16_FLOAT, 1045f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L16A16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1046f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1047f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1048f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R32F, 0 }, 1049f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32_FLOAT, PIPE_FORMAT_R32G32_FLOAT, 1050f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_R16_FLOAT, 1051f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1052f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1053f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1054f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG32F, 0 }, 1055f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, 1056f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, 0 } 1057f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1058f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1059f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* R, RG formats */ 1060f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1061f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RED, GL_R8, 0 }, 1062f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8_UNORM, PIPE_FORMAT_R8G8_UNORM, DEFAULT_RGBA_FORMATS } 1063f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1064f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1065f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG, GL_RG8, 0 }, 1066f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8_UNORM, DEFAULT_RGBA_FORMATS } 1067f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1068f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1069f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R16, 0 }, 1070f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16_UNORM, PIPE_FORMAT_R16G16_UNORM, 1071f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org DEFAULT_UNORM16_RGBA_FORMATS } 1072f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1073f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1074f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG16, 0 }, 1075f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16_UNORM, DEFAULT_UNORM16_RGBA_FORMATS } 1076f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1077f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1078f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* compressed R, RG formats */ 1079f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1080f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RED, GL_COMPRESSED_RED_RGTC1, 0 }, 1081f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_RGTC1_UNORM, PIPE_FORMAT_R8_UNORM, DEFAULT_RGBA_FORMATS } 1082f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1083f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1084f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SIGNED_RED_RGTC1, 0 }, 1085f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_RGTC1_SNORM, DEFAULT_SNORM8_RGBA_FORMATS } 1086f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1087f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1088f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_RG, GL_COMPRESSED_RG_RGTC2, 0 }, 1089f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_RGTC2_UNORM, PIPE_FORMAT_R8G8_UNORM, DEFAULT_RGBA_FORMATS } 1090f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1091f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1092f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SIGNED_RG_RGTC2, 0 }, 1093f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_RGTC2_SNORM, DEFAULT_SNORM8_RGBA_FORMATS } 1094f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1095f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1096f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_LUMINANCE, GL_COMPRESSED_LUMINANCE_LATC1_EXT, 0 }, 1097f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_LATC1_UNORM, PIPE_FORMAT_L8_UNORM, DEFAULT_RGBA_FORMATS } 1098f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1099f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT, 0 }, 1101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_LATC1_SNORM, DEFAULT_SNORM8_RGBA_FORMATS } 1102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_LUMINANCE_ALPHA, GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT, 1105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI, 0 }, 1106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_LATC2_UNORM, PIPE_FORMAT_L8A8_UNORM, DEFAULT_RGBA_FORMATS } 1107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT, 0 }, 1110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_LATC2_SNORM, DEFAULT_SNORM8_RGBA_FORMATS } 1111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* ETC1 */ 1114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ETC1_RGB8_OES, 0 }, 1116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_ETC1_RGB8, 0 } 1117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* signed/unsigned integer formats. 1120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RED_INTEGER_EXT, 1123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_GREEN_INTEGER_EXT, 1124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_BLUE_INTEGER_EXT, 1125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_RGBA_INTEGER_EXT, 1126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_BGRA_INTEGER_EXT, 1127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_RGBA8I_EXT, 0 }, 1128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8B8A8_SINT, 0 } 1129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB_INTEGER_EXT, 1132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_BGR_INTEGER_EXT, 1133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_RGB8I_EXT, 0 }, 1134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8B8_SINT, 1135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8G8B8A8_SINT, 0 } 1136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA_INTEGER_EXT, 1139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_ALPHA8I_EXT, 0 }, 1140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A8_SINT, 0 } 1141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA16I_EXT, 0 }, 1144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A16_SINT, 0 } 1145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA32I_EXT, 0 }, 1148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A32_SINT, 0 } 1149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA8UI_EXT, 0 }, 1152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A8_UINT, 0 } 1153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA16UI_EXT, 0 }, 1156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A16_UINT, 0 } 1157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA32UI_EXT, 0 }, 1160f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A32_UINT, 0 } 1161f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1162f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1163f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY8I_EXT, 0 }, 1164f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I8_SINT, 0 } 1165f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1166f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1167f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY16I_EXT, 0 }, 1168f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I16_SINT, 0 } 1169f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1170f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1171f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY32I_EXT, 0 }, 1172f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I32_SINT, 0 } 1173f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1174f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1175f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY8UI_EXT, 0 }, 1176f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I8_UINT, 0 } 1177f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1178f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1179f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY16UI_EXT, 0 }, 1180f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I16_UINT, 0 } 1181f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1182f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1183f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY32UI_EXT, 0 }, 1184f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I32_UINT, 0 } 1185f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1186f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1187f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE8I_EXT, 0 }, 1188f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8_SINT, 0 } 1189f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1190f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1191f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE16I_EXT, 0 }, 1192f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16_SINT, 0 } 1193f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1194f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1195f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE32I_EXT, 0 }, 1196f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L32_SINT, 0 } 1197f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1198f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1199f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_INTEGER_EXT, 1200f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_LUMINANCE8UI_EXT, 0 }, 1201f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8_UINT, 0 } 1202f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1203f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1204f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE16UI_EXT, 0 }, 1205f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16_UINT, 0 } 1206f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1207f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1208f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE32UI_EXT, 0 }, 1209f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L32_UINT, 0 } 1210f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1211f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1212f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA_INTEGER_EXT, 1213f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GL_LUMINANCE_ALPHA8I_EXT, 0 }, 1214f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8A8_SINT, 0 } 1215f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1216f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1217f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA16I_EXT, 0 }, 1218f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16A16_SINT, 0 } 1219f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1220f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1221f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA32I_EXT, 0 }, 1222f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L32A32_SINT, 0 } 1223f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1224f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1225f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA8UI_EXT, 0 }, 1226f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8A8_UINT, 0 } 1227f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1228f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1229f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA16UI_EXT, 0 }, 1230f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16A16_UINT, 0 } 1231f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1232f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1233f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA32UI_EXT, 0 }, 1234f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L32A32_UINT, 0 } 1235f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1236f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1237f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB16I_EXT, 0 }, 1238f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16_SINT, 1239f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16B16A16_SINT, 0 }, 1240f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1241f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1242f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA16I_EXT, 0 }, 1243f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16A16_SINT, 0 }, 1244f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1245f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1246f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB32I_EXT, 0 }, 1247f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32B32_SINT, 1248f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32B32A32_SINT, 0 }, 1249f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1250f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1251f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA32I_EXT, 0 }, 1252f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32B32A32_SINT, 0 } 1253f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1254f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1255f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA8UI_EXT, 0 }, 1256f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8B8A8_UINT, 0 } 1257f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1258f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1259f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB8UI_EXT, 0 }, 1260f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8B8_UINT, 1261f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8G8B8A8_UINT, 0 } 1262f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1263f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1264f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB16UI_EXT, 0 }, 1265f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16_UINT, 1266f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16B16A16_UINT, 0 } 1267f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1268f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1269f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA16UI_EXT, 0 }, 1270f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16A16_UINT, 0 } 1271f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1272f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1273f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB32UI_EXT, 0}, 1274f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32B32_UINT, 1275f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R32G32B32A32_UINT, 0 } 1276f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1277f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1278f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA32UI_EXT, 0}, 1279f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32B32A32_UINT, 0 } 1280f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1281f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1282f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R8I, 0}, 1283f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8_SINT, 0}, 1284f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1285f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1286f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R16I, 0}, 1287f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16_SINT, 0}, 1288f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1289f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1290f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R32I, 0}, 1291f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32_SINT, 0}, 1292f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1293f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1294f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R8UI, 0}, 1295f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8_UINT, 0}, 1296f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1297f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1298f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R16UI, 0}, 1299f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16_UINT, 0}, 1300f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1301f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1302f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R32UI, 0}, 1303f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32_UINT, 0}, 1304f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1305f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1306f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG8I, 0}, 1307f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8_SINT, 0}, 1308f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1309f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1310f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG16I, 0}, 1311f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16_SINT, 0}, 1312f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1313f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1314f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG32I, 0}, 1315f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32_SINT, 0}, 1316f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1317f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1318f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG8UI, 0}, 1319f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8_UINT, 0}, 1320f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1321f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1322f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG16UI, 0}, 1323f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16_UINT, 0}, 1324f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1325f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1326f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG32UI, 0}, 1327f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R32G32_UINT, 0}, 1328f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1329f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* signed normalized formats */ 1330f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1331f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RED_SNORM, GL_R8_SNORM, 0 }, 1332f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8_SNORM, PIPE_FORMAT_R8G8_SNORM, 1333f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1334f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1335f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1336f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R16_SNORM, 0 }, 1337f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16_SNORM, 1338f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16_SNORM, 1339f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R16G16B16A16_SNORM, 1340f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8_SNORM, 1341f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8G8_SNORM, 1342f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1343f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1344f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1345f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG_SNORM, GL_RG8_SNORM, 0 }, 1346f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1347f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1348f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1349f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RG16_SNORM, 0 }, 1350f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM, 1351f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_R8G8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1352f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1353f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1354f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB_SNORM, GL_RGB8_SNORM, GL_RGBA_SNORM, GL_RGBA8_SNORM, 0 }, 1355f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1356f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1357f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1358f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB16_SNORM, GL_RGBA16_SNORM, 0 }, 1359f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R16G16B16A16_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1360f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1361f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1362f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA_SNORM, GL_ALPHA8_SNORM, 0 }, 1363f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1364f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1365f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1366f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ALPHA16_SNORM, 0 }, 1367f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_A16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM, 1368f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1369f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1370f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1371f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_SNORM, GL_LUMINANCE8_SNORM, 0 }, 1372f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1373f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1374f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1375f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE16_SNORM, 0 }, 1376f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM, 1377f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1378f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1379f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1380f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE_ALPHA_SNORM, GL_LUMINANCE8_ALPHA8_SNORM, 0 }, 1381f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L8A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1382f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1383f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1384f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_LUMINANCE16_ALPHA16_SNORM, 0 }, 1385f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_L16A16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM, 1386f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_L8A8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1387f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1388f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1389f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY_SNORM, GL_INTENSITY8_SNORM, 0 }, 1390f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1391f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1392f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1393f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_INTENSITY16_SNORM, 0 }, 1394f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_I16_SNORM, PIPE_FORMAT_R16G16B16A16_SNORM, 1395f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_FORMAT_I8_SNORM, PIPE_FORMAT_R8G8B8A8_SNORM, 0 } 1396f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1397f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1398f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB9_E5, 0 }, 1399f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R9G9B9E5_FLOAT, 0 } 1400f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1401f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1402f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_R11F_G11F_B10F, 0 }, 1403f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_R11G11B10_FLOAT, 0 } 1404f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1405f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 1406f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGB10_A2UI, 0 }, 1407f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { PIPE_FORMAT_B10G10R10A2_UINT, 0 } 1408f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }, 1409f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 1410f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1411f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1412f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 1413f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Return first supported format from the given list. 1414f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1415f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic enum pipe_format 1416f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgfind_supported_format(struct pipe_screen *screen, 1417f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const enum pipe_format formats[], 1418f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum pipe_texture_target target, 1419f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned sample_count, 1420f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned tex_usage) 1421f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1422f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint i; 1423f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; formats[i]; i++) { 1424f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (screen->is_format_supported(screen, formats[i], target, 1425f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sample_count, tex_usage)) { 1426f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return formats[i]; 1427f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1428f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1429f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_NONE; 1430f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1431f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1432f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct exact_format_mapping 1433f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1434f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum format; 1435f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum type; 1436f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum pipe_format pformat; 1437f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 1438f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1439f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic const struct exact_format_mapping rgba8888_tbl[] = 1440f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1441f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, PIPE_FORMAT_A8B8G8R8_UNORM }, 1442f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, PIPE_FORMAT_A8B8G8R8_UNORM }, 1443f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, PIPE_FORMAT_R8G8B8A8_UNORM }, 1444f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8, PIPE_FORMAT_R8G8B8A8_UNORM }, 1445f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, PIPE_FORMAT_A8R8G8B8_UNORM }, 1446f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, PIPE_FORMAT_B8G8R8A8_UNORM }, 1447f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA, GL_UNSIGNED_BYTE, PIPE_FORMAT_R8G8B8A8_UNORM }, 1448f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_BYTE, PIPE_FORMAT_A8B8G8R8_UNORM }, 1449f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, GL_UNSIGNED_BYTE, PIPE_FORMAT_B8G8R8A8_UNORM }, 1450f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 0 } 1451f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 1452f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1453f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic const struct exact_format_mapping rgbx8888_tbl[] = 1454f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1455f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, PIPE_FORMAT_X8R8G8B8_UNORM }, 1456f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, PIPE_FORMAT_B8G8R8X8_UNORM }, 1457f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, GL_UNSIGNED_BYTE, PIPE_FORMAT_B8G8R8X8_UNORM }, 1458f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* No Mesa formats for these Gallium formats: 1459f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, PIPE_FORMAT_X8B8G8R8_UNORM }, 1460f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, PIPE_FORMAT_X8B8G8R8_UNORM }, 1461f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, PIPE_FORMAT_R8G8B8X8_UNORM }, 1462f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_INT_8_8_8_8, PIPE_FORMAT_R8G8B8X8_UNORM }, 1463f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA, GL_UNSIGNED_BYTE, PIPE_FORMAT_R8G8B8X8_UNORM }, 1464f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_BYTE, PIPE_FORMAT_X8B8G8R8_UNORM }, 1465f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1466f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 0 } 1467f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 1468f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1469f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic const struct exact_format_mapping rgba1010102_tbl[] = 1470f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1471f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV, PIPE_FORMAT_B10G10R10A2_UNORM }, 1472f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* No Mesa formats for these Gallium formats: 1473f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, PIPE_FORMAT_R10G10B10A2_UNORM }, 1474f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_INT_10_10_10_2, PIPE_FORMAT_R10G10B10A2_UNORM }, 1475f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { GL_ABGR_EXT, GL_UNSIGNED_INT, PIPE_FORMAT_R10G10B10A2_UNORM }, 1476f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1477f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { 0, 0, 0 } 1478f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 1479f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1480f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 1481f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * If there is an exact pipe_format match for {internalFormat, format, type} 1482f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * return that, otherwise return PIPE_FORMAT_NONE so we can do fuzzy matching. 1483f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1484f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstatic enum pipe_format 1485f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgfind_exact_format(GLint internalFormat, GLenum format, GLenum type) 1486f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1487f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint i; 1488f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const struct exact_format_mapping* tbl; 1489f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1490f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format == GL_NONE || type == GL_NONE) 1491f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_NONE; 1492f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1493f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (internalFormat) { 1494f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case 4: 1495f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RGBA: 1496f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RGBA8: 1497f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org tbl = rgba8888_tbl; 1498f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1499f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case 3: 1500f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RGB: 1501f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RGB8: 1502f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org tbl = rgbx8888_tbl; 1503f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1504f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RGB10_A2: 1505f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org tbl = rgba1010102_tbl; 1506f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1507f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1508f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_NONE; 1509f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1510f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1511f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; tbl[i].format; i++) 1512f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (tbl[i].format == format && tbl[i].type == type) 1513f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return tbl[i].pformat; 1514f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1515f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_NONE; 1516f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1517f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1518f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 1519f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Given an OpenGL internalFormat value for a texture or surface, return 1520f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the best matching PIPE_FORMAT_x, or PIPE_FORMAT_NONE if there's no match. 1521f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * This is called during glTexImage2D, for example. 1522f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1523f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * The bindings parameter typically has PIPE_BIND_SAMPLER_VIEW set, plus 1524f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * either PIPE_BINDING_RENDER_TARGET or PIPE_BINDING_DEPTH_STENCIL if 1525f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * we want render-to-texture ability. 1526f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 1527f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \param internalFormat the user value passed to glTexImage2D 1528f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \param target one of PIPE_TEXTURE_x 1529f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * \param bindings bitmask of PIPE_BIND_x flags. 1530f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1531f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgenum pipe_format 1532f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_choose_format(struct pipe_screen *screen, GLenum internalFormat, 1533f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum format, GLenum type, 1534f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum pipe_texture_target target, unsigned sample_count, 1535f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned bindings) 1536f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1537f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GET_CURRENT_CONTEXT(ctx); /* XXX this should be a function parameter */ 1538f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int i, j; 1539f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum pipe_format pf; 1540f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1541f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* can't render to compressed formats at this time */ 1542f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (_mesa_is_compressed_format(ctx, internalFormat) 1543f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org && (bindings & ~PIPE_BIND_SAMPLER_VIEW)) { 1544f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_NONE; 1545f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1546f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1547f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* search for exact matches */ 1548f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org pf = find_exact_format(internalFormat, format, type); 1549f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (pf != PIPE_FORMAT_NONE && 1550f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org screen->is_format_supported(screen, pf, 1551f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org target, sample_count, bindings)) 1552f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return pf; 1553f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1554f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* search table for internalFormat */ 1555f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (i = 0; i < Elements(format_map); i++) { 1556f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const struct format_mapping *mapping = &format_map[i]; 1557f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org for (j = 0; mapping->glFormats[j]; j++) { 1558f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (mapping->glFormats[j] == internalFormat) { 1559f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* Found the desired internal format. Find first pipe format 1560f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * which is supported by the driver. 1561f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1562f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return find_supported_format(screen, mapping->pipeFormats, 1563f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org target, sample_count, bindings); 1564f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1565f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1566f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1567f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1568f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_problem(NULL, "unhandled format!\n"); 1569f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return PIPE_FORMAT_NONE; 1570f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1571f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1572f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1573f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 1574f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Called by FBO code to choose a PIPE_FORMAT_ for drawing surfaces. 1575f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1576f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgenum pipe_format 1577f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_choose_renderbuffer_format(struct pipe_screen *screen, 1578f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum internalFormat, unsigned sample_count) 1579f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1580f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint usage; 1581f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (_mesa_is_depth_or_stencil_format(internalFormat)) 1582f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org usage = PIPE_BIND_DEPTH_STENCIL; 1583f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else 1584f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org usage = PIPE_BIND_RENDER_TARGET; 1585f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return st_choose_format(screen, internalFormat, GL_NONE, GL_NONE, PIPE_TEXTURE_2D, 1586f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org sample_count, usage); 1587f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1588f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1589f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1590f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggl_format 1591f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_ChooseTextureFormat_renderable(struct gl_context *ctx, GLint internalFormat, 1592f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum format, GLenum type, GLboolean renderable) 1593f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1594f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org struct pipe_screen *screen = st_context(ctx)->pipe->screen; 1595f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum pipe_format pFormat; 1596f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org uint bindings; 1597f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1598f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org (void) format; 1599f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org (void) type; 1600f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1601f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* GL textures may wind up being render targets, but we don't know 1602f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * that in advance. Specify potential render target flags now. 1603f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1604f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bindings = PIPE_BIND_SAMPLER_VIEW; 1605f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (renderable) { 1606f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (_mesa_is_depth_or_stencil_format(internalFormat)) 1607f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bindings |= PIPE_BIND_DEPTH_STENCIL; 1608f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else 1609f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bindings |= PIPE_BIND_RENDER_TARGET; 1610f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1611f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1612f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org pFormat = st_choose_format(screen, internalFormat, format, type, 1613f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_TEXTURE_2D, 0, bindings); 1614f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1615f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (pFormat == PIPE_FORMAT_NONE) { 1616f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* try choosing format again, this time without render target bindings */ 1617f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org pFormat = st_choose_format(screen, internalFormat, format, type, 1618f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW); 1619f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1620f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1621f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (pFormat == PIPE_FORMAT_NONE) { 1622f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* no luck at all */ 1623f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return MESA_FORMAT_NONE; 1624f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1625f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1626f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return st_pipe_format_to_mesa_format(pFormat); 1627f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1628f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1629f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1630f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 1631f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Called via ctx->Driver.ChooseTextureFormat(). 1632f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1633f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggl_format 1634f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_ChooseTextureFormat(struct gl_context *ctx, GLenum target, 1635f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLint internalFormat, 1636f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum format, GLenum type) 1637f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1638f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org boolean want_renderable = 1639f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org internalFormat == 3 || internalFormat == 4 || 1640f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org internalFormat == GL_RGB || internalFormat == GL_RGBA || 1641f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org internalFormat == GL_RGB8 || internalFormat == GL_RGBA8 || 1642f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org internalFormat == GL_BGRA; 1643f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1644f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (target == GL_TEXTURE_1D || target == GL_TEXTURE_1D_ARRAY) { 1645f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /* We don't do compression for these texture targets because of 1646f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * difficulty with sub-texture updates on non-block boundaries, etc. 1647f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * So change the internal format request to an uncompressed format. 1648f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1649f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org internalFormat = 1650f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org _mesa_generic_compressed_format_to_uncompressed_format(internalFormat); 1651f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1652f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1653f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return st_ChooseTextureFormat_renderable(ctx, internalFormat, 1654f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org format, type, want_renderable); 1655f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1656f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1657f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1658f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgGLboolean 1659f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_sampler_compat_formats(enum pipe_format format1, enum pipe_format format2) 1660f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1661f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format1 == format2) 1662f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 1663f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1664f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format1 == PIPE_FORMAT_B8G8R8A8_UNORM && 1665f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org format2 == PIPE_FORMAT_B8G8R8X8_UNORM) 1666f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 1667f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1668f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format1 == PIPE_FORMAT_B8G8R8X8_UNORM && 1669f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org format2 == PIPE_FORMAT_B8G8R8A8_UNORM) 1670f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 1671f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1672f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format1 == PIPE_FORMAT_A8B8G8R8_UNORM && 1673f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org format2 == PIPE_FORMAT_X8B8G8R8_UNORM) 1674f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 1675f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1676f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format1 == PIPE_FORMAT_X8B8G8R8_UNORM && 1677f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org format2 == PIPE_FORMAT_A8B8G8R8_UNORM) 1678f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 1679f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1680f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format1 == PIPE_FORMAT_A8R8G8B8_UNORM && 1681f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org format2 == PIPE_FORMAT_X8R8G8B8_UNORM) 1682f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 1683f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1684f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (format1 == PIPE_FORMAT_X8R8G8B8_UNORM && 1685f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org format2 == PIPE_FORMAT_A8R8G8B8_UNORM) 1686f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_TRUE; 1687f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1688f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return GL_FALSE; 1689f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1690f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1691f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1692f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1693f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/** 1694f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * This is used for translating texture border color and the clear 1695f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * color. For example, the clear color is interpreted according to 1696f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * the renderbuffer's base format. For example, if clearing a 1697f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * GL_LUMINANCE buffer, we'll return colorOut[0] = colorOut[1] = 1698f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * colorOut[2] = colorIn[0]. 1699f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Similarly for texture border colors. 1700f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 1701f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgvoid 1702f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgst_translate_color(union gl_color_union *colorIn, 1703f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org union pipe_color_union *colorOut, 1704f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org GLenum baseFormat, GLboolean is_integer) 1705f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 1706f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org if (is_integer) { 1707f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int *in = colorIn->i; 1708f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int *out = colorOut->i; 1709f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1710f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (baseFormat) { 1711f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RED: 1712f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = in[0]; 1713f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[1] = 0; 1714f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[2] = 0; 1715f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1; 1716f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1717f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RG: 1718f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = in[0]; 1719f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[1] = in[1]; 1720f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[2] = 0; 1721f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1; 1722f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1723f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RGB: 1724f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = in[0]; 1725f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[1] = in[1]; 1726f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[2] = in[2]; 1727f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1; 1728f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1729f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_ALPHA: 1730f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = 0; 1731f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = in[3]; 1732f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1733f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LUMINANCE: 1734f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = in[0]; 1735f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1; 1736f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1737f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LUMINANCE_ALPHA: 1738f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = in[0]; 1739f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = in[3]; 1740f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1741f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_INTENSITY: 1742f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = out[3] = in[0]; 1743f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1744f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1745f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4V(out, in); 1746f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1747f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1748f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org else { 1749f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float *in = colorIn->f; 1750f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org float *out = colorOut->f; 1751f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 1752f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (baseFormat) { 1753f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RED: 1754f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = in[0]; 1755f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[1] = 0.0F; 1756f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[2] = 0.0F; 1757f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1.0F; 1758f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1759f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RG: 1760f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = in[0]; 1761f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[1] = in[1]; 1762f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[2] = 0.0F; 1763f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1.0F; 1764f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1765f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_RGB: 1766f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = in[0]; 1767f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[1] = in[1]; 1768f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[2] = in[2]; 1769f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1.0F; 1770f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1771f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_ALPHA: 1772f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = 0.0F; 1773f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = in[3]; 1774f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1775f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LUMINANCE: 1776f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = in[0]; 1777f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = 1.0F; 1778f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1779f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_LUMINANCE_ALPHA: 1780f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = in[0]; 1781f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[3] = in[3]; 1782f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1783f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case GL_INTENSITY: 1784f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org out[0] = out[1] = out[2] = out[3] = in[0]; 1785f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org break; 1786f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 1787f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org COPY_4V(out, in); 1788f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1789f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 1790f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 1791