softpipe,util: Fix blending of R and RG formats.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 6 Nov 2012 17:20:09 +0000 (17:20 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 9 Nov 2012 13:43:19 +0000 (13:43 +0000)
Alpha is also 1 for formats like R32G32_FLOAT.

NOTE: Candidate for the stable branches.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/auxiliary/util/u_format.c

index a41c468a95d260956d61cce24c620c5eb26f6d47..f572a612e2451a113671f25e719ca753adb11b59 100644 (file)
@@ -61,30 +61,6 @@ util_format_is_float(enum pipe_format format)
 }
 
 
-/**
- * Return the number of logical channels in the given format by
- * examining swizzles.
- * XXX this could be made into a public function if useful elsewhere.
- */
-static unsigned
-nr_logical_channels(const struct util_format_description *desc)
-{
-   boolean swizzle_used[UTIL_FORMAT_SWIZZLE_MAX];
-
-   memset(swizzle_used, 0, sizeof(swizzle_used));
-
-   swizzle_used[desc->swizzle[0]] = TRUE;
-   swizzle_used[desc->swizzle[1]] = TRUE;
-   swizzle_used[desc->swizzle[2]] = TRUE;
-   swizzle_used[desc->swizzle[3]] = TRUE;
-
-   return (swizzle_used[UTIL_FORMAT_SWIZZLE_X] +
-           swizzle_used[UTIL_FORMAT_SWIZZLE_Y] +
-           swizzle_used[UTIL_FORMAT_SWIZZLE_Z] +
-           swizzle_used[UTIL_FORMAT_SWIZZLE_W]);
-}
-
-
 /** Test if the format contains RGB, but not alpha */
 boolean
 util_format_is_rgb_no_alpha(enum pipe_format format)
@@ -94,7 +70,7 @@ util_format_is_rgb_no_alpha(enum pipe_format format)
 
    if ((desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB ||
         desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) &&
-       nr_logical_channels(desc) == 3) {
+       desc->swizzle[3] == UTIL_FORMAT_SWIZZLE_1) {
       return TRUE;
    }
    return FALSE;