u_format: add inline helper to find first non void channel
authorDave Airlie <airlied@redhat.com>
Sat, 8 Oct 2011 16:41:33 +0000 (17:41 +0100)
committerDave Airlie <airlied@redhat.com>
Sat, 8 Oct 2011 16:44:58 +0000 (17:44 +0100)
This is used in a few places in drivers as well, also the integer support
can use it as well.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/auxiliary/util/u_format.c
src/gallium/auxiliary/util/u_format.h

index 9bf42583eecde01b6b849d67cc733be2d81ec445..129b8e93ed314cea7ced3651d2a1dd5b12fd77c1 100644 (file)
@@ -52,14 +52,8 @@ util_format_is_float(enum pipe_format format)
       return FALSE;
    }
 
-   /* Find the first non-void channel. */
-   for (i = 0; i < 4; i++) {
-      if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) {
-         break;
-      }
-   }
-
-   if (i == 4) {
+   i = util_format_get_first_non_void_channel(format);
+   if (i == -1) {
       return FALSE;
    }
 
index 98528ea595f8f19416b4e6a703c10e86912893af..9606653263169c8d3c2d9237bdf833f79c19c15b 100644 (file)
@@ -806,6 +806,26 @@ util_format_get_nr_components(enum pipe_format format)
    return desc->nr_channels;
 }
 
+/**
+ * Return the index of the first non-void channel
+ * -1 if no non-void channels
+ */
+static INLINE int
+util_format_get_first_non_void_channel(enum pipe_format format)
+{
+   const struct util_format_description *desc = util_format_description(format);
+   int i;
+
+   for (i = 0; i < 4; i++)
+      if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID)
+         break;
+
+   if (i == 4)
+       return -1;
+
+   return i;
+}
+
 /*
  * Format access functions.
  */