mesa/formats: Don't flip channels of null array formats
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 10 Aug 2015 08:32:23 +0000 (01:32 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 12 Aug 2015 15:28:31 +0000 (08:28 -0700)
Before, if we encountered an array format of 0 on a BE system, we would
flip all the channels even though it's an invalid format.  This would
result in a mostly invalid format with a swizzle of yyyy or wwww.  Instead,
we should just return 0 if the array format stashed in the format info is
invalid.

Cc: "10.6 10.5" <mesa-stable@lists.freedesktop.org>
src/mesa/main/formats.c

index 27590ed42528b29e8fa383c6ad5fddf0b2ad52d5..d7b2bae59e7b50dcdc4b02b022ca2f5294639b36 100644 (file)
@@ -380,7 +380,8 @@ uint32_t
 _mesa_format_to_array_format(mesa_format format)
 {
    const struct gl_format_info *info = _mesa_get_format_info(format);
-   if (!_mesa_little_endian() && info->Layout == MESA_FORMAT_LAYOUT_PACKED)
+   if (info->ArrayFormat && !_mesa_little_endian() &&
+       info->Layout == MESA_FORMAT_LAYOUT_PACKED)
       return _mesa_array_format_flip_channels(info->ArrayFormat);
    else
       return info->ArrayFormat;