summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrice Mandin <patmandin@gmail.com>2009-07-24 23:37:46 +0200
committerPatrice Mandin <patmandin@gmail.com>2009-07-24 23:37:46 +0200
commit8c30292a6e48448318d84582df876f35c490f968 (patch)
tree62c25b5279290b14e9f34964de1d41ec4ac15c74
parent12b183d2506e49774aad23543f5bb477904cb1c7 (diff)
nouveau: use nv04_surface_copy_swizzle only for POT sizes
-rw-r--r--src/gallium/drivers/nv04/nv04_surface_2d.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/drivers/nv04/nv04_surface_2d.c b/src/gallium/drivers/nv04/nv04_surface_2d.c
index d794c076f0..c0adf7ce85 100644
--- a/src/gallium/drivers/nv04/nv04_surface_2d.c
+++ b/src/gallium/drivers/nv04/nv04_surface_2d.c
@@ -110,10 +110,12 @@ nv04_surface_copy_swizzle(struct nv04_surface_2d *ctx,
unsigned cx;
unsigned cy;
+#if 0
/* POT or GTFO */
assert(!(w & (w - 1)) && !(h & (h - 1)));
/* That's the way she likes it */
assert(src_pitch == ((struct nv04_surface *)dst)->pitch);
+#endif
BEGIN_RING(chan, swzsurf, NV04_SWIZZLED_SURFACE_DMA_IMAGE, 1);
OUT_RELOCo(chan, dst_bo,
@@ -258,7 +260,8 @@ nv04_surface_copy(struct nv04_surface_2d *ctx, struct pipe_surface *dst,
assert(src->format == dst->format);
/* Setup transfer to swizzle the texture to vram if needed */
- if (src_linear && !dst_linear && w > 1 && h > 1) {
+ if (src_linear && !dst_linear && w > 1 && h > 1 &&
+ !(w & (w - 1)) && !(h & (h - 1))) { /* POT only */
nv04_surface_copy_swizzle(ctx, dst, dx, dy, src, sx, sy, w, h);
return;
}