i915: Work around texture pitch related performance drops on i915 at least.
authorMichel Dänzer <michel@tungstengraphics.com>
Wed, 3 Oct 2007 08:48:56 +0000 (10:48 +0200)
committerMichel Dänzer <michel@tungstengraphics.com>
Wed, 3 Oct 2007 09:06:48 +0000 (11:06 +0200)
src/mesa/drivers/dri/i915/intel_mipmap_tree.c

index 74f6b2d85153dfcd6d73b9c9b06b2d2458081a80..aefb89ac83c7537faf16b9c047f2170587ea25ff 100644 (file)
@@ -104,7 +104,16 @@ intel_miptree_create(struct intel_context *intel,
          * replaced at some point by some scheme to only do this when really
          * necessary.
          */
-        mt->pitch = ((mt->pitch * cpp + 63) & ~63) / cpp;
+        mt->pitch = (mt->pitch * cpp + 63) & ~63;
+
+        /* XXX: At least the i915 seems very upset when the pitch is a multiple
+         * of 1024 and sometimes 512 bytes - performance can drop by several
+         * times. Go to the next multiple of 64 for now.
+         */
+        if (!(mt->pitch & 511))
+           mt->pitch += 64;
+
+        mt->pitch /= cpp;
       }
 
       mt->region = intel_region_alloc(intel->intelScreen,