summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Whitwell <keithw@vmware.com>2009-10-09 16:05:26 +0100
committerKeith Whitwell <keithw@vmware.com>2009-10-09 16:07:58 +0100
commit82ec7f018d20e46e9c43ea467354dcfe4f03bae3 (patch)
tree2fbf2f6525e790727fb40ba1cd1e23d1bacd358e /src
parent85999695829823e459e11822b4846ed1db5c055d (diff)
llvmpipe: correct binning maths for iterating over whole tiles
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast.c5
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_tri.c12
2 files changed, 11 insertions, 6 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
index cba50c8049..d4f369d4d0 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast.c
@@ -192,6 +192,7 @@ void lp_rast_load_zstencil( struct lp_rasterizer *rast,
void lp_rast_shade_tile( struct lp_rasterizer *rast,
const union lp_rast_cmd_arg arg )
{
+#if 0
const struct lp_rast_shader_inputs *inputs = arg.shade_tile;
const unsigned masks[4] = {~0, ~0, ~0, ~0};
unsigned x, y;
@@ -203,6 +204,10 @@ void lp_rast_shade_tile( struct lp_rasterizer *rast,
for (y = 0; y < TILE_SIZE; y += 2)
for (x = 0; x < TILE_SIZE; x += 8)
lp_rast_shade_quads( rast, inputs, x, y, masks);
+#else
+ RAST_DEBUG("%s\n", __FUNCTION__);
+ memset(rast->tile.color, 0x80, TILE_SIZE * TILE_SIZE * 4);
+#endif
}
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
index 78e53292ec..c437940381 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
@@ -357,13 +357,13 @@ do_triangle_ccw(struct setup_context *setup,
c2 = tri->c2 + tri->dx23 * miny - tri->dy23 * minx;
c3 = tri->c3 + tri->dx31 * miny - tri->dy31 * minx;
- /* Convert to tile coordinates:
- */
minx /= TILESIZE;
- maxx /= TILESIZE;
miny /= TILESIZE;
+ maxx /= TILESIZE;
maxy /= TILESIZE;
-
+
+ /* Convert to tile coordinates:
+ */
if (miny == maxy && minx == maxx)
{
/* Triangle is contained in a single tile:
@@ -399,13 +399,13 @@ do_triangle_ccw(struct setup_context *setup,
* Trivially accept or reject blocks, else jump to per-pixel
* examination above.
*/
- for (y = miny; y < maxy; y++)
+ for (y = miny; y <= maxy; y++)
{
float cx1 = c1;
float cx2 = c2;
float cx3 = c3;
- for (x = minx; x < maxx; x++)
+ for (x = minx; x <= maxx; x++)
{
if (cx1 + eo1 < 0 ||
cx2 + eo2 < 0 ||