X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fglformats.c;h=5709b98306702afe0c64be3c0fd9c3386200b30a;hb=b8223244c38ad1c433b33b37bff3f19e7a9d2cfc;hp=41becd47d8bbf51ae31da8026448c1640787e5ba;hpb=d77c77936b3956e8925504ad980acbff74422e7c;p=mesa.git diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index 41becd47d8b..5709b983067 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -3512,6 +3512,36 @@ get_swizzle_from_gl_format(GLenum format, uint8_t *swizzle) } } +bool +_mesa_swap_bytes_in_type_enum(GLenum *type) +{ + switch (*type) { + case GL_UNSIGNED_INT_8_8_8_8: + *type = GL_UNSIGNED_INT_8_8_8_8_REV; + return true; + case GL_UNSIGNED_INT_8_8_8_8_REV: + *type = GL_UNSIGNED_INT_8_8_8_8; + return true; + case GL_UNSIGNED_SHORT_8_8_MESA: + *type = GL_UNSIGNED_SHORT_8_8_REV_MESA; + return true; + case GL_UNSIGNED_SHORT_8_8_REV_MESA: + *type = GL_UNSIGNED_SHORT_8_8_MESA; + return true; + case GL_BYTE: + case GL_UNSIGNED_BYTE: + /* format/types that are arrays of 8-bit values are unaffected by + * swapBytes. + */ + return true; + default: + /* swapping bytes on 4444, 1555, or >8 bit per channel types etc. will + * never match a Mesa format. + */ + return false; + } +} + /** * Take an OpenGL format (GL_RGB, GL_RGBA, etc), OpenGL data type (GL_INT, * GL_FOAT, etc) and return a matching mesa_array_format or a mesa_format @@ -3536,6 +3566,9 @@ _mesa_format_from_format_and_type(GLenum format, GLenum type) bool normalized = false, is_float = false, is_signed = false; int num_channels = 0, type_size = 0; + if (format == GL_COLOR_INDEX) + return MESA_FORMAT_NONE; + /* Extract array format type information from the OpenGL data type */ switch (type) { case GL_UNSIGNED_BYTE: