| // GENERATED FILE - DO NOT EDIT. |
| // Generated by gen_format_map.py using data from format_map_data.json. |
| // ES3 format info from es3_format_type_combinations.json. |
| // |
| // Copyright 2019 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // format_map: |
| // Determining the sized internal format from a (format,type) pair. |
| // Also check es3 format combinations for validity. |
| |
| #include "angle_gl.h" |
| #include "common/debug.h" |
| |
| namespace gl |
| { |
| |
| GLenum GetSizedFormatInternal(GLenum format, GLenum type) |
| { |
| switch (format) |
| { |
| case GL_ALPHA: |
| switch (type) |
| { |
| case GL_FLOAT: |
| return GL_ALPHA32F_EXT; |
| case GL_HALF_FLOAT: |
| return GL_ALPHA16F_EXT; |
| case GL_HALF_FLOAT_OES: |
| return GL_ALPHA16F_EXT; |
| case GL_UNSIGNED_BYTE: |
| return GL_ALPHA8_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_BGRA_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_BGRA8_EXT; |
| case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: |
| return GL_BGR5_A1_ANGLEX; |
| case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: |
| return GL_BGRA4_ANGLEX; |
| case GL_UNSIGNED_SHORT_5_6_5: |
| return GL_BGR565_ANGLEX; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_RGBA_BPTC_UNORM_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_RGBA_BPTC_UNORM_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_RGB_S3TC_DXT1_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_COMPRESSED_SRGB_S3TC_DXT1_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_DEPTH_COMPONENT: |
| switch (type) |
| { |
| case GL_FLOAT: |
| return GL_DEPTH_COMPONENT32F; |
| case GL_UNSIGNED_INT: |
| return GL_DEPTH_COMPONENT32_OES; |
| case GL_UNSIGNED_SHORT: |
| return GL_DEPTH_COMPONENT16; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_DEPTH_STENCIL: |
| switch (type) |
| { |
| case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: |
| return GL_DEPTH32F_STENCIL8; |
| case GL_UNSIGNED_INT_24_8: |
| return GL_DEPTH24_STENCIL8; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_LUMINANCE: |
| switch (type) |
| { |
| case GL_FLOAT: |
| return GL_LUMINANCE32F_EXT; |
| case GL_HALF_FLOAT: |
| return GL_LUMINANCE16F_EXT; |
| case GL_HALF_FLOAT_OES: |
| return GL_LUMINANCE16F_EXT; |
| case GL_UNSIGNED_BYTE: |
| return GL_LUMINANCE8_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_LUMINANCE_ALPHA: |
| switch (type) |
| { |
| case GL_FLOAT: |
| return GL_LUMINANCE_ALPHA32F_EXT; |
| case GL_HALF_FLOAT: |
| return GL_LUMINANCE_ALPHA16F_EXT; |
| case GL_HALF_FLOAT_OES: |
| return GL_LUMINANCE_ALPHA16F_EXT; |
| case GL_UNSIGNED_BYTE: |
| return GL_LUMINANCE8_ALPHA8_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RED: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_R8_SNORM; |
| case GL_FLOAT: |
| return GL_R32F; |
| case GL_HALF_FLOAT: |
| return GL_R16F; |
| case GL_HALF_FLOAT_OES: |
| return GL_R16F; |
| case GL_SHORT: |
| return GL_R16_SNORM_EXT; |
| case GL_UNSIGNED_BYTE: |
| return GL_R8; |
| case GL_UNSIGNED_SHORT: |
| return GL_R16_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RED_INTEGER: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_R8I; |
| case GL_INT: |
| return GL_R32I; |
| case GL_SHORT: |
| return GL_R16I; |
| case GL_UNSIGNED_BYTE: |
| return GL_R8UI; |
| case GL_UNSIGNED_INT: |
| return GL_R32UI; |
| case GL_UNSIGNED_SHORT: |
| return GL_R16UI; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RG: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_RG8_SNORM; |
| case GL_FLOAT: |
| return GL_RG32F; |
| case GL_HALF_FLOAT: |
| return GL_RG16F; |
| case GL_HALF_FLOAT_OES: |
| return GL_RG16F; |
| case GL_SHORT: |
| return GL_RG16_SNORM_EXT; |
| case GL_UNSIGNED_BYTE: |
| return GL_RG8; |
| case GL_UNSIGNED_SHORT: |
| return GL_RG16_EXT; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RGB: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_RGB8_SNORM; |
| case GL_FLOAT: |
| return GL_RGB32F; |
| case GL_HALF_FLOAT: |
| return GL_RGB16F; |
| case GL_HALF_FLOAT_OES: |
| return GL_RGB16F; |
| case GL_SHORT: |
| return GL_RGB16_SNORM_EXT; |
| case GL_UNSIGNED_BYTE: |
| return GL_RGB8; |
| case GL_UNSIGNED_INT_10F_11F_11F_REV: |
| return GL_R11F_G11F_B10F; |
| case GL_UNSIGNED_INT_2_10_10_10_REV: |
| return GL_RGB10_UNORM_ANGLEX; |
| case GL_UNSIGNED_INT_5_9_9_9_REV: |
| return GL_RGB9_E5; |
| case GL_UNSIGNED_SHORT: |
| return GL_RGB16_EXT; |
| case GL_UNSIGNED_SHORT_5_6_5: |
| return GL_RGB565; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RGBA: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_RGBA8_SNORM; |
| case GL_FLOAT: |
| return GL_RGBA32F; |
| case GL_HALF_FLOAT: |
| return GL_RGBA16F; |
| case GL_HALF_FLOAT_OES: |
| return GL_RGBA16F; |
| case GL_SHORT: |
| return GL_RGBA16_SNORM_EXT; |
| case GL_UNSIGNED_BYTE: |
| return GL_RGBA8; |
| case GL_UNSIGNED_INT_2_10_10_10_REV: |
| return GL_RGB10_A2; |
| case GL_UNSIGNED_SHORT: |
| return GL_RGBA16_EXT; |
| case GL_UNSIGNED_SHORT_4_4_4_4: |
| return GL_RGBA4; |
| case GL_UNSIGNED_SHORT_5_5_5_1: |
| return GL_RGB5_A1; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RGBA_INTEGER: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_RGBA8I; |
| case GL_INT: |
| return GL_RGBA32I; |
| case GL_SHORT: |
| return GL_RGBA16I; |
| case GL_UNSIGNED_BYTE: |
| return GL_RGBA8UI; |
| case GL_UNSIGNED_INT: |
| return GL_RGBA32UI; |
| case GL_UNSIGNED_INT_2_10_10_10_REV: |
| return GL_RGB10_A2UI; |
| case GL_UNSIGNED_SHORT: |
| return GL_RGBA16UI; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RGB_INTEGER: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_RGB8I; |
| case GL_INT: |
| return GL_RGB32I; |
| case GL_SHORT: |
| return GL_RGB16I; |
| case GL_UNSIGNED_BYTE: |
| return GL_RGB8UI; |
| case GL_UNSIGNED_INT: |
| return GL_RGB32UI; |
| case GL_UNSIGNED_SHORT: |
| return GL_RGB16UI; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RG_INTEGER: |
| switch (type) |
| { |
| case GL_BYTE: |
| return GL_RG8I; |
| case GL_INT: |
| return GL_RG32I; |
| case GL_SHORT: |
| return GL_RG16I; |
| case GL_UNSIGNED_BYTE: |
| return GL_RG8UI; |
| case GL_UNSIGNED_INT: |
| return GL_RG32UI; |
| case GL_UNSIGNED_SHORT: |
| return GL_RG16UI; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_SRGB_ALPHA_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_SRGB8_ALPHA8; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_SRGB_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_SRGB8; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_STENCIL: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| return GL_STENCIL_INDEX8; |
| default: |
| break; |
| } |
| break; |
| |
| case GL_NONE: |
| return GL_NONE; |
| |
| default: |
| break; |
| } |
| |
| return GL_NONE; |
| } |
| |
| bool ValidES3Format(GLenum format) |
| { |
| switch (format) |
| { |
| case GL_ALPHA: |
| case GL_BGRA_EXT: |
| case GL_DEPTH_COMPONENT: |
| case GL_DEPTH_STENCIL: |
| case GL_LUMINANCE: |
| case GL_LUMINANCE_ALPHA: |
| case GL_RED: |
| case GL_RED_INTEGER: |
| case GL_RG: |
| case GL_RGB: |
| case GL_RGBA: |
| case GL_RGBA_INTEGER: |
| case GL_RGB_INTEGER: |
| case GL_RG_INTEGER: |
| case GL_SRGB_ALPHA_EXT: |
| case GL_SRGB_EXT: |
| return true; |
| |
| default: |
| return false; |
| } |
| } |
| |
| bool ValidES3Type(GLenum type) |
| { |
| switch (type) |
| { |
| case GL_BYTE: |
| case GL_FLOAT: |
| case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: |
| case GL_HALF_FLOAT: |
| case GL_HALF_FLOAT_OES: |
| case GL_INT: |
| case GL_SHORT: |
| case GL_UNSIGNED_BYTE: |
| case GL_UNSIGNED_INT: |
| case GL_UNSIGNED_INT_10F_11F_11F_REV: |
| case GL_UNSIGNED_INT_24_8: |
| case GL_UNSIGNED_INT_2_10_10_10_REV: |
| case GL_UNSIGNED_INT_5_9_9_9_REV: |
| case GL_UNSIGNED_SHORT: |
| case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: |
| case GL_UNSIGNED_SHORT_4_4_4_4: |
| case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: |
| case GL_UNSIGNED_SHORT_5_5_5_1: |
| case GL_UNSIGNED_SHORT_5_6_5: |
| return true; |
| |
| default: |
| return false; |
| } |
| } |
| |
| bool ValidES3FormatCombination(GLenum format, GLenum type, GLenum internalFormat) |
| { |
| ASSERT(ValidES3Format(format) && ValidES3Type(type)); |
| |
| switch (format) |
| { |
| case GL_RGB_INTEGER: |
| switch (type) |
| { |
| case GL_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB32I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB16UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB16I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB8UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB8I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB32UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RGBA_INTEGER: |
| switch (type) |
| { |
| case GL_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA32I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA16UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT_2_10_10_10_REV: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB10_A2UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA16I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA8UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA8I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA32UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RGB: |
| switch (type) |
| { |
| case GL_UNSIGNED_INT_10F_11F_11F_REV: |
| { |
| switch (internalFormat) |
| { |
| case GL_R11F_G11F_B10F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB16_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT_2_10_10_10_REV: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB16_SNORM_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB: |
| case GL_RGB8: |
| case GL_RGB565: |
| case GL_SRGB8: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT_5_6_5: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB: |
| case GL_RGB565: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT_OES: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB: |
| case GL_RGB16F: |
| case GL_R11F_G11F_B10F: |
| case GL_RGB9_E5: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB16F: |
| case GL_R11F_G11F_B10F: |
| case GL_RGB9_E5: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB: |
| case GL_RGB32F: |
| case GL_RGB16F: |
| case GL_R11F_G11F_B10F: |
| case GL_RGB9_E5: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB8_SNORM: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT_5_9_9_9_REV: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGB9_E5: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_LUMINANCE_ALPHA: |
| switch (type) |
| { |
| case GL_HALF_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE_ALPHA: |
| case GL_LUMINANCE_ALPHA16F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE_ALPHA: |
| case GL_LUMINANCE_ALPHA32F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE_ALPHA: |
| case GL_LUMINANCE8_ALPHA8_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT_OES: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE_ALPHA: |
| case GL_LUMINANCE_ALPHA16F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_ALPHA: |
| switch (type) |
| { |
| case GL_HALF_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_ALPHA: |
| case GL_ALPHA16F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_ALPHA: |
| case GL_ALPHA32F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_ALPHA: |
| case GL_ALPHA8_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT_OES: |
| { |
| switch (internalFormat) |
| { |
| case GL_ALPHA: |
| case GL_ALPHA16F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RGBA: |
| switch (type) |
| { |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA16_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT_2_10_10_10_REV: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA: |
| case GL_RGB10_A2: |
| case GL_RGB5_A1: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA16_SNORM_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT_4_4_4_4: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA: |
| case GL_RGBA4: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA: |
| case GL_RGBA8: |
| case GL_RGB5_A1: |
| case GL_RGBA4: |
| case GL_SRGB8_ALPHA8: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT_OES: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA: |
| case GL_RGBA16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA: |
| case GL_RGBA32F: |
| case GL_RGBA16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA8_SNORM: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT_5_5_5_1: |
| { |
| switch (internalFormat) |
| { |
| case GL_RGBA: |
| case GL_RGB5_A1: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_LUMINANCE: |
| switch (type) |
| { |
| case GL_HALF_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE: |
| case GL_LUMINANCE16F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE: |
| case GL_LUMINANCE32F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE: |
| case GL_LUMINANCE8_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT_OES: |
| { |
| switch (internalFormat) |
| { |
| case GL_LUMINANCE: |
| case GL_LUMINANCE16F_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RG_INTEGER: |
| switch (type) |
| { |
| case GL_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG32I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG16UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG16I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG8UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG8I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG32UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RED_INTEGER: |
| switch (type) |
| { |
| case GL_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_R32I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_R16UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_R16I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_R8UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_R8I: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_R32UI: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RED: |
| switch (type) |
| { |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_R16_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_R16_SNORM_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RED: |
| case GL_R32F: |
| case GL_R16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT_OES: |
| { |
| switch (internalFormat) |
| { |
| case GL_RED: |
| case GL_R16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RED: |
| case GL_R16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RED: |
| case GL_R8: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_R8_SNORM: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_DEPTH_COMPONENT: |
| switch (type) |
| { |
| case GL_UNSIGNED_INT: |
| { |
| switch (internalFormat) |
| { |
| case GL_DEPTH_COMPONENT: |
| case GL_DEPTH_COMPONENT24: |
| case GL_DEPTH_COMPONENT16: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_INT_24_8: |
| { |
| switch (internalFormat) |
| { |
| case GL_DEPTH_COMPONENT32_OES: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_DEPTH_COMPONENT32F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_DEPTH_COMPONENT: |
| case GL_DEPTH_COMPONENT16: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_DEPTH_STENCIL: |
| switch (type) |
| { |
| case GL_UNSIGNED_INT_24_8: |
| { |
| switch (internalFormat) |
| { |
| case GL_DEPTH_STENCIL: |
| case GL_DEPTH24_STENCIL8: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: |
| { |
| switch (internalFormat) |
| { |
| case GL_DEPTH32F_STENCIL8: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_SRGB_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_SRGB_EXT: |
| case GL_SRGB8: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_SRGB_ALPHA_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_SRGB_ALPHA_EXT: |
| case GL_SRGB8_ALPHA8_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_RG: |
| switch (type) |
| { |
| case GL_UNSIGNED_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG16_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_SHORT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG16_SNORM_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG: |
| case GL_RG32F: |
| case GL_RG16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT_OES: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG: |
| case GL_RG16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_HALF_FLOAT: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG: |
| case GL_RG16F: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG: |
| case GL_RG8: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_RG8_SNORM: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| case GL_BGRA_EXT: |
| switch (type) |
| { |
| case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT: |
| { |
| switch (internalFormat) |
| { |
| case GL_BGRA4_ANGLEX: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_BYTE: |
| { |
| switch (internalFormat) |
| { |
| case GL_BGRA8_EXT: |
| case GL_BGRA4_ANGLEX: |
| case GL_BGR5_A1_ANGLEX: |
| case GL_BGRA_EXT: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT: |
| { |
| switch (internalFormat) |
| { |
| case GL_BGR5_A1_ANGLEX: |
| return true; |
| default: |
| break; |
| } |
| break; |
| } |
| default: |
| break; |
| } |
| break; |
| |
| default: |
| UNREACHABLE(); |
| break; |
| } |
| |
| return false; |
| } |
| |
| } // namespace gl |