llvmpipe: count c_primitives before discarding null prims
authorZack Rusin <zackr@vmware.com>
Thu, 19 Sep 2013 17:37:03 +0000 (13:37 -0400)
committerZack Rusin <zackr@vmware.com>
Wed, 25 Sep 2013 23:41:02 +0000 (19:41 -0400)
We need to count the clipper primitives before the rasterizer
discards one it considers to be null.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/drivers/llvmpipe/lp_setup_tri.c

index da9967ad3f113531a791300b4b03c041149819f0..051ffa098609f0135d54a1e21c77f9473de6c8e8 100644 (file)
@@ -252,7 +252,6 @@ do_triangle_ccw(struct lp_setup_context *setup,
                 const float (*v2)[4],
                 boolean frontfacing )
 {
-   struct llvmpipe_context *lp_context = (struct llvmpipe_context *)setup->pipe;
    struct lp_scene *scene = setup->scene;
    const struct lp_setup_variant_key *key = &setup->setup.variant->key;
    struct lp_rast_triangle *tri;
@@ -340,11 +339,6 @@ do_triangle_ccw(struct lp_setup_context *setup,
 
    LP_COUNT(nr_tris);
 
-   if (lp_context->active_statistics_queries &&
-       !llvmpipe_rasterization_disabled(lp_context)) {
-      lp_context->pipeline_statistics.c_primitives++;
-   }
-
    /* Setup parameter interpolants:
     */
    setup->setup.variant->jit_function( v0,
@@ -803,7 +797,6 @@ static void retry_triangle_ccw( struct lp_setup_context *setup,
    }
 }
 
-
 /**
  * Calculate fixed position data for a triangle
  */
@@ -1102,11 +1095,17 @@ static void triangle_both( struct lp_setup_context *setup,
                           const float (*v2)[4] )
 {
    struct fixed_position position;
+   struct llvmpipe_context *lp_context = (struct llvmpipe_context *)setup->pipe;
 
    if (setup->subdivide_large_triangles &&
        check_subdivide_triangle(setup, v0, v1, v2, triangle_both))
       return;
 
+   if (lp_context->active_statistics_queries &&
+       !llvmpipe_rasterization_disabled(lp_context)) {
+      lp_context->pipeline_statistics.c_primitives++;
+   }
+
    calc_fixed_position(setup, &position, v0, v1, v2);
 
    if (0) {