draw: remove old vertex_shader->run() functions
authorKeith Whitwell <keith@tungstengraphics.com>
Fri, 18 Apr 2008 19:41:39 +0000 (20:41 +0100)
committerKeith Whitwell <keith@tungstengraphics.com>
Fri, 18 Apr 2008 19:41:39 +0000 (20:41 +0100)
src/gallium/auxiliary/draw/draw_vertex_shader.c
src/gallium/auxiliary/draw/draw_vs.h
src/gallium/auxiliary/draw/draw_vs_exec.c
src/gallium/auxiliary/draw/draw_vs_llvm.c
src/gallium/auxiliary/draw/draw_vs_sse.c

index c0c17c116eaeb2c80df6486ba650d76fcbcd13f6..118664d6198c8f23a5fc470d68a8371388764209 100644 (file)
@@ -74,7 +74,7 @@ draw_vertex_shader_queue_flush(struct draw_context *draw)
       assert(n > 0);
       assert(n <= MAX_SHADER_VERTICES);
 
-      shader->run(shader, draw, elts, n, dests, MAX_VERTEX_ALLOCATION);
+//      shader->run(shader, draw, elts, n, dests, MAX_VERTEX_ALLOCATION);
    }
 
    draw->vs.post_nr = draw->vs.queue_nr;
