From: José Fonseca <jfons...@vmware.com>

This is what we want in practice.

The only change is in PIPE_FORMAT_R8SG8SB8UX8U_NORM, which no longer is
considered an array format.
---
 src/gallium/auxiliary/util/u_format.h        |    2 +-
 src/gallium/auxiliary/util/u_format_parse.py |   11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_format.h 
b/src/gallium/auxiliary/util/u_format.h
index 25bfd23..ec368fd 100644
--- a/src/gallium/auxiliary/util/u_format.h
+++ b/src/gallium/auxiliary/util/u_format.h
@@ -156,7 +156,7 @@ struct util_format_description
    unsigned nr_channels:3;
 
    /**
-    * Whether all channels have the same number of (whole) bytes.
+    * Whether all channels have the same number of (whole) bytes and type.
     */
    unsigned is_array:1;
 
diff --git a/src/gallium/auxiliary/util/u_format_parse.py 
b/src/gallium/auxiliary/util/u_format_parse.py
index 3a39e5b..07052b9 100755
--- a/src/gallium/auxiliary/util/u_format_parse.py
+++ b/src/gallium/auxiliary/util/u_format_parse.py
@@ -144,9 +144,18 @@ class Format:
         if self.layout != PLAIN:
             return False
         ref_channel = self.channels[0]
-        for channel in self.channels[1:]:
+        if ref_channel.type == VOID:
+           ref_channel = self.channels[1]
+        for channel in self.channels:
             if channel.size and (channel.size != ref_channel.size or 
channel.size % 8):
                 return False
+            if channel.type != VOID:
+                if channel.type != ref_channel.type:
+                    return False
+                if channel.norm != ref_channel.norm:
+                    return False
+                if channel.pure != ref_channel.pure:
+                    return False
         return True
 
     def is_mixed(self):
-- 
1.7.9.5

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to