Mesa (mesa_7_5_branch): softpipe: fix out of bounds quad rasterization bug
Brian Paul
brianp at kemper.freedesktop.org
Tue Jun 16 14:43:46 PDT 2009
Module: Mesa
Branch: mesa_7_5_branch
Commit: 742ba084068b6856e94283a9c5fe3b39d48f64cb
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=742ba084068b6856e94283a9c5fe3b39d48f64cb
Author: Brian Paul <brianp at vmware.com>
Date: Tue Jun 16 15:41:49 2009 -0600
softpipe: fix out of bounds quad rasterization bug
For some triangles we can generate quads which lie just outside the
surface bounds. Just check the quad's mask before trying to emit/process
the quad.
Fixes failed assertion in Lightsmark.
---
src/gallium/drivers/softpipe/sp_setup.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/gallium/drivers/softpipe/sp_setup.c b/src/gallium/drivers/softpipe/sp_setup.c
index accc692..e5be652 100644
--- a/src/gallium/drivers/softpipe/sp_setup.c
+++ b/src/gallium/drivers/softpipe/sp_setup.c
@@ -444,7 +444,8 @@ static void flush_spans( struct setup_context *setup )
mask |= MASK_TOP_RIGHT;
if (x+1 >= xleft1 && x+1 < xright1)
mask |= MASK_BOTTOM_RIGHT;
- EMIT_QUAD( setup, x, setup->span.y, mask );
+ if (mask)
+ EMIT_QUAD( setup, x, setup->span.y, mask );
}
break;
@@ -458,7 +459,8 @@ static void flush_spans( struct setup_context *setup )
mask |= MASK_TOP_LEFT;
if (x+1 >= xleft0 && x+1 < xright0)
mask |= MASK_TOP_RIGHT;
- EMIT_QUAD( setup, x, setup->span.y, mask );
+ if (mask)
+ EMIT_QUAD( setup, x, setup->span.y, mask );
}
break;
@@ -472,7 +474,8 @@ static void flush_spans( struct setup_context *setup )
mask |= MASK_BOTTOM_LEFT;
if (x+1 >= xleft1 && x+1 < xright1)
mask |= MASK_BOTTOM_RIGHT;
- EMIT_QUAD( setup, x, setup->span.y, mask );
+ if (mask)
+ EMIT_QUAD( setup, x, setup->span.y, mask );
}
break;
More information about the mesa-commit
mailing list