From 7d042ac2a285c220a396d91a6dbe5c7f4e697c71 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 30 Nov 2009 14:01:31 -0700 Subject: llvmpipe: minor refactoring of bin rasterization code --- src/gallium/drivers/llvmpipe/lp_setup.c | 44 +++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 16 deletions(-) (limited to 'src/gallium/drivers') diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 6d84147468..7091232350 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -170,13 +170,35 @@ static void bin_everywhere( struct setup_context *setup, } +/** Rasterize commands for a single bin */ +static void +rasterize_bin( struct lp_rasterizer *rast, + struct cmd_block_list *commands, + int x, int y) +{ + struct cmd_block *block; + unsigned k; + + lp_rast_start_tile( rast, x, y ); + + /* simply execute each of the commands in the block list */ + for (block = commands->head; block; block = block->next) { + for (k = 0; k < block->count; k++) { + block->cmd[k]( rast, block->arg[k] ); + } + } + + lp_rast_end_tile( rast ); +} + + +/** Rasterize all tile's bins */ static void rasterize_bins( struct setup_context *setup, boolean write_depth ) { struct lp_rasterizer *rast = setup->rast; - struct cmd_block *block; - unsigned i,j,k; + unsigned i, j; SETUP_DEBUG("%s\n", __FUNCTION__); @@ -187,23 +209,13 @@ rasterize_bins( struct setup_context *setup, setup->fb.zsbuf != NULL && write_depth, setup->fb.width, setup->fb.height ); - - + /* loop over tile bins, rasterize each */ for (i = 0; i < setup->tiles_x; i++) { for (j = 0; j < setup->tiles_y; j++) { - - lp_rast_start_tile( rast, - i * TILE_SIZE, - j * TILE_SIZE ); - - for (block = setup->tile[i][j].head; block; block = block->next) { - for (k = 0; k < block->count; k++) { - block->cmd[k]( rast, block->arg[k] ); - } - } - - lp_rast_end_tile( rast ); + rasterize_bin( rast, &setup->tile[i][j], + i * TILE_SIZE, + j * TILE_SIZE ); } } -- cgit v1.2.3