isl/format: Add a get_num_channels helper
authorJason Ekstrand <jason.ekstrand@intel.com>
Sat, 16 Apr 2016 04:36:21 +0000 (21:36 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 22 Apr 2016 03:44:27 +0000 (20:44 -0700)
Reviewed-by: Chad Versace <chad.versace@intel.com>
src/intel/isl/isl.h
src/intel/isl/isl_format.c

index bc242dbd4a31ed75efb32fc8fc82dc963115e5f3..2a29b28da597600d3211266b941c87c566236a7e 100644 (file)
@@ -854,6 +854,8 @@ isl_format_has_int_channel(enum isl_format fmt)
           isl_format_has_sint_channel(fmt);
 }
 
+unsigned isl_format_get_num_channels(enum isl_format fmt);
+
 static inline bool
 isl_format_is_compressed(enum isl_format fmt)
 {
index fd16ea19658fea87aaac3aba96ccfbef186ea6b1..4d02b1dd1e6283b5faa19be7c1b492bf56b6e417 100644 (file)
@@ -75,6 +75,21 @@ isl_format_has_sint_channel(enum isl_format fmt)
    return isl_format_has_channel_type(fmt, ISL_SINT);
 }
 
+unsigned
+isl_format_get_num_channels(enum isl_format fmt)
+{
+   const struct isl_format_layout *fmtl = isl_format_get_layout(fmt);
+
+   assert(fmtl->channels.p.bits == 0);
+
+   return (fmtl->channels.r.bits > 0) +
+          (fmtl->channels.g.bits > 0) +
+          (fmtl->channels.b.bits > 0) +
+          (fmtl->channels.a.bits > 0) +
+          (fmtl->channels.l.bits > 0) +
+          (fmtl->channels.i.bits > 0);
+}
+
 enum isl_format
 isl_format_rgb_to_rgba(enum isl_format rgb)
 {