diff options
author | Adam Jackson <[email protected]> | 2013-05-29 01:36:43 +0200 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2013-05-31 20:21:05 +0200 |
commit | e881c9a5dc5457f0b096a3c583c5b1450beb89e9 (patch) | |
tree | d4f859954289a482301de16477cd1429fb28005b /src/gallium/drivers/llvmpipe/lp_rast.c | |
parent | eb4c992ea5e69083d2bc705d2460ce956c5063a7 (diff) |
llvmpipe: Remove x/y from cmd_bin
These were mostly just a waste of memory and cache pressure, and were
really only used for debugging.
This change reduces instruction count (as measured by callgrind's Ir
event) of gnome-shell-perf-tool on Ivybridge by 3.5% ± 0.015% (n=20).
Signed-off-by: Adam Jackson <[email protected]>
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_rast.c')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_rast.c | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index 8a4b00f785d..5c837a043e0 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -87,13 +87,14 @@ lp_rast_end( struct lp_rasterizer *rast ) */ static void lp_rast_tile_begin(struct lp_rasterizer_task *task, - const struct cmd_bin *bin) + const struct cmd_bin *bin, + int x, int y) { - LP_DBG(DEBUG_RAST, "%s %d,%d\n", __FUNCTION__, bin->x, bin->y); + LP_DBG(DEBUG_RAST, "%s %d,%d\n", __FUNCTION__, x, y); task->bin = bin; - task->x = bin->x * TILE_SIZE; - task->y = bin->y * TILE_SIZE; + task->x = x * TILE_SIZE; + task->y = y * TILE_SIZE; /* reset pointers to color and depth tile(s) */ memset(task->color_tiles, 0, sizeof(task->color_tiles)); @@ -575,13 +576,14 @@ static lp_rast_cmd_func dispatch[LP_RAST_OP_MAX] = static void do_rasterize_bin(struct lp_rasterizer_task *task, - const struct cmd_bin *bin) + const struct cmd_bin *bin, + int x, int y) { const struct cmd_block *block; unsigned k; if (0) - lp_debug_bin(bin); + lp_debug_bin(bin, x, y); for (block = bin->head; block; block = block->next) { for (k = 0; k < block->count; k++) { @@ -600,11 +602,11 @@ do_rasterize_bin(struct lp_rasterizer_task *task, */ static void rasterize_bin(struct lp_rasterizer_task *task, - const struct cmd_bin *bin ) + const struct cmd_bin *bin, int x, int y ) { - lp_rast_tile_begin( task, bin ); + lp_rast_tile_begin( task, bin, x, y ); - do_rasterize_bin(task, bin); + do_rasterize_bin(task, bin, x, y); lp_rast_tile_end(task); @@ -646,27 +648,16 @@ rasterize_scene(struct lp_rasterizer_task *task, if (!task->rast->no_rast && !scene->discard) { /* loop over scene bins, rasterize each */ -#if 0 - { - unsigned i, j; - for (i = 0; i < scene->tiles_x; i++) { - for (j = 0; j < scene->tiles_y; j++) { - struct cmd_bin *bin = lp_scene_get_bin(scene, i, j); - rasterize_bin(task, bin, i, j); - } - } - } -#else { struct cmd_bin *bin; + int i, j; assert(scene); - while ((bin = lp_scene_bin_iter_next(scene))) { + while ((bin = lp_scene_bin_iter_next(scene, &i, &j))) { if (!is_empty_bin( bin )) - rasterize_bin(task, bin); + rasterize_bin(task, bin, i, j); } } -#endif } |