From 94d2a809f9cabf3821be9b0d2b11b26151ed3084 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 15 Jul 2009 12:03:34 +1000 Subject: [PATCH] radeon: r300 fix span reading for macro tiled buffers. this uses the correct formula for macro tiled buffers for readback --- src/mesa/drivers/dri/radeon/radeon_span.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index 2530a82d596..2da931ea621 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -74,12 +74,13 @@ static GLubyte *radeon_ptr32(const struct radeon_renderbuffer * rrb, offset += ((x & 31) >> 2) << 5; offset += (x & 3) << 2; } else { - nmacroblkpl = rrb->pitch >> 6; - offset += ((y >> 3) * nmacroblkpl) << 11; - offset += (y & 7) << 8; - offset += (x >> 6) << 11; - offset += ((x & 63) >> 3) << 5; - offset += (x & 7) << 2; + offset = ((y >> 3) * (rrb->pitch >> 8) + (x >> 6)) << 11; + offset += (((y >> 2) ^ (x >> 6)) & 0x1) << 10; + offset += (((y >> 3) ^ (x >> 5)) & 0x1) << 9; + offset += (((y >> 1) ^ (x >> 5)) & 0x1) << 8; + offset += (((y >> 2) ^ (x >> 4)) & 0x1) << 7; + offset += (y & 1) << 6; + offset += (x & 15) << 2; } } else { nmicroblkpl = ((rrb->pitch + 31) & ~31) >> 5; -- 2.30.2