diff options
author | Brian Paul <[email protected]> | 2012-06-22 13:06:40 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2012-06-25 08:14:33 -0600 |
commit | 45df3eb1db7147aca31134723972e1de4f6a7a16 (patch) | |
tree | 9fcb364d4c707c0a2e3dbe633f0d35f4bdb57b42 /src | |
parent | 37d699a296ac1d63b9276224847df4b645b53fe2 (diff) |
llvmpipe: fix the LP_NO_RAST debug option
It was only no-oping the clear() function, not actual triangle
rasterization. Move the no_rast field from lp_context down into
lp_rasterizer so it's accessible where it's needed.
Reviewed-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_clear.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_context.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_rast.c | 36 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_rast_priv.h | 1 |
4 files changed, 22 insertions, 24 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_clear.c b/src/gallium/drivers/llvmpipe/lp_clear.c index 0b37347a967..cc90dc42c65 100644 --- a/src/gallium/drivers/llvmpipe/lp_clear.c +++ b/src/gallium/drivers/llvmpipe/lp_clear.c @@ -53,9 +53,6 @@ llvmpipe_clear(struct pipe_context *pipe, { struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe); - if (llvmpipe->no_rast) - return; - if (!llvmpipe_check_render_cond(llvmpipe)) return; diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c index 8c0206b9d9c..7f92a5fe5a7 100644 --- a/src/gallium/drivers/llvmpipe/lp_context.c +++ b/src/gallium/drivers/llvmpipe/lp_context.c @@ -47,9 +47,6 @@ #include "lp_setup.h" -DEBUG_GET_ONCE_BOOL_OPTION(lp_no_rast, "LP_NO_RAST", FALSE) - - /** shared by all contexts */ unsigned llvmpipe_variant_count; @@ -207,9 +204,6 @@ llvmpipe_create_context( struct pipe_screen *screen, void *priv ) /* FIXME: devise alternative to draw_texture_samplers */ - if (debug_get_option_lp_no_rast()) - llvmpipe->no_rast = TRUE; - llvmpipe->setup = lp_setup_create( &llvmpipe->pipe, llvmpipe->draw ); if (!llvmpipe->setup) diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index efa5024717e..7e9405567b3 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -701,28 +701,32 @@ rasterize_scene(struct lp_rasterizer_task *task, struct lp_scene *scene) { task->scene = scene; - /* loop over scene bins, rasterize each */ + + if (!task->rast->no_rast) { + /* 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); + { + 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; + { + struct cmd_bin *bin; - assert(scene); - while ((bin = lp_scene_bin_iter_next(scene))) { - if (!is_empty_bin( bin )) - rasterize_bin(task, bin); + assert(scene); + while ((bin = lp_scene_bin_iter_next(scene))) { + if (!is_empty_bin( bin )) + rasterize_bin(task, bin); + } } - } #endif + } + if (scene->fence) { lp_fence_signal(scene->fence); @@ -896,6 +900,8 @@ lp_rast_create( unsigned num_threads ) rast->num_threads = num_threads; + rast->no_rast = debug_get_bool_option("LP_NO_RAST", FALSE); + create_rast_threads(rast); /* for synchronizing rasterization threads */ diff --git a/src/gallium/drivers/llvmpipe/lp_rast_priv.h b/src/gallium/drivers/llvmpipe/lp_rast_priv.h index d0bda354732..b5d0074e894 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_priv.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_priv.h @@ -111,6 +111,7 @@ struct lp_rasterizer_task struct lp_rasterizer { boolean exit_flag; + boolean no_rast; /**< For debugging/profiling */ /** The incoming queue of scenes ready to rasterize */ struct lp_scene_queue *full_scenes; |