gallium/draw: additional comments in the clipping code
authorBrian Paul <brianp@vmware.com>
Fri, 7 May 2010 23:13:16 +0000 (17:13 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 7 May 2010 23:13:16 +0000 (17:13 -0600)
src/gallium/auxiliary/draw/draw_pipe_clip.c

index d0532cb..df8d82e 100644 (file)
@@ -157,6 +157,10 @@ static void interp( const struct clip_stage *clip,
 }
 
 
+/**
+ * Emit a post-clip polygon to the next pipeline stage.  The polygon
+ * will be convex and the provoking vertex will always be vertex[0].
+ */
 static void emit_poly( struct draw_stage *stage,
                       struct vertex_header **inlist,
                       unsigned n,
@@ -183,16 +187,16 @@ static void emit_poly( struct draw_stage *stage,
    header.pad = 0;
 
    for (i = 2; i < n; i++, header.flags = edge_middle) {
-      /* keep in provoking vertex for flatshading */
+      /* order the triangle verts to respect the provoking vertex mode */
       if (stage->draw->rasterizer->flatshade_first) {
-         header.v[0] = inlist[0];
+         header.v[0] = inlist[0];  /* the provoking vertex */
          header.v[1] = inlist[i-1];
          header.v[2] = inlist[i];
       }
       else {
          header.v[0] = inlist[i-1];
          header.v[1] = inlist[i];
-         header.v[2] = inlist[0];
+         header.v[2] = inlist[0];  /* the provoking vertex */
       }
 
       if (i == n-1)
@@ -201,7 +205,8 @@ static void emit_poly( struct draw_stage *stage,
       if (0) {
          const struct draw_vertex_shader *vs = stage->draw->vs.vertex_shader;
          uint j, k;
-         debug_printf("Clipped tri:\n");
+         debug_printf("Clipped tri: (flat-shade-first = %d)\n",
+                      stage->draw->rasterizer->flatshade_first);
          for (j = 0; j < 3; j++) {
             for (k = 0; k < vs->info.num_outputs; k++) {
                debug_printf("  Vert %d: Attr %d:  %f %f %f %f\n", j, k,
@@ -307,7 +312,7 @@ do_clip_tri( struct draw_stage *stage,
       }
    }
 
-   /* If flat-shading, copy color to new provoking vertex.
+   /* If flat-shading, copy provoking vertex color to polygon vertex[0]
     */
    if (clipper->flat) {
       if (stage->draw->rasterizer->flatshade_first) {