X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fformats.c;h=d4cd5d2182cfbc5b44bb12fe273e38cf807bc439;hb=38ab39f6501f78ea7048e8a16a97fdb075b9d8c7;hp=34450003572cbc3ca7e29f5dddcdfcd38609811e;hpb=30782962263d21e984826aef616e25f4ec82de2d;p=mesa.git diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 34450003572..d4cd5d2182c 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -24,6 +24,7 @@ */ +#include "errors.h" #include "imports.h" #include "formats.h" #include "macros.h" @@ -109,6 +110,11 @@ _mesa_get_format_name(mesa_format format) GLint _mesa_get_format_bytes(mesa_format format) { + if (_mesa_format_is_mesa_array_format(format)) { + return _mesa_array_format_get_type_size(format) * + _mesa_array_format_get_num_channels(format); + } + const struct gl_format_info *info = _mesa_get_format_info(format); assert(info->BytesPerBlock); assert(info->BytesPerBlock <= MAX_PIXEL_BYTES || @@ -621,6 +627,48 @@ _mesa_is_format_etc2(mesa_format format) } +/** + * Return TRUE if format is an ASTC 2D compressed format. + */ +bool +_mesa_is_format_astc_2d(mesa_format format) +{ + switch (format) { + case MESA_FORMAT_RGBA_ASTC_4x4: + case MESA_FORMAT_RGBA_ASTC_5x4: + case MESA_FORMAT_RGBA_ASTC_5x5: + case MESA_FORMAT_RGBA_ASTC_6x5: + case MESA_FORMAT_RGBA_ASTC_6x6: + case MESA_FORMAT_RGBA_ASTC_8x5: + case MESA_FORMAT_RGBA_ASTC_8x6: + case MESA_FORMAT_RGBA_ASTC_8x8: + case MESA_FORMAT_RGBA_ASTC_10x5: + case MESA_FORMAT_RGBA_ASTC_10x6: + case MESA_FORMAT_RGBA_ASTC_10x8: + case MESA_FORMAT_RGBA_ASTC_10x10: + case MESA_FORMAT_RGBA_ASTC_12x10: + case MESA_FORMAT_RGBA_ASTC_12x12: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10: + case MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12: + return true; + default: + return false; + } +} + + /** * If the given format is a compressed format, return a corresponding * uncompressed format. @@ -1563,15 +1611,9 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, if (format == GL_RGBA && type == GL_UNSIGNED_SHORT_4_4_4_4 && !swapBytes) return GL_TRUE; - if (format == GL_RGBA && type == GL_UNSIGNED_SHORT_4_4_4_4_REV && swapBytes) - return GL_TRUE; - if (format == GL_ABGR_EXT && type == GL_UNSIGNED_SHORT_4_4_4_4_REV && !swapBytes) return GL_TRUE; - if (format == GL_ABGR_EXT && type == GL_UNSIGNED_SHORT_4_4_4_4 && swapBytes) - return GL_TRUE; - return GL_FALSE; case MESA_FORMAT_R4G4B4A4_UNORM: