summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2012-06-22 13:06:40 -0600
committerBrian Paul <brianp@vmware.com>2012-06-25 08:14:33 -0600
commit45df3eb1db7147aca31134723972e1de4f6a7a16 (patch)
tree9fcb364d4c707c0a2e3dbe633f0d35f4bdb57b42
parent37d699a296ac1d63b9276224847df4b645b53fe2 (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 <jfonseca@vmware.com>
-rw-r--r--src/gallium/drivers/llvmpipe/lp_clear.c3
-rw-r--r--src/gallium/drivers/llvmpipe/lp_context.c6
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast.c36
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast_priv.h1
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;