diff options
author | José Fonseca <[email protected]> | 2012-11-28 19:18:09 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2012-11-29 14:08:42 +0000 |
commit | a47674ee89f9f41c3be96ee47c476144bf6b779b (patch) | |
tree | ab7110fdbbfbf5808c4ad19c5dc7fbd8e185fe89 | |
parent | 64e9ec634b1d8ea20b83ab49f889121c17691368 (diff) |
util/u_format: Tighten the meaning of is_array bit to exclude mixed type formats.
This is what we want in practice.
The only change is in PIPE_FORMAT_R8SG8SB8UX8U_NORM, which no longer is
considered an array format.
Reviewed-by: Roland Scheidegger <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/util/u_format.h | 2 | ||||
-rwxr-xr-x | 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 25bfd234b9a..ec368fd75de 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 3a39e5ba524..07052b99666 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): |