diff options
author | Chris Robinson <[email protected]> | 2012-10-13 08:58:48 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2012-10-13 08:58:48 -0700 |
commit | e60281c9277c46822f2f6b844c4910c3e1e55298 (patch) | |
tree | 713fd757ab3a331649bfaba0321988a1305425d3 /OpenAL32 | |
parent | 01136ecd5170c7675e576f05635fc9c20d3fc113 (diff) |
Don't use a loop to determine the next power of 2
Diffstat (limited to 'OpenAL32')
-rw-r--r-- | OpenAL32/Include/alMain.h | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index b5c3493c..fec9856f 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -393,18 +393,16 @@ struct Hrtf; // Find the next power-of-2 for non-power-of-2 numbers. static __inline ALuint NextPowerOf2(ALuint value) { - ALuint powerOf2 = 1; - - if(value) + if(value > 0) { value--; - while(value) - { - value >>= 1; - powerOf2 <<= 1; - } + value |= value>>1; + value |= value>>2; + value |= value>>4; + value |= value>>8; + value |= value>>16; } - return powerOf2; + return value+1; } /* Fast float-to-int conversion. Assumes the FPU is already in round-to-zero |