From: Younes Manton Date: Sun, 27 Sep 2009 18:40:14 +0000 (-0400) Subject: util: Add util_next_power_of_two() for rounding a uint up to a POT. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=da793b743462e84e3bca7a0ed7f24b4c942e0834;p=mesa.git util: Add util_next_power_of_two() for rounding a uint up to a POT. --- diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h index cd6a9fcc091..75b075f160d 100644 --- a/src/gallium/auxiliary/util/u_math.h +++ b/src/gallium/auxiliary/util/u_math.h @@ -470,6 +470,26 @@ util_logbase2(unsigned n) } +/** + * Returns the smallest power of two >= x + */ +static INLINE unsigned +util_next_power_of_two(unsigned x) +{ + unsigned i; + + if (x == 0) + return 1; + + --x; + + for (i = 1; i < sizeof(unsigned) * 8; i <<= 1) + x |= x >> i; + + return x + 1; +} + + /** * Clamp X to [MIN, MAX]. * This is a macro to allow float, int, uint, etc. types.