cogl-texture-2d: Optimise _cogl_texture_2d_is_pot
authorNeil Roberts <neil@linux.intel.com>
Thu, 20 May 2010 11:37:56 +0000 (12:37 +0100)
committerNeil Roberts <neil@linux.intel.com>
Thu, 20 May 2010 11:40:59 +0000 (12:40 +0100)
This takes the simple algorithm from here:

http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2

This avoids a loop and is much faster.

clutter/cogl/cogl/cogl-texture-2d.c

index 044f75d..4ec2e0e 100644 (file)
@@ -156,21 +156,8 @@ _cogl_texture_2d_free (CoglTexture2D *tex_2d)
 static gboolean
 _cogl_texture_2d_is_pot (unsigned int num)
 {
-  gboolean have_bit = FALSE;
-
   /* Make sure there is only one bit set */
-  while (num)
-    {
-      if (num & 1)
-        {
-          if (have_bit)
-            return FALSE;
-          have_bit = TRUE;
-        }
-      num >>= 1;
-    }
-
-  return TRUE;
+  return (num & (num - 1)) == 0;
 }
 
 static gboolean