Mesa (master): draw: forgot to add a file

Zack Rusin zack at kemper.freedesktop.org
Thu Jun 10 12:25:50 PDT 2010


Module: Mesa
Branch: master
Commit: 9896b7ebebfb36f12948b28c773ddba356d48e0d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9896b7ebebfb36f12948b28c773ddba356d48e0d

Author: Zack Rusin <zackr at vmware.com>
Date:   Thu Jun 10 15:25:30 2010 -0400

draw: forgot to add a file

---

 src/gallium/auxiliary/draw/draw_gs_tmp.h |  129 ++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_gs_tmp.h b/src/gallium/auxiliary/draw/draw_gs_tmp.h
new file mode 100644
index 0000000..eb4a313
--- /dev/null
+++ b/src/gallium/auxiliary/draw/draw_gs_tmp.h
@@ -0,0 +1,129 @@
+
+static void FUNC( struct draw_geometry_shader *shader,
+                  unsigned pipe_prim,
+                  unsigned count )
+{
+   struct draw_context *draw = shader->draw;
+
+   boolean flatfirst = (draw->rasterizer->flatshade &&
+                        draw->rasterizer->flatshade_first);
+   unsigned i;
+
+   if (0) debug_printf("%s %d\n", __FUNCTION__, count);
+
+
+   switch (pipe_prim) {
+   case PIPE_PRIM_POINTS:
+      for (i = 0; i < count; i++) {
+	 POINT( shader, i + 0 );
+      }
+      break;
+
+   case PIPE_PRIM_LINES:
+      for (i = 0; i+1 < count; i += 2) {
+         LINE( shader , i + 0 , i + 1 );
+      }
+      break;
+
+   case PIPE_PRIM_LINE_LOOP:
+      if (count >= 2) {
+
+         for (i = 1; i < count; i++) {
+            LINE( shader, i - 1, i );
+         }
+
+	 LINE( shader, i - 1, 0 );
+      }
+      break;
+
+   case PIPE_PRIM_LINE_STRIP:
+      for (i = 1; i < count; i++) {
+         LINE( shader, i - 1, i );
+      }
+      break;
+
+   case PIPE_PRIM_TRIANGLES:
+      for (i = 0; i+2 < count; i += 3) {
+         TRIANGLE( shader, i + 0, i + 1, i + 2 );
+      }
+      break;
+
+   case PIPE_PRIM_TRIANGLE_STRIP:
+      if (flatfirst) {
+         for (i = 0; i+2 < count; i++) {
+            TRIANGLE( shader,
+                      i + 0,
+                      i + 1 + (i&1),
+                      i + 2 - (i&1) );
+         }
+      }
+      else {
+         for (i = 0; i+2 < count; i++) {
+            TRIANGLE( shader,
+                      i + 0 + (i&1),
+                      i + 1 - (i&1),
+                      i + 2 );
+         }
+      }
+      break;
+
+   case PIPE_PRIM_TRIANGLE_FAN:
+      if (count >= 3) {
+         if (flatfirst) {
+            for (i = 0; i+2 < count; i++) {
+               TRIANGLE( shader,
+                         i + 1,
+                         i + 2,
+                         0 );
+            }
+         }
+         else {
+            for (i = 0; i+2 < count; i++) {
+               TRIANGLE( shader,
+                         0,
+                         i + 1,
+                         i + 2 );
+            }
+         }
+      }
+      break;
+
+   case PIPE_PRIM_POLYGON:
+      {
+         /* These bitflags look a little odd because we submit the
+          * vertices as (1,2,0) to satisfy flatshade requirements.
+          */
+         ushort edge_next, edge_finish;
+
+         if (flatfirst) {
+            edge_next = DRAW_PIPE_EDGE_FLAG_2;
+            edge_finish = DRAW_PIPE_EDGE_FLAG_0;
+         }
+         else {
+            edge_next = DRAW_PIPE_EDGE_FLAG_0;
+            edge_finish = DRAW_PIPE_EDGE_FLAG_1;
+         }
+
+	 for (i = 0; i+2 < count; i++) {
+
+            if (flatfirst) {
+               TRIANGLE( shader, 0, i + 1, i + 2 );
+            }
+            else {
+               TRIANGLE( shader, i + 1, i + 2, 0 );
+            }
+	 }
+      }
+      break;
+
+   default:
+      assert(0);
+      break;
+   }
+}
+
+
+#undef TRIANGLE
+#undef POINT
+#undef LINE
+#undef FUNC



More information about the mesa-commit mailing list