intel/isl: Add an isl_color_value_is_zero helper
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 12 Feb 2018 23:50:12 +0000 (15:50 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 20 Feb 2018 21:49:24 +0000 (13:49 -0800)
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
src/intel/isl/isl.c
src/intel/isl/isl.h

index 4dce0596d23cbd28bc3d300ccf9df2e49fbcd2cd..1a32c028183f9723b49b910e1dbacf2b125db3a0 100644 (file)
@@ -268,6 +268,26 @@ isl_tiling_get_info(enum isl_tiling tiling,
    };
 }
 
+bool
+isl_color_value_is_zero(union isl_color_value value,
+                        enum isl_format format)
+{
+   const struct isl_format_layout *fmtl = isl_format_get_layout(format);
+
+#define RETURN_FALSE_IF_NOT_0(c, i) \
+   if (fmtl->channels.c.bits && value.u32[i] != 0) \
+      return false
+
+   RETURN_FALSE_IF_NOT_0(r, 0);
+   RETURN_FALSE_IF_NOT_0(g, 1);
+   RETURN_FALSE_IF_NOT_0(b, 2);
+   RETURN_FALSE_IF_NOT_0(a, 3);
+
+#undef RETURN_FALSE_IF_NOT_0
+
+   return true;
+}
+
 bool
 isl_color_value_is_zero_one(union isl_color_value value,
                             enum isl_format format)
index fda241151017b58a1189676027987e905e6b1607..209769a9a99e9759ac6ba3079438e885c973bfaa 100644 (file)
@@ -1692,6 +1692,9 @@ isl_extent4d(uint32_t width, uint32_t height, uint32_t depth,
    return e;
 }
 
+bool isl_color_value_is_zero(union isl_color_value value,
+                             enum isl_format format);
+
 bool isl_color_value_is_zero_one(union isl_color_value value,
                                  enum isl_format format);