Module: Mesa Branch: master Commit: 1a45c2bce7480ef1d125439aed8413bcff0ab468 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a45c2bce7480ef1d125439aed8413bcff0ab468
Author: Pauli Nieminen <[email protected]> Date: Sun Feb 7 07:36:13 2010 +0200 mesa: Fix mesa_next_pow_two to return same value if parameter is pow2. Without subtracting one pow2 value would be rounded up to next pow2 which is not correct behaviour for the function. --- src/mesa/main/imports.h | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index 81cb396..3843f50 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -417,7 +417,8 @@ static INLINE int32_t _mesa_next_pow_two_32(uint32_t x) { #ifdef __GNUC__ - return 1 << (__builtin_clz(x) ^ 31); + x--; + return 1 << ((__builtin_clz(x) ^ 31) + 1); #else x--; x |= x >> 1; @@ -434,10 +435,11 @@ static INLINE int64_t _mesa_next_pow_two_64(uint64_t x) { #ifdef __GNUC__ + x--; if (sizeof(x) == sizeof(long)) - return 1 << (__builtin_clzl(x) ^ 63); + return 1 << ((__builtin_clzl(x) ^ 63) + 1); else - return 1 << (__builtin_clzll(x) ^ 63); + return 1 << ((__builtin_clzll(x) ^ 63) + 1); #else x--; x |= x >> 1; _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
