llvmpipe: fix the LP_NO_RAST debug option
authorBrian Paul <brianp@vmware.com>
Fri, 22 Jun 2012 19:06:40 +0000 (13:06 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 25 Jun 2012 14:14:33 +0000 (08:14 -0600)
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>
src/gallium/drivers/llvmpipe/lp_clear.c
src/gallium/drivers/llvmpipe/lp_context.c
src/gallium/drivers/llvmpipe/lp_rast.c
src/gallium/drivers/llvmpipe/lp_rast_priv.h

index 0b37347a967c3e0d8a18323fda3cdf97f34d8c47..cc90dc42c659fa980d8c8be8d1ce85596507a015 100644 (file)
@@ -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;
 
index 8c0206b9d9c67e39880b191c841a9649b080df41..7f92a5fe5a71a50149b815feb58cc07a56bec815 100644 (file)
@@ -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)
index efa5024717ef6d975d959ec6fdfe82eb63748369..7e9405567b344e3401f82e8b9789573422d2bd15 100644 (file)
@@ -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 */
index d0bda354732731889a62484a357dabd285286e86..b5d0074e89437c66d3728f36a372d87e57993d27 100644 (file)
@@ -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;