From 3199c6e764c20c69a76c561b9f4b89a23e5a97f5 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Tue, 20 Oct 2009 09:44:23 +0100 Subject: llvmpipe: move block list into rast struct --- src/gallium/drivers/llvmpipe/lp_rast_priv.h | 7 ++++++ src/gallium/drivers/llvmpipe/lp_rast_tri.c | 35 +++++++++++++---------------- 2 files changed, 22 insertions(+), 20 deletions(-) (limited to 'src/gallium/drivers/llvmpipe') diff --git a/src/gallium/drivers/llvmpipe/lp_rast_priv.h b/src/gallium/drivers/llvmpipe/lp_rast_priv.h index 2333729807..323c046cf4 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_priv.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_priv.h @@ -74,6 +74,13 @@ struct lp_rasterizer { unsigned clear_depth; char clear_stencil; } state; + + int nr_blocks; + struct { + unsigned x; + unsigned y; + unsigned mask; + } blocks[256]; }; diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri.c b/src/gallium/drivers/llvmpipe/lp_rast_tri.c index 12ac840ef2..174e6ab19b 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri.c +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri.c @@ -36,22 +36,17 @@ #define BLOCKSIZE 4 -static struct { - int x; - int y; - unsigned mask; -} blocks[256]; -static int nr_blocks; /* Render a 4x4 unmasked block: */ static void block_full_4( struct lp_rasterizer *rast, int x, int y ) { - blocks[nr_blocks].x = x; - blocks[nr_blocks].y = y; - blocks[nr_blocks].mask = ~0; - nr_blocks++; + int i = rast->nr_blocks; + rast->blocks[i].x = x; + rast->blocks[i].y = y; + rast->blocks[i].mask = ~0; + rast->nr_blocks++; } @@ -86,15 +81,15 @@ do_block_4( struct lp_rasterizer *rast, (c2 + tri->step[1][i]) | (c3 + tri->step[2][i])) >> 31)) & (1 << i); - /* As we do trivial reject already, masks should rarely be all * zero: */ if (mask) { - blocks[nr_blocks].x = x; - blocks[nr_blocks].y = y; - blocks[nr_blocks].mask = mask; - nr_blocks++; + int i = rast->nr_blocks; + rast->blocks[i].x = x; + rast->blocks[i].y = y; + rast->blocks[i].mask = mask; + rast->nr_blocks++; } } @@ -169,7 +164,7 @@ void lp_rast_triangle( struct lp_rasterizer *rast, debug_printf("%s\n", __FUNCTION__); - nr_blocks = 0; + rast->nr_blocks = 0; for (iy = 0; iy < 64; iy+=16) { @@ -197,10 +192,10 @@ void lp_rast_triangle( struct lp_rasterizer *rast, } } - for (i = 0; i < nr_blocks; i++) + for (i = 0; i < rast->nr_blocks; i++) lp_rast_shade_quads(rast, &tri->inputs, - blocks[i].x, - blocks[i].y, - blocks[i].mask); + rast->blocks[i].x, + rast->blocks[i].y, + rast->blocks[i].mask); } -- cgit v1.2.3