u_math: Add align function npot alignments
authorJakob Bornecrantz <wallbraker@gmail.com>
Sun, 13 Jun 2010 14:07:49 +0000 (16:07 +0200)
committerJakob Bornecrantz <wallbraker@gmail.com>
Tue, 22 Jun 2010 18:04:54 +0000 (20:04 +0200)
src/gallium/auxiliary/util/u_math.h

index 6370e77986502a8f6384c5e83a68a4045c0c04c9..fe19466436a089ef1fb04ef2ef6e819ad78dfe38 100644 (file)
@@ -567,12 +567,26 @@ util_bswap16(uint16_t n)
 #define MAX3( A, B, C ) MAX2( MAX2( A, B ), C )
 
 
+/**
+ * Align a value, only works pot alignemnts.
+ */
 static INLINE int
 align(int value, int alignment)
 {
    return (value + alignment - 1) & ~(alignment - 1);
 }
 
+/**
+ * Works like align but on npot alignments.
+ */
+static INLINE size_t
+util_align_npot(size_t value, size_t alignment)
+{
+   if (value % alignment)
+      return value + (alignment - (value % alignment));
+   return value;
+}
+
 static INLINE unsigned
 u_minify(unsigned value, unsigned levels)
 {