introduce a define to maxout the processed vertices
authorZack Rusin <zack@tungstengraphics.com>
Tue, 8 Apr 2008 00:38:39 +0000 (20:38 -0400)
committerKeith Whitwell <keith@tungstengraphics.com>
Mon, 14 Apr 2008 10:00:26 +0000 (11:00 +0100)
src/gallium/auxiliary/draw/draw_vertex_shader.c

index 133418baca043c4e3109a3e85ff4a9de457d276f..d5f37bca219993ea180b2b877b210ae909bb7343 100644 (file)
@@ -37,7 +37,7 @@
 #include "draw_context.h"
 #include "draw_vs.h"
 
-
+#define MAX_SHADER_VERTICES 4
 
 /**
  * Run the vertex shader on all vertices in the vertex queue.
@@ -58,23 +58,23 @@ draw_vertex_shader_queue_flush(struct draw_context *draw)
 //   fprintf(stderr, "%s %d\n", __FUNCTION__, draw->vs.queue_nr );
 
    /* run vertex shader on vertex cache entries, four per invokation */
-   for (i = 0; i < draw->vs.queue_nr; i += 4) {
-      struct vertex_header *dests[4];
-      unsigned elts[4];
-      int j, n = MIN2(4, draw->vs.queue_nr - i);
+   for (i = 0; i < draw->vs.queue_nr; i += MAX_SHADER_VERTICES) {
+      struct vertex_header *dests[MAX_SHADER_VERTICES];
+      unsigned elts[MAX_SHADER_VERTICES];
+      int j, n = MIN2(MAX_SHADER_VERTICES,  - i);
 
       for (j = 0; j < n; j++) {
          elts[j] = draw->vs.queue[i + j].elt;
          dests[j] = draw->vs.queue[i + j].vertex;
       }
 
-      for ( ; j < 4; j++) {
+      for ( ; j < MAX_SHADER_VERTICES; j++) {
         elts[j] = elts[0];
          dests[j] = draw->vs.queue[i + j].vertex;
       }
 
       assert(n > 0);
-      assert(n <= 4);
+      assert(n <= MAX_SHADER_VERTICES);
 
       shader->run(shader, draw, elts, n, dests);
    }