Mesa (master): util: add uint version of pack_z_stencil

Jose Fonseca jrfonseca at kemper.freedesktop.org
Thu Jul 29 18:19:40 UTC 2010


Module: Mesa
Branch: master
Commit: a258701cd949d45041ed571ca08fedc40de2cf69
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a258701cd949d45041ed571ca08fedc40de2cf69

Author: Keith Whitwell <keithw at vmware.com>
Date:   Fri Jul 16 12:50:01 2010 +0100

util: add uint version of pack_z_stencil

Useful for packing mask values.

---

 src/gallium/auxiliary/util/u_pack_color.h |   47 +++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_pack_color.h b/src/gallium/auxiliary/util/u_pack_color.h
index 3ebef9f..5f113f7 100644
--- a/src/gallium/auxiliary/util/u_pack_color.h
+++ b/src/gallium/auxiliary/util/u_pack_color.h
@@ -425,6 +425,53 @@ util_pack_color(const float rgba[4], enum pipe_format format, union util_color *
    }
 }
  
+/* Integer versions of util_pack_z and util_pack_z_stencil - useful for
+ * constructing clear masks.
+ */
+static INLINE uint
+util_pack_uint_z(enum pipe_format format, unsigned z)
+{
+   switch (format) {
+   case PIPE_FORMAT_Z16_UNORM:
+      return z & 0xffff;
+   case PIPE_FORMAT_Z32_UNORM:
+   case PIPE_FORMAT_Z32_FLOAT:
+      return z;
+   case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
+   case PIPE_FORMAT_Z24X8_UNORM:
+      return z & 0xffffff;
+   case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
+   case PIPE_FORMAT_X8Z24_UNORM:
+      return (z & 0xffffff) << 8;
+   case PIPE_FORMAT_S8_USCALED:
+      return 0;
+   default:
+      debug_print_format("gallium: unhandled format in util_pack_z()", format);
+      assert(0);
+      return 0;
+   }
+}
+
+static INLINE uint
+util_pack_uint_z_stencil(enum pipe_format format, double z, uint s)
+{
+   unsigned packed = util_pack_uint_z(format, z);
+
+   s &= 0xff;
+
+   switch (format) {
+   case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
+      return packed | (s << 24);
+   case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
+      return packed | s;
+   case PIPE_FORMAT_S8_USCALED:
+      return packed | s;
+   default:
+      return packed;
+   }
+}
+
+
 
 /**
  * Note: it's assumed that z is in [0,1]




More information about the mesa-commit mailing list