/*
* Mesa 3-D graphics library
- * Version: 7.7
*
* Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
* Copyright (c) 2008-2009 VMware, Inc.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
*/
#include "imports.h"
#include "formats.h"
-#include "mfeatures.h"
#include "macros.h"
#include "glformats.h"
case MESA_FORMAT_A8:
return format == GL_ALPHA && type == GL_UNSIGNED_BYTE;
case MESA_FORMAT_A16:
- return format == GL_ALPHA && type == GL_UNSIGNED_SHORT &&
- littleEndian && !swapBytes;
+ return format == GL_ALPHA && type == GL_UNSIGNED_SHORT && !swapBytes;
case MESA_FORMAT_L8:
case MESA_FORMAT_SL8:
return format == GL_LUMINANCE && type == GL_UNSIGNED_BYTE;
case MESA_FORMAT_L16:
- return format == GL_LUMINANCE && type == GL_UNSIGNED_SHORT &&
- littleEndian && !swapBytes;
+ return format == GL_LUMINANCE && type == GL_UNSIGNED_SHORT && !swapBytes;
case MESA_FORMAT_I8:
return format == GL_INTENSITY && type == GL_UNSIGNED_BYTE;
case MESA_FORMAT_I16:
- return format == GL_INTENSITY && type == GL_UNSIGNED_SHORT &&
- littleEndian && !swapBytes;
+ return format == GL_INTENSITY && type == GL_UNSIGNED_SHORT && !swapBytes;
case MESA_FORMAT_YCBCR:
return format == GL_YCBCR_MESA &&
return GL_FALSE;
case MESA_FORMAT_R16:
- return format == GL_RED && type == GL_UNSIGNED_SHORT && littleEndian &&
+ return format == GL_RED && type == GL_UNSIGNED_SHORT &&
!swapBytes;
case MESA_FORMAT_GR1616:
return format == GL_RG && type == GL_UNSIGNED_SHORT && littleEndian &&
case MESA_FORMAT_RG_FLOAT16:
return format == GL_RG && type == GL_HALF_FLOAT && !swapBytes;
- /* FINISHME: What do we want to do for GL_EXT_texture_integer? */
case MESA_FORMAT_ALPHA_UINT8:
+ return format == GL_ALPHA_INTEGER && type == GL_UNSIGNED_BYTE;
case MESA_FORMAT_ALPHA_UINT16:
+ return format == GL_ALPHA_INTEGER && type == GL_UNSIGNED_SHORT &&
+ !swapBytes;
case MESA_FORMAT_ALPHA_UINT32:
+ return format == GL_ALPHA_INTEGER && type == GL_UNSIGNED_INT &&
+ !swapBytes;
case MESA_FORMAT_ALPHA_INT8:
+ return format == GL_ALPHA_INTEGER && type == GL_BYTE;
case MESA_FORMAT_ALPHA_INT16:
+ return format == GL_ALPHA_INTEGER && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_ALPHA_INT32:
- return GL_FALSE;
+ return format == GL_ALPHA_INTEGER && type == GL_INT && !swapBytes;
case MESA_FORMAT_INTENSITY_UINT8:
case MESA_FORMAT_INTENSITY_UINT16:
case MESA_FORMAT_INTENSITY_INT8:
case MESA_FORMAT_INTENSITY_INT16:
case MESA_FORMAT_INTENSITY_INT32:
+ /* GL_INTENSITY_INTEGER_EXT doesn't exist. */
return GL_FALSE;
case MESA_FORMAT_LUMINANCE_UINT8:
+ return format == GL_LUMINANCE_INTEGER_EXT && type == GL_UNSIGNED_BYTE;
case MESA_FORMAT_LUMINANCE_UINT16:
+ return format == GL_LUMINANCE_INTEGER_EXT && type == GL_UNSIGNED_SHORT &&
+ !swapBytes;
case MESA_FORMAT_LUMINANCE_UINT32:
+ return format == GL_LUMINANCE_INTEGER_EXT && type == GL_UNSIGNED_INT &&
+ !swapBytes;
case MESA_FORMAT_LUMINANCE_INT8:
+ return format == GL_LUMINANCE_INTEGER_EXT && type == GL_BYTE;
case MESA_FORMAT_LUMINANCE_INT16:
+ return format == GL_LUMINANCE_INTEGER_EXT && type == GL_SHORT &&
+ !swapBytes;
case MESA_FORMAT_LUMINANCE_INT32:
- return GL_FALSE;
+ return format == GL_LUMINANCE_INTEGER_EXT && type == GL_INT && !swapBytes;
case MESA_FORMAT_LUMINANCE_ALPHA_UINT8:
+ return format == GL_LUMINANCE_ALPHA_INTEGER_EXT &&
+ type == GL_UNSIGNED_BYTE && !swapBytes;
case MESA_FORMAT_LUMINANCE_ALPHA_UINT16:
+ return format == GL_LUMINANCE_ALPHA_INTEGER_EXT &&
+ type == GL_UNSIGNED_SHORT && !swapBytes;
case MESA_FORMAT_LUMINANCE_ALPHA_UINT32:
+ return format == GL_LUMINANCE_ALPHA_INTEGER_EXT &&
+ type == GL_UNSIGNED_INT && !swapBytes;
case MESA_FORMAT_LUMINANCE_ALPHA_INT8:
+ return format == GL_LUMINANCE_ALPHA_INTEGER_EXT && type == GL_BYTE &&
+ !swapBytes;
case MESA_FORMAT_LUMINANCE_ALPHA_INT16:
+ return format == GL_LUMINANCE_ALPHA_INTEGER_EXT && type == GL_SHORT &&
+ !swapBytes;
case MESA_FORMAT_LUMINANCE_ALPHA_INT32:
- return GL_FALSE;
+ return format == GL_LUMINANCE_ALPHA_INTEGER_EXT && type == GL_INT &&
+ !swapBytes;
case MESA_FORMAT_R_INT8:
+ return format == GL_RED_INTEGER && type == GL_BYTE;
case MESA_FORMAT_RG_INT8:
+ return format == GL_RG_INTEGER && type == GL_BYTE && !swapBytes;
case MESA_FORMAT_RGB_INT8:
+ return format == GL_RGB_INTEGER && type == GL_BYTE && !swapBytes;
case MESA_FORMAT_RGBA_INT8:
+ return format == GL_RGBA_INTEGER && type == GL_BYTE && !swapBytes;
case MESA_FORMAT_R_INT16:
+ return format == GL_RED_INTEGER && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_RG_INT16:
+ return format == GL_RG_INTEGER && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_RGB_INT16:
+ return format == GL_RGB_INTEGER && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_RGBA_INT16:
+ return format == GL_RGBA_INTEGER && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_R_INT32:
+ return format == GL_RED_INTEGER && type == GL_INT && !swapBytes;
case MESA_FORMAT_RG_INT32:
+ return format == GL_RG_INTEGER && type == GL_INT && !swapBytes;
case MESA_FORMAT_RGB_INT32:
+ return format == GL_RGB_INTEGER && type == GL_INT && !swapBytes;
case MESA_FORMAT_RGBA_INT32:
- return GL_FALSE;
+ return format == GL_RGBA_INTEGER && type == GL_INT && !swapBytes;
case MESA_FORMAT_R_UINT8:
+ return format == GL_RED_INTEGER && type == GL_UNSIGNED_BYTE;
case MESA_FORMAT_RG_UINT8:
+ return format == GL_RG_INTEGER && type == GL_UNSIGNED_BYTE && !swapBytes;
case MESA_FORMAT_RGB_UINT8:
+ return format == GL_RGB_INTEGER && type == GL_UNSIGNED_BYTE && !swapBytes;
case MESA_FORMAT_RGBA_UINT8:
+ return format == GL_RGBA_INTEGER && type == GL_UNSIGNED_BYTE &&
+ !swapBytes;
case MESA_FORMAT_R_UINT16:
+ return format == GL_RED_INTEGER && type == GL_UNSIGNED_SHORT &&
+ !swapBytes;
case MESA_FORMAT_RG_UINT16:
+ return format == GL_RG_INTEGER && type == GL_UNSIGNED_SHORT && !swapBytes;
case MESA_FORMAT_RGB_UINT16:
+ return format == GL_RGB_INTEGER && type == GL_UNSIGNED_SHORT &&
+ !swapBytes;
case MESA_FORMAT_RGBA_UINT16:
+ return format == GL_RGBA_INTEGER && type == GL_UNSIGNED_SHORT &&
+ !swapBytes;
case MESA_FORMAT_R_UINT32:
+ return format == GL_RED_INTEGER && type == GL_UNSIGNED_INT && !swapBytes;
case MESA_FORMAT_RG_UINT32:
+ return format == GL_RG_INTEGER && type == GL_UNSIGNED_INT && !swapBytes;
case MESA_FORMAT_RGB_UINT32:
+ return format == GL_RGB_INTEGER && type == GL_UNSIGNED_INT && !swapBytes;
case MESA_FORMAT_RGBA_UINT32:
- return GL_FALSE;
+ return format == GL_RGBA_INTEGER && type == GL_UNSIGNED_INT && !swapBytes;
case MESA_FORMAT_DUDV8:
+ return (format == GL_DU8DV8_ATI || format == GL_DUDV_ATI) &&
+ type == GL_BYTE && littleEndian && !swapBytes;
+
case MESA_FORMAT_SIGNED_R8:
+ return format == GL_RED && type == GL_BYTE;
case MESA_FORMAT_SIGNED_RG88_REV:
+ return format == GL_RG && type == GL_BYTE && littleEndian &&
+ !swapBytes;
case MESA_FORMAT_SIGNED_RGBX8888:
return GL_FALSE;
return GL_FALSE;
case MESA_FORMAT_SIGNED_R16:
+ return format == GL_RED && type == GL_SHORT &&
+ !swapBytes;
case MESA_FORMAT_SIGNED_GR1616:
+ return format == GL_RG && type == GL_SHORT && littleEndian && !swapBytes;
case MESA_FORMAT_SIGNED_RGB_16:
+ return format == GL_RGB && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_SIGNED_RGBA_16:
+ return format == GL_RGBA && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_RGBA_16:
- /* FINISHME: SNORM */
- return GL_FALSE;
+ return format == GL_RGBA && type == GL_UNSIGNED_SHORT &&
+ !swapBytes;
case MESA_FORMAT_RED_RGTC1:
case MESA_FORMAT_SIGNED_RED_RGTC1:
return GL_FALSE;
case MESA_FORMAT_SIGNED_A8:
+ return format == GL_ALPHA && type == GL_BYTE;
case MESA_FORMAT_SIGNED_L8:
+ return format == GL_LUMINANCE && type == GL_BYTE;
case MESA_FORMAT_SIGNED_AL88:
+ return format == GL_LUMINANCE_ALPHA && type == GL_BYTE &&
+ littleEndian && !swapBytes;
case MESA_FORMAT_SIGNED_I8:
+ return format == GL_INTENSITY && type == GL_BYTE;
case MESA_FORMAT_SIGNED_A16:
+ return format == GL_ALPHA && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_SIGNED_L16:
+ return format == GL_LUMINANCE && type == GL_SHORT && !swapBytes;
case MESA_FORMAT_SIGNED_AL1616:
+ return format == GL_LUMINANCE_ALPHA && type == GL_SHORT &&
+ littleEndian && !swapBytes;
case MESA_FORMAT_SIGNED_I16:
- /* FINISHME: SNORM */
- return GL_FALSE;
+ return format == GL_INTENSITY && type == GL_SHORT && littleEndian &&
+ !swapBytes;
case MESA_FORMAT_ARGB2101010_UINT:
return (format == GL_BGRA_INTEGER_EXT &&
return format == GL_DEPTH_COMPONENT && type == GL_FLOAT && !swapBytes;
case MESA_FORMAT_Z32_FLOAT_X24S8:
- return GL_FALSE;
+ return format == GL_DEPTH_STENCIL &&
+ type == GL_FLOAT_32_UNSIGNED_INT_24_8_REV && !swapBytes;
case MESA_FORMAT_XRGB4444_UNORM:
case MESA_FORMAT_XRGB1555_UNORM: