diff options
author | Michel Dänzer <michel@tungstengraphics.com> | 2007-10-03 10:48:56 +0200 |
---|---|---|
committer | Michel Dänzer <michel@tungstengraphics.com> | 2007-10-03 11:06:48 +0200 |
commit | 1bc84102ad4df377df6c8bf5734b886b7683b939 (patch) | |
tree | 645ca7bfda677a1ff237159f8b2e04cbbbaa5090 | |
parent | de1d725f442caa4d8ecbac3256b5a33d1f4a1257 (diff) |
i915: Work around texture pitch related performance drops on i915 at least.
-rw-r--r-- | src/mesa/drivers/dri/i915/intel_mipmap_tree.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c index 74f6b2d851..aefb89ac83 100644 --- a/src/mesa/drivers/dri/i915/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i915/intel_mipmap_tree.c @@ -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, |