index e88d00e2479351fa58703f98394790b13cb144a3..b6f3bbdaeadd6bb30a19e2b5b3016b554ce0bdea 100644 (file)
@@ -55,13 +55,6 @@ struct draw_vertex_shader {
    /* Run the shader - this interface will get cleaned up in the
     * future:
     */
-   boolean (*run)( struct draw_vertex_shader *shader,
-                   struct draw_context *draw,
-                   const unsigned *elts,
-                   unsigned count,
-                   void *out,
-                   unsigned vertex_size);
-
    void (*run_linear)( struct draw_vertex_shader *shader,
                       const float (*input)[4],
                       float (*output)[4],
index 184151b9b145a285cf776dc9f48e3bb752609b7b..54a2b2ab040fd3acf6f9b80d9ef6459a691f8181 100644 (file)
@@ -66,145 +66,9 @@ vs_exec_prepare( struct draw_vertex_shader *shader,
                                 PIPE_MAX_SAMPLERS,
                                 NULL /*samplers*/ );
 
-   draw_update_vertex_fetch( draw );
 }
 
 
-/**
- * Transform vertices with the current vertex program/shader
- * Up to four vertices can be shaded at a time.
- * \param vbuffer  the input vertex data
- * \param elts  indexes of four input vertices
- * \param count  number of vertices to shade [1..4]
- * \param vOut  array of pointers to four output vertices
- */
-static boolean
-vs_exec_run( struct draw_vertex_shader *shader,
-            struct draw_context *draw,
-            const unsigned *elts, 
-            unsigned count,
-            void *vOut,
-             unsigned vertex_size)
-{
-   struct exec_vertex_shader *evs = exec_vertex_shader(shader);
-   struct tgsi_exec_machine *machine = evs->machine;
-   unsigned int i, j;
-   unsigned int clipped = 0;
-   struct tgsi_exec_vector *outputs = 0;
-   const float *scale = draw->viewport.scale;
-   const float *trans = draw->viewport.translate;
-
-   assert(shader->info.output_semantic_name[0] == TGSI_SEMANTIC_POSITION);
-
-   machine->Consts = (const float (*)[4]) draw->user.constants;
-
-   if (draw->rasterizer->bypass_vs) {
-      /* outputs are just the inputs */
-      outputs = machine->Inputs;
-   }
-   else {
-      outputs = machine->Outputs;
-   }
-
-   for (i = 0; i < count; i += MAX_TGSI_VERTICES) {
-      unsigned int max_vertices = MIN2(MAX_TGSI_VERTICES, count - i);
-      draw->vertex_fetch.fetch_func( draw, machine, &elts[i], max_vertices );
-
-#if 0
-      for (j = 0; j < max_vertices; j++) {
-        unsigned slot;
-        debug_printf("%d) Input vert:\n", i + j);
-        for (slot = 0; slot < shader->info.num_inputs; slot++) {
-           debug_printf("\t%d: %f %f %f %f\n", slot,
-                        machine->Inputs[slot].xyzw[0].f[j],
-                        machine->Inputs[slot].xyzw[1].f[j],
-                        machine->Inputs[slot].xyzw[2].f[j],
-                        machine->Inputs[slot].xyzw[3].f[j]);
-        }
-      }
-#endif
-
-
-      if (!draw->rasterizer->bypass_vs) {
-         /* run interpreter */
-         tgsi_exec_machine_run( machine );
-      }
-
-      /* store machine results */
-      for (j = 0; j < max_vertices; j++) {
-         unsigned slot;
-         float x, y, z, w;
-         struct vertex_header *out =
-            draw_header_from_block(vOut, vertex_size, i + j);
-
-         /* Handle attr[0] (position) specially:
-          *
-          * XXX: Computing the clipmask should be done in the vertex
-          * program as a set of DP4 instructions appended to the
-          * user-provided code.
-          */
-         x = out->clip[0] = outputs[0].xyzw[0].f[j];
-         y = out->clip[1] = outputs[0].xyzw[1].f[j];
-         z = out->clip[2] = outputs[0].xyzw[2].f[j];
-         w = out->clip[3] = outputs[0].xyzw[3].f[j];
-
-         if (!draw->rasterizer->bypass_clipping) {
-            out->clipmask = compute_clipmask(out->clip, draw->plane,
-                                             draw->nr_planes);
-            clipped += out->clipmask;
-
-            /* divide by w */
-            w = 1.0f / w;
-            x *= w;
-            y *= w;
-            z *= w;
-         }
-         else {
-            out->clipmask = 0;
-         }
-         out->edgeflag = 1;
-        out->vertex_id = UNDEFINED_VERTEX_ID;
-
-         if (!draw->identity_viewport) {
-            /* Viewport mapping */
-            out->data[0][0] = x * scale[0] + trans[0];
-            out->data[0][1] = y * scale[1] + trans[1];
-            out->data[0][2] = z * scale[2] + trans[2];
-            out->data[0][3] = w;
-         }
-         else 
-        {
-            out->data[0][0] = x;
-            out->data[0][1] = y;
-            out->data[0][2] = z;
-            out->data[0][3] = w;
-         }
-
-         /* Remaining attributes are packed into sequential post-transform
-          * vertex attrib slots.
-          */
-         for (slot = 1; slot < draw->num_vs_outputs; slot++) {
-            out->data[slot][0] = outputs[slot].xyzw[0].f[j];
-            out->data[slot][1] = outputs[slot].xyzw[1].f[j];
-            out->data[slot][2] = outputs[slot].xyzw[2].f[j];
-            out->data[slot][3] = outputs[slot].xyzw[3].f[j];
-         }
-
-#if 0 /*DEBUG*/
-         printf("%d) Post xform vert:\n", i + j);
-         for (slot = 0; slot < draw->num_vs_outputs; slot++) {
-            printf("\t%d: %f %f %f %f\n", slot,
-                   out->data[slot][0],
-                   out->data[slot][1],
-                   out->data[slot][2],
-                   out->data[slot][3]);
-         }
-#endif
-      } /* loop over vertices */
-   }
-   return clipped != 0;
-}
-
 
 
 /* Simplified vertex shader interface for the pt paths.  Given the
@@ -312,7 +176,6 @@ draw_create_vs_exec(struct draw_context *draw,
 
 
    vs->base.prepare = vs_exec_prepare;
-   vs->base.run = vs_exec_run;
    vs->base.run_linear = vs_exec_run_linear;
    vs->base.delete = vs_exec_delete;
    vs->machine = &draw->machine;
index 4dbfa955a4ea07839ebbeaee19f25ca767561f1d..5e27bc9ff013ded0c2e8bfee2d2a62c81a81f63c 100644 (file)
@@ -60,113 +60,6 @@ vs_llvm_prepare( struct draw_vertex_shader *base,
 
 
 
-/**
- * Transform vertices with the current vertex program/shader
- * Up to four vertices can be shaded at a time.
- * \param vbuffer  the input vertex data
- * \param elts  indexes of four input vertices
- * \param count  number of vertices to shade [1..4]
- * \param vOut  array of pointers to four output vertices
- */
-static boolean
-vs_llvm_run( struct draw_vertex_shader *base,
-            struct draw_context *draw,
-            const unsigned *elts,
-            unsigned count,
-            void *vOut )
-{
-   struct draw_llvm_vertex_shader *shader =
-      (struct draw_llvm_vertex_shader *)base;
-
-   struct tgsi_exec_machine *machine = shader->machine;
-   unsigned int j;
-   unsigned int clipped = 0;
-   const float *scale = draw->viewport.scale;
-   const float *trans = draw->viewport.translate;
-
-
-   assert(count <= 4);
-   assert(base->state->output_semantic_name[0] == TGSI_SEMANTIC_POSITION);
-
-   /* Consts does not require 16 byte alignment. */
-   machine->Consts = (float (*)[4]) draw->user.constants;
-
-   if (draw->rasterizer->bypass_vs) {
-      /* outputs are just the inputs */
-      outputs = machine->Inputs;
-   }
-   else {
-      outputs = machine->Outputs;
-   }
-
-
-   draw->vertex_fetch.fetch_func( draw, machine, elts, count );
-
-   if (!draw->rasterizer->bypass_vs) {
-      /* run shader */
-      gallivm_cpu_vs_exec(shader->llvm_prog,
-                          machine->Inputs,
-                          machine->Outputs,
-                          machine->Consts,
-                          machine->Temps);
-   }
-
-   /* store machine results */
-   for (j = 0; j < count; j++) {
-      unsigned slot;
-      float x, y, z, w;
-
-      x = vOut[j]->clip[0] = outputs[0].xyzw[0].f[j];
-      y = vOut[j]->clip[1] = outputs[0].xyzw[1].f[j];
-      z = vOut[j]->clip[2] = outputs[0].xyzw[2].f[j];
-      w = vOut[j]->clip[3] = outputs[0].xyzw[3].f[j];
-
-      if (!draw->rasterizer->bypass_clipping) {
-         vOut[j]->clipmask = compute_clipmask(vOut[j]->clip, draw->plane,
-                                              draw->nr_planes);
-         clipped += vOut[j]->clipmask;
-
-         /* divide by w */
-         w = 1.0f / w;
-         x *= w;
-         y *= w;
-         z *= w;
-      }
-      else {
-         vOut[j]->clipmask = 0;
-      }
-      vOut[j]->edgeflag = 1;
-      vOut[j]->vertex_id = UNDEFINED_VERTEX_ID;
-
-      if (!draw->identity_viewport) {
-         /* Viewport mapping */
-         vOut[j]->data[0][0] = x * scale[0] + trans[0];
-         vOut[j]->data[0][1] = y * scale[1] + trans[1];
-         vOut[j]->data[0][2] = z * scale[2] + trans[2];
-         vOut[j]->data[0][3] = w;
-      }
-      else {
-         vOut[j]->data[0][0] = x;
-         vOut[j]->data[0][1] = y;
-         vOut[j]->data[0][2] = z;
-         vOut[j]->data[0][3] = w;
-      }
-
-      /* Remaining attributes are packed into sequential post-transform
-       * vertex attrib slots.
-       */
-      for (slot = 1; slot < draw->num_vs_outputs; slot++) {
-         vOut[j]->data[slot][0] = outputs[slot].xyzw[0].f[j];
-         vOut[j]->data[slot][1] = outputs[slot].xyzw[1].f[j];
-         vOut[j]->data[slot][2] = outputs[slot].xyzw[2].f[j];
-         vOut[j]->data[slot][3] = outputs[slot].xyzw[3].f[j];
-      }
-   } /* loop over vertices */
-   return clipped != 0;
-}
-
-
-
 
 static void
 vs_llvm_run_linear( struct draw_vertex_shader *base,
@@ -256,7 +149,6 @@ draw_create_vs_llvm(struct draw_context *draw,
    tgsi_scan_shader(shader->tokens, &vs->base.info);
 
    vs->base.prepare = vs_llvm_prepare;
-   vs->base.run = vs_llvm_run;
    vs->base.run_linear = vs_llvm_run_linear;
    vs->base.delete = vs_llvm_delete;
    vs->machine = &draw->machine;
index a763f3845c58b2fcaea9c7f94637dd31cb5c76f9..60f60a5b53b77754b7365091ce62c4f246577fd3 100644 (file)
@@ -74,131 +74,6 @@ vs_sse_prepare( struct draw_vertex_shader *base,
    draw_update_vertex_fetch( draw );
 }
 
-/**
- * Transform vertices with the current vertex program/shader
- * Up to four vertices can be shaded at a time.
- * \param vbuffer  the input vertex data
- * \param elts  indexes of four input vertices
- * \param count  number of vertices to shade [1..4]
- * \param vOut  array of pointers to four output vertices
- */
-static boolean
-vs_sse_run( struct draw_vertex_shader *base,
-           struct draw_context *draw, 
-           const unsigned *elts, 
-           unsigned count,
-           void *vOut,
-            unsigned vertex_size )
-{
-   struct draw_sse_vertex_shader *shader = (struct draw_sse_vertex_shader *)base;
-   struct tgsi_exec_machine *machine = shader->machine;
-   unsigned int i, j;
-   unsigned int clipped = 0;
-   struct tgsi_exec_vector *outputs = 0;
-   const float *scale = draw->viewport.scale;
-   const float *trans = draw->viewport.translate;
-
-   assert(base->info.output_semantic_name[0] == TGSI_SEMANTIC_POSITION);
-
-   /* Consts does not require 16 byte alignment. */
-   machine->Consts = (const float (*)[4]) draw->user.constants;
-
-   if (draw->rasterizer->bypass_vs) {
-      /* outputs are just the inputs */
-      outputs = machine->Inputs;
-   }
-   else {
-      outputs = machine->Outputs;
-   }
-
-   for (i = 0; i < count; i += SSE_MAX_VERTICES) {
-      unsigned int max_vertices = MIN2(SSE_MAX_VERTICES, count - i);
-      /* Fetch vertices.  This may at some point be integrated into the
-       * compiled shader -- that would require a reorganization where
-       * multiple versions of the compiled shader might exist,
-       * specialized for each fetch state.
-       */
-      draw->vertex_fetch.fetch_func(draw, machine, &elts[i], max_vertices);
-
-      if (!draw->rasterizer->bypass_vs) {
-         /* run compiled shader
-          */
-         shader->func(machine->Inputs,
-                      machine->Outputs,
-                      (float (*)[4])machine->Consts,
-                      machine->Temps,
-                      shader->immediates);
-      }
-
-      /* XXX: Computing the clipmask and emitting results should be done
-       *      in the vertex program as a set of instructions appended to
-       *      the user-provided code.
-       */
-      for (j = 0; j < max_vertices; j++) {
-         unsigned slot;
-         float x, y, z, w;
-         struct vertex_header *out =
-            draw_header_from_block(vOut, vertex_size, i + j);
-
-         x = out->clip[0] = outputs[0].xyzw[0].f[j];
-         y = out->clip[1] = outputs[0].xyzw[1].f[j];
-         z = out->clip[2] = outputs[0].xyzw[2].f[j];
-         w = out->clip[3] = outputs[0].xyzw[3].f[j];
-
-         if (!draw->rasterizer->bypass_clipping) {
-            out->clipmask = compute_clipmask(out->clip, draw->plane,
-                                             draw->nr_planes);
-            clipped += out->clipmask;
-
-            /* divide by w */
-            w = 1.0f / w;
-            x *= w;
-            y *= w;
-            z *= w;
-         }
-         else {
-            out->clipmask = 0;
-         }
-         out->edgeflag = 1;
-        out->vertex_id = UNDEFINED_VERTEX_ID;
-
-         if (!draw->identity_viewport) {
-            /* Viewport mapping */
-            out->data[0][0] = x * scale[0] + trans[0];
-            out->data[0][1] = y * scale[1] + trans[1];
-            out->data[0][2] = z * scale[2] + trans[2];
-            out->data[0][3] = w;
-         }
-         else {
-            out->data[0][0] = x;
-            out->data[0][1] = y;
-            out->data[0][2] = z;
-            out->data[0][3] = w;
-         }
-
-         /* Remaining attributes are packed into sequential post-transform
-          * vertex attrib slots.
-          */
-         for (slot = 1; slot < draw->num_vs_outputs; slot++) {
-            out->data[slot][0] = outputs[slot].xyzw[0].f[j];
-            out->data[slot][1] = outputs[slot].xyzw[1].f[j];
-            out->data[slot][2] = outputs[slot].xyzw[2].f[j];
-            out->data[slot][3] = outputs[slot].xyzw[3].f[j];
-         }
-#if 0 /*DEBUG*/
-         printf("%d) Post xform vert:\n", i + j);
-         for (slot = 0; slot < draw->num_vs_outputs; slot++) {
-            printf("\t%d: %f %f %f %f\n", slot,
-                   out->data[slot][0],
-                   out->data[slot][1],
-                   out->data[slot][2],
-                   out->data[slot][3]);
-         }
-#endif
-      }
-   }
-   return clipped != 0;
-}
 
 
 /* Simplified vertex shader interface for the pt paths.  Given the
@@ -294,7 +169,6 @@ draw_create_vs_sse(struct draw_context *draw,
    tgsi_scan_shader(templ->tokens, &vs->base.info);
 
    vs->base.prepare = vs_sse_prepare;
-   vs->base.run = vs_sse_run;
    vs->base.run_linear = vs_sse_run_linear;
    vs->base.delete = vs_sse_delete;
    vs->machine = &draw->machine;