diff options
author | Pekka Paalanen <[email protected]> | 2008-12-13 23:24:39 +0200 |
---|---|---|
committer | Pekka Paalanen <[email protected]> | 2008-12-13 23:24:39 +0200 |
commit | f72848a09a9d3069705fbe8e4daa29b9918ea56e (patch) | |
tree | 2aa40f4523fa5c55a0680e59fc052bd188fc4a34 /src/gallium/drivers/nouveau/nouveau_util.h | |
parent | 079116e6a487988c7f0411f60c652bb29d69b488 (diff) |
Nouveau: move the definition of log2i() to header
Also make the type unsigned instead of signed, since negative
values do not make sense.
Signed-off-by: Pekka Paalanen <[email protected]>
Diffstat (limited to 'src/gallium/drivers/nouveau/nouveau_util.h')
-rw-r--r-- | src/gallium/drivers/nouveau/nouveau_util.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/nouveau_util.h b/src/gallium/drivers/nouveau/nouveau_util.h index c92041ebeba..a10114beab9 100644 --- a/src/gallium/drivers/nouveau/nouveau_util.h +++ b/src/gallium/drivers/nouveau/nouveau_util.h @@ -61,4 +61,31 @@ nouveau_vbuf_split(unsigned remaining, unsigned overhead, unsigned vpp, return max; } +/* Integer base-2 logarithm, rounded towards zero. */ +static INLINE unsigned log2i(unsigned i) +{ + unsigned r = 0; + + if (i & 0xffff0000) { + i >>= 16; + r += 16; + } + if (i & 0x0000ff00) { + i >>= 8; + r += 8; + } + if (i & 0x000000f0) { + i >>= 4; + r += 4; + } + if (i & 0x0000000c) { + i >>= 2; + r += 2; + } + if (i & 0x00000002) { + r += 1; + } + return r; +} + #endif |