gallium: fix bug in which wide point stage overrode the aapoint stage
authorBrian <brian.paul@tungstengraphics.com>
Sat, 23 Feb 2008 00:22:10 +0000 (17:22 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Sat, 23 Feb 2008 00:22:54 +0000 (17:22 -0700)
Also, simplify the logic a bit.

src/gallium/auxiliary/draw/draw_validate.c

index efd6793f2bb4b8807792d63ca72f898a963b4966..3a19dd4cd7881d6a05c11a34728e68a49c941718 100644 (file)
@@ -45,6 +45,7 @@ static struct draw_stage *validate_pipeline( struct draw_stage *stage )
    struct draw_stage *next = draw->pipeline.rasterize;
    int need_det = 0;
    int precalc_flat = 0;
+   boolean wide_lines, wide_points;
 
    /* Set the validate's next stage to the rasterize stage, so that it
     * can be found later if needed for flushing.
@@ -68,9 +69,18 @@ static struct draw_stage *validate_pipeline( struct draw_stage *stage )
       next = draw->pipeline.aapoint;
    }
 
-   if ((draw->rasterizer->line_width != 1.0 && draw->convert_wide_lines
-        && !draw->rasterizer->line_smooth) ||
-       (draw->rasterizer->point_size != 1.0 && draw->convert_wide_points) ||
+   /* drawing wide lines? */
+   wide_lines = (draw->rasterizer->line_width != 1.0
+                 && draw->convert_wide_lines
+                 && !draw->rasterizer->line_smooth);
+
+   /* drawing large points? */
+   wide_points = (draw->rasterizer->point_size != 1.0
+                  && draw->convert_wide_points
+                  && !draw->pipeline.aapoint);
+   
+   if (wide_lines ||
+       wide_points ||
        draw->rasterizer->point_sprite) {
       draw->pipeline.wide->next = next;
       next = draw->pipeline.wide;