{
    "Format combinations from ES 3.0.1 spec, table 3.2":
    [
        [ "GL_RGBA8",              "GL_RGBA",            "GL_UNSIGNED_BYTE" ],
        [ "GL_RGB5_A1",            "GL_RGBA",            "GL_UNSIGNED_BYTE" ],
        [ "GL_RGBA4",              "GL_RGBA",            "GL_UNSIGNED_BYTE" ],
        [ "GL_SRGB8_ALPHA8",       "GL_RGBA",            "GL_UNSIGNED_BYTE" ],
        [ "GL_RGBA8_SNORM",        "GL_RGBA",            "GL_BYTE" ],
        [ "GL_RGBA4",              "GL_RGBA",            "GL_UNSIGNED_SHORT_4_4_4_4" ],
        [ "GL_RGB10_A2",           "GL_RGBA",            "GL_UNSIGNED_INT_2_10_10_10_REV" ],
        [ "GL_RGB5_A1",            "GL_RGBA",            "GL_UNSIGNED_INT_2_10_10_10_REV" ],
        [ "GL_RGB5_A1",            "GL_RGBA",            "GL_UNSIGNED_SHORT_5_5_5_1" ],
        [ "GL_RGBA16F",            "GL_RGBA",            "GL_HALF_FLOAT" ],
        [ "GL_RGBA16F",            "GL_RGBA",            "GL_HALF_FLOAT_OES" ],
        [ "GL_RGBA32F",            "GL_RGBA",            "GL_FLOAT" ],
        [ "GL_RGBA16F",            "GL_RGBA",            "GL_FLOAT" ],
        [ "GL_RGBA8UI",            "GL_RGBA_INTEGER",    "GL_UNSIGNED_BYTE" ],
        [ "GL_RGBA8I",             "GL_RGBA_INTEGER",    "GL_BYTE" ],
        [ "GL_RGBA16UI",           "GL_RGBA_INTEGER",    "GL_UNSIGNED_SHORT" ],
        [ "GL_RGBA16I",            "GL_RGBA_INTEGER",    "GL_SHORT" ],
        [ "GL_RGBA32UI",           "GL_RGBA_INTEGER",    "GL_UNSIGNED_INT" ],
        [ "GL_RGBA32I",            "GL_RGBA_INTEGER",    "GL_INT" ],
        [ "GL_RGB10_A2UI",         "GL_RGBA_INTEGER",    "GL_UNSIGNED_INT_2_10_10_10_REV" ],
        [ "GL_RGB8",               "GL_RGB",             "GL_UNSIGNED_BYTE" ],
        [ "GL_RGB565",             "GL_RGB",             "GL_UNSIGNED_BYTE" ],
        [ "GL_SRGB8",              "GL_RGB",             "GL_UNSIGNED_BYTE" ],
        [ "GL_RGB8_SNORM",         "GL_RGB",             "GL_BYTE" ],
        [ "GL_RGB565",             "GL_RGB",             "GL_UNSIGNED_SHORT_5_6_5" ],
        [ "GL_R11F_G11F_B10F",     "GL_RGB",             "GL_UNSIGNED_INT_10F_11F_11F_REV" ],
        [ "GL_RGB9_E5",            "GL_RGB",             "GL_UNSIGNED_INT_5_9_9_9_REV" ],
        [ "GL_RGB16F",             "GL_RGB",             "GL_HALF_FLOAT" ],
        [ "GL_RGB16F",             "GL_RGB",             "GL_HALF_FLOAT_OES" ],
        [ "GL_R11F_G11F_B10F",     "GL_RGB",             "GL_HALF_FLOAT" ],
        [ "GL_R11F_G11F_B10F",     "GL_RGB",             "GL_HALF_FLOAT_OES" ],
        [ "GL_RGB9_E5",            "GL_RGB",             "GL_HALF_FLOAT" ],
        [ "GL_RGB9_E5",            "GL_RGB",             "GL_HALF_FLOAT_OES" ],
        [ "GL_RGB32F",             "GL_RGB",             "GL_FLOAT" ],
        [ "GL_RGB16F",             "GL_RGB",             "GL_FLOAT" ],
        [ "GL_R11F_G11F_B10F",     "GL_RGB",             "GL_FLOAT" ],
        [ "GL_RGB9_E5",            "GL_RGB",             "GL_FLOAT" ],
        [ "GL_RGB8UI",             "GL_RGB_INTEGER",     "GL_UNSIGNED_BYTE" ],
        [ "GL_RGB8I",              "GL_RGB_INTEGER",     "GL_BYTE" ],
        [ "GL_RGB16UI",            "GL_RGB_INTEGER",     "GL_UNSIGNED_SHORT" ],
        [ "GL_RGB16I",             "GL_RGB_INTEGER",     "GL_SHORT" ],
        [ "GL_RGB32UI",            "GL_RGB_INTEGER",     "GL_UNSIGNED_INT" ],
        [ "GL_RGB32I",             "GL_RGB_INTEGER",     "GL_INT" ],
        [ "GL_RG8",                "GL_RG",              "GL_UNSIGNED_BYTE" ],
        [ "GL_RG8_SNORM",          "GL_RG",              "GL_BYTE" ],
        [ "GL_RG16F",              "GL_RG",              "GL_HALF_FLOAT" ],
        [ "GL_RG16F",              "GL_RG",              "GL_HALF_FLOAT_OES" ],
        [ "GL_RG32F",              "GL_RG",              "GL_FLOAT" ],
        [ "GL_RG16F",              "GL_RG",              "GL_FLOAT" ],
        [ "GL_RG8UI",              "GL_RG_INTEGER",      "GL_UNSIGNED_BYTE" ],
        [ "GL_RG8I",               "GL_RG_INTEGER",      "GL_BYTE" ],
        [ "GL_RG16UI",             "GL_RG_INTEGER",      "GL_UNSIGNED_SHORT" ],
        [ "GL_RG16I",              "GL_RG_INTEGER",      "GL_SHORT" ],
        [ "GL_RG32UI",             "GL_RG_INTEGER",      "GL_UNSIGNED_INT" ],
        [ "GL_RG32I",              "GL_RG_INTEGER",      "GL_INT" ],
        [ "GL_R8",                 "GL_RED",             "GL_UNSIGNED_BYTE" ],
        [ "GL_R8_SNORM",           "GL_RED",             "GL_BYTE" ],
        [ "GL_R16F",               "GL_RED",             "GL_HALF_FLOAT" ],
        [ "GL_R16F",               "GL_RED",             "GL_HALF_FLOAT_OES" ],
        [ "GL_R32F",               "GL_RED",             "GL_FLOAT" ],
        [ "GL_R16F",               "GL_RED",             "GL_FLOAT" ],
        [ "GL_R8UI",               "GL_RED_INTEGER",     "GL_UNSIGNED_BYTE" ],
        [ "GL_R8I",                "GL_RED_INTEGER",     "GL_BYTE" ],
        [ "GL_R16UI",              "GL_RED_INTEGER",     "GL_UNSIGNED_SHORT" ],
        [ "GL_R16I",               "GL_RED_INTEGER",     "GL_SHORT" ],
        [ "GL_R32UI",              "GL_RED_INTEGER",     "GL_UNSIGNED_INT" ],
        [ "GL_R32I",               "GL_RED_INTEGER",     "GL_INT" ]
    ],
    "Unsized formats":
    [
        [ "GL_RGBA",               "GL_RGBA",            "GL_UNSIGNED_BYTE" ],
        [ "GL_RGBA",               "GL_RGBA",            "GL_UNSIGNED_SHORT_4_4_4_4" ],
        [ "GL_RGBA",               "GL_RGBA",            "GL_UNSIGNED_SHORT_5_5_5_1" ],
        [ "GL_RGB",                "GL_RGB",             "GL_UNSIGNED_BYTE" ],
        [ "GL_RGB",                "GL_RGB",             "GL_UNSIGNED_SHORT_5_6_5" ],
        [ "GL_LUMINANCE_ALPHA",    "GL_LUMINANCE_ALPHA", "GL_UNSIGNED_BYTE" ],
        [ "GL_LUMINANCE",          "GL_LUMINANCE",       "GL_UNSIGNED_BYTE" ],
        [ "GL_ALPHA",              "GL_ALPHA",           "GL_UNSIGNED_BYTE" ],
        [ "GL_SRGB_ALPHA_EXT",     "GL_SRGB_ALPHA_EXT",  "GL_UNSIGNED_BYTE" ],
        [ "GL_SRGB_EXT",           "GL_SRGB_EXT",        "GL_UNSIGNED_BYTE" ],
        [ "GL_RG",                 "GL_RG",              "GL_UNSIGNED_BYTE" ],
        [ "GL_RG",                 "GL_RG",              "GL_FLOAT" ],
        [ "GL_RG",                 "GL_RG",              "GL_HALF_FLOAT" ],
        [ "GL_RG",                 "GL_RG",              "GL_HALF_FLOAT_OES" ],
        [ "GL_RED",                "GL_RED",             "GL_UNSIGNED_BYTE" ],
        [ "GL_RED",                "GL_RED",             "GL_FLOAT" ],
        [ "GL_RED",                "GL_RED",             "GL_HALF_FLOAT" ],
        [ "GL_RED",                "GL_RED",             "GL_HALF_FLOAT_OES" ],
        [ "GL_DEPTH_STENCIL",      "GL_DEPTH_STENCIL",   "GL_UNSIGNED_INT_24_8" ]
    ],
    "Depth stencil formats":
    [
        [ "GL_DEPTH_COMPONENT16",  "GL_DEPTH_COMPONENT", "GL_UNSIGNED_SHORT" ],
        [ "GL_DEPTH_COMPONENT24",  "GL_DEPTH_COMPONENT", "GL_UNSIGNED_INT" ],
        [ "GL_DEPTH_COMPONENT16",  "GL_DEPTH_COMPONENT", "GL_UNSIGNED_INT" ],
        [ "GL_DEPTH_COMPONENT32F", "GL_DEPTH_COMPONENT", "GL_FLOAT" ],
        [ "GL_DEPTH24_STENCIL8",   "GL_DEPTH_STENCIL",   "GL_UNSIGNED_INT_24_8" ],
        [ "GL_DEPTH32F_STENCIL8",  "GL_DEPTH_STENCIL",   "GL_FLOAT_32_UNSIGNED_INT_24_8_REV" ]
    ],
    "From GL_EXT_sRGB":
    [
        [ "GL_SRGB8_ALPHA8_EXT",   "GL_SRGB_ALPHA_EXT", "GL_UNSIGNED_BYTE" ],
        [ "GL_SRGB8",              "GL_SRGB_EXT",       "GL_UNSIGNED_BYTE" ]
    ],
    "From GL_EXT_texture_sRGB_R8":
    [
        [ "GL_SR8_EXT",            "GL_RED",       "GL_UNSIGNED_BYTE" ]
    ],
    "From GL_OES_texture_float":
    [
        [ "GL_RGBA",               "GL_RGBA",            "GL_FLOAT" ],
        [ "GL_RGB",                "GL_RGB",             "GL_FLOAT" ],
        [ "GL_LUMINANCE_ALPHA",    "GL_LUMINANCE_ALPHA", "GL_FLOAT" ],
        [ "GL_LUMINANCE",          "GL_LUMINANCE",       "GL_FLOAT" ],
        [ "GL_ALPHA",              "GL_ALPHA",           "GL_FLOAT" ]
    ],
    "From GL_OES_texture_half_float":
    [
        [ "GL_RGBA",               "GL_RGBA",            "GL_HALF_FLOAT_OES" ],
        [ "GL_RGB",                "GL_RGB",             "GL_HALF_FLOAT_OES" ],
        [ "GL_LUMINANCE_ALPHA",    "GL_LUMINANCE_ALPHA", "GL_HALF_FLOAT" ],
        [ "GL_LUMINANCE_ALPHA",    "GL_LUMINANCE_ALPHA", "GL_HALF_FLOAT_OES" ],
        [ "GL_LUMINANCE",          "GL_LUMINANCE",       "GL_HALF_FLOAT" ],
        [ "GL_LUMINANCE",          "GL_LUMINANCE",       "GL_HALF_FLOAT_OES" ],
        [ "GL_ALPHA",              "GL_ALPHA",           "GL_HALF_FLOAT" ],
        [ "GL_ALPHA",              "GL_ALPHA",           "GL_HALF_FLOAT_OES" ]
    ],
    "From GL_EXT_texture_format_BGRA8888":
    [
        [ "GL_BGRA_EXT",           "GL_BGRA_EXT",        "GL_UNSIGNED_BYTE" ]
    ],
    "From GL_EXT_texture_storage":
    [
        [ "GL_ALPHA8_EXT",             "GL_ALPHA",           "GL_UNSIGNED_BYTE" ],
        [ "GL_LUMINANCE8_EXT",         "GL_LUMINANCE",       "GL_UNSIGNED_BYTE" ],
        [ "GL_LUMINANCE8_ALPHA8_EXT",  "GL_LUMINANCE_ALPHA", "GL_UNSIGNED_BYTE" ],
        [ "GL_ALPHA32F_EXT",           "GL_ALPHA",           "GL_FLOAT" ],
        [ "GL_LUMINANCE32F_EXT",       "GL_LUMINANCE",       "GL_FLOAT" ],
        [ "GL_LUMINANCE_ALPHA32F_EXT", "GL_LUMINANCE_ALPHA", "GL_FLOAT" ],
        [ "GL_ALPHA16F_EXT",           "GL_ALPHA",           "GL_HALF_FLOAT" ],
        [ "GL_ALPHA16F_EXT",           "GL_ALPHA",           "GL_HALF_FLOAT_OES" ],
        [ "GL_LUMINANCE16F_EXT",       "GL_LUMINANCE",       "GL_HALF_FLOAT" ],
        [ "GL_LUMINANCE16F_EXT",       "GL_LUMINANCE",       "GL_HALF_FLOAT_OES" ],
        [ "GL_LUMINANCE_ALPHA16F_EXT", "GL_LUMINANCE_ALPHA", "GL_HALF_FLOAT" ],
        [ "GL_LUMINANCE_ALPHA16F_EXT", "GL_LUMINANCE_ALPHA", "GL_HALF_FLOAT_OES" ]
    ],
    "From GL_EXT_texture_storage and GL_EXT_texture_format_BGRA8888":
    [
        [ "GL_BGRA8_EXT",              "GL_BGRA_EXT",        "GL_UNSIGNED_BYTE" ],
        [ "GL_BGRA4_ANGLEX",           "GL_BGRA_EXT",        "GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT" ],
        [ "GL_BGRA4_ANGLEX",           "GL_BGRA_EXT",        "GL_UNSIGNED_BYTE" ],
        [ "GL_BGR5_A1_ANGLEX",         "GL_BGRA_EXT",        "GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT" ],
        [ "GL_BGR5_A1_ANGLEX",         "GL_BGRA_EXT",        "GL_UNSIGNED_BYTE" ]
    ],
    "From GL_ANGLE_depth_texture and OES_depth_texture":
    [
        [ "GL_DEPTH_COMPONENT32_OES",  "GL_DEPTH_COMPONENT", "GL_UNSIGNED_INT_24_8" ],
        [ "GL_DEPTH_COMPONENT",        "GL_DEPTH_COMPONENT", "GL_UNSIGNED_SHORT" ],
        [ "GL_DEPTH_COMPONENT",        "GL_DEPTH_COMPONENT", "GL_UNSIGNED_INT" ]
    ],
    "From GL_EXT_texture_norm16":
    [
        [ "GL_R16_EXT",          "GL_RED",  "GL_UNSIGNED_SHORT" ],
        [ "GL_RG16_EXT",         "GL_RG",   "GL_UNSIGNED_SHORT" ],
        [ "GL_RGB16_EXT",        "GL_RGB",  "GL_UNSIGNED_SHORT" ],
        [ "GL_RGBA16_EXT",       "GL_RGBA", "GL_UNSIGNED_SHORT" ],
        [ "GL_R16_SNORM_EXT",    "GL_RED",  "GL_SHORT" ],
        [ "GL_RG16_SNORM_EXT",   "GL_RG",   "GL_SHORT" ],
        [ "GL_RGB16_SNORM_EXT",  "GL_RGB",  "GL_SHORT" ],
        [ "GL_RGBA16_SNORM_EXT", "GL_RGBA", "GL_SHORT" ]
    ],
    "From GL_EXT_texture_type_2_10_10_10_REV":
    [
        [ "GL_RGBA",               "GL_RGBA",            "GL_UNSIGNED_INT_2_10_10_10_REV" ],
        [ "GL_RGB",                "GL_RGB",             "GL_UNSIGNED_INT_2_10_10_10_REV" ]
    ]
}
