gallium: Remove feedback interfaces from pipe driver.
authorKeith Whitwell <keith@tungstengraphics.com>
Tue, 11 Dec 2007 13:00:12 +0000 (13:00 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Tue, 11 Dec 2007 13:14:56 +0000 (13:14 +0000)
Something similar will return when geometry shaders are added, but for now
this interface is not required.

19 files changed:
src/mesa/pipe/draw/draw_context.c
src/mesa/pipe/draw/draw_context.h
src/mesa/pipe/draw/draw_feedback.c [deleted file]
src/mesa/pipe/draw/draw_private.h
src/mesa/pipe/draw/draw_validate.c
src/mesa/pipe/i915simple/i915_context.c
src/mesa/pipe/i915simple/i915_context.h
src/mesa/pipe/i915simple/i915_state.c
src/mesa/pipe/p_context.h
src/mesa/pipe/p_state.h
src/mesa/pipe/softpipe/Makefile
src/mesa/pipe/softpipe/sp_context.c
src/mesa/pipe/softpipe/sp_context.h
src/mesa/pipe/softpipe/sp_draw_arrays.c
src/mesa/pipe/softpipe/sp_state.h
src/mesa/pipe/softpipe/sp_state_feedback.c [deleted file]
src/mesa/sources
src/mesa/state_tracker/st_cb_rasterpos.c
src/mesa/state_tracker/st_context.h

index 33727e6547cb519b577dba060bdcd128b90988b5..179f7ed0d6701c84c1f9b154d9bf5cfcb2c66106 100644 (file)
@@ -55,7 +55,6 @@ struct draw_context *draw_create( void )
    draw->pipeline.clip      = draw_clip_stage( draw );
    draw->pipeline.flatshade = draw_flatshade_stage( draw );
    draw->pipeline.cull      = draw_cull_stage( draw );
-   draw->pipeline.feedback  = draw_feedback_stage( draw );
    draw->pipeline.validate  = draw_validate_stage( draw );
    draw->pipeline.first     = draw->pipeline.validate;
 
@@ -100,7 +99,6 @@ void draw_destroy( struct draw_context *draw )
    draw->pipeline.clip->destroy( draw->pipeline.clip );
    draw->pipeline.flatshade->destroy( draw->pipeline.flatshade );
    draw->pipeline.cull->destroy( draw->pipeline.cull );
-   draw->pipeline.feedback->destroy( draw->pipeline.feedback );
    draw->pipeline.validate->destroy( draw->pipeline.validate );
    if (draw->pipeline.rasterize)
       draw->pipeline.rasterize->destroy( draw->pipeline.rasterize );
@@ -117,13 +115,6 @@ void draw_flush( struct draw_context *draw )
 }
 
 
-void draw_set_feedback_state( struct draw_context *draw,
-                              const struct pipe_feedback_state *feedback )
-{
-   draw_flush( draw );
-   draw->feedback = *feedback;
-}
-
 
 /**
  * Register new primitive rasterization/rendering state.
@@ -223,18 +214,6 @@ draw_set_mapped_constant_buffer(struct draw_context *draw,
 }
 
 
-void
-draw_set_mapped_feedback_buffer(struct draw_context *draw, uint index,
-                                void *buffer, uint size)
-{
-   draw_flush( draw );
-
-   assert(index < PIPE_MAX_FEEDBACK_ATTRIBS);
-   draw->user.feedback_buffer[index] = buffer;
-   draw->user.feedback_buffer_size[index] = size; /* in bytes */
-}
-
-
 
 
 
index 8e2232244cc6308e459711a571378a41b3f06461..6dc6e4ce82a8c5c386a6680c841857adf748f492 100644 (file)
@@ -82,9 +82,6 @@ void draw_set_viewport_state( struct draw_context *draw,
 void draw_set_clip_state( struct draw_context *pipe,
                           const struct pipe_clip_state *clip );
 
-void draw_set_feedback_state( struct draw_context *draw,
-                              const struct pipe_feedback_state * );
-
 void draw_set_rasterizer_state( struct draw_context *draw,
                                 const struct pipe_rasterizer_state *raster );
 
@@ -120,9 +117,6 @@ void draw_set_mapped_vertex_buffer(struct draw_context *draw,
 void draw_set_mapped_constant_buffer(struct draw_context *draw,
                                      const void *buffer);
 
-void
-draw_set_mapped_feedback_buffer(struct draw_context *draw, uint index,
-                                void *buffer, uint size);
 
 
 /***********************************************************************
diff --git a/src/mesa/pipe/draw/draw_feedback.c b/src/mesa/pipe/draw/draw_feedback.c
deleted file mode 100644 (file)
index aea6a81..0000000
+++ /dev/null
@@ -1,253 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * 
- **************************************************************************/
-
-/**
- * Primitive/vertex feedback (and/or discard) stage.
- * Used to implement transformation feedback/streaming and other things
- * which require a post-transformed vertex position (such as rasterpos,
- * selection and feedback modes).
- *
- * Authors:
- *  Brian Paul
- */
-
-
-#include "pipe/p_util.h"
-#include "draw_private.h"
-
-
-struct feedback_stage {
-   struct draw_stage stage;      /**< base class */
-   uint num_prim_generated;      /**< number of primitives received */
-   uint num_prim_emitted;        /**< number of primitives fed back */
-   uint num_vert_emitted;        /**< number of vertices fed back */
-   uint max_vert_emit;           /**< max number of verts we can emit */
-   float *dest[PIPE_MAX_FEEDBACK_ATTRIBS];  /**< dests for vertex attribs */
-};
-
-
-
-/**
- * Check if there's space to store 'numVerts' in the feedback buffer(s).
- */
-static boolean
-check_space(const struct draw_stage *stage, uint numVerts)
-{
-   const struct feedback_stage *fs = (struct feedback_stage *) stage;
-   return fs->num_vert_emitted + numVerts <= fs->max_vert_emit;
-}
-
-
-/**
- * Record the given vertex's attributes into the feedback buffer(s).
- */
-static void
-feedback_vertex(struct draw_stage *stage, const struct vertex_header *vertex)
-{
-   struct feedback_stage *fs = (struct feedback_stage *) stage;
-   const struct pipe_feedback_state *feedback = &stage->draw->feedback;
-   const uint select = feedback->interleaved ? 0 : 1;
-   uint i;
-
-   /*
-    * Note: 'select' is either 0 or 1.  By multiplying 'i' by 'select'
-    * we can either address output buffer 0 (for interleaving) or
-    * output buffer i (for non-interleaved).
-    */
-   for (i = 0; i < feedback->num_attribs; i++) {
-      const uint slot = feedback->attrib[i];
-      const float *src = slot ? vertex->data[slot] : vertex->clip;
-      const uint size = feedback->size[i];
-      float *dest = fs->dest[i * select];
-
-      switch (size) {
-      case 4:
-         dest[3] = src[3];
-         /* fall-through */
-      case 3:
-         dest[2] = src[2];
-         /* fall-through */
-      case 2:
-         dest[1] = src[1];
-         /* fall-through */
-      case 1:
-         dest[0] = src[0];
-         /* fall-through */
-      default:
-         ;
-      }
-      fs->dest[i * select] += size;
-   }
-
-   fs->num_vert_emitted++;
-}
-
-
-static void feedback_begin( struct draw_stage *stage )
-{
-   struct feedback_stage *fs = (struct feedback_stage *) stage;
-   const struct pipe_feedback_state *feedback = &stage->draw->feedback;
-
-   fs->num_prim_generated = 0;
-   fs->num_prim_emitted = 0;
-   fs->num_vert_emitted = 0;
-
-   assert(feedback->enabled);
-
-   /* Compute max_vert_emit, the max number of vertices we can emit.
-    * And, setup dest[] pointers.
-    */
-   if (stage->draw->feedback.interleaved) {
-      uint i, vertex_size = 0;
-      /* compute size of each interleaved vertex, in floats */
-      for (i = 0; i < feedback->num_attribs; i++) {
-         vertex_size += feedback->size[i];
-      }
-      /* compute max number of vertices we can feedback */
-      fs->max_vert_emit = stage->draw->user.feedback_buffer_size[0]
-         / sizeof(float) / vertex_size;
-
-      fs->dest[0] = (float *) stage->draw->user.feedback_buffer[0];
-   }
-   else {
-      uint i;
-      uint max = ~0;
-      for (i = 0; i < feedback->num_attribs; i++) {
-         uint n = stage->draw->user.feedback_buffer_size[i]
-            / sizeof(float) / feedback->size[i];
-         if (n < max)
-            max = n;
-         fs->dest[i] = (float *) stage->draw->user.feedback_buffer[i];
-      }
-      fs->max_vert_emit = max;
-   }
-
-   if (!feedback->discard)
-      stage->next->begin( stage->next );
-}
-
-
-static void feedback_tri( struct draw_stage *stage,
-                          struct prim_header *header )
-{
-   struct feedback_stage *fs = (struct feedback_stage *) stage;
-
-   fs->num_prim_generated++;
-
-   if (stage->draw->feedback.enabled && check_space(stage, 3)) {
-      feedback_vertex(stage, header->v[0]);
-      feedback_vertex(stage, header->v[1]);
-      feedback_vertex(stage, header->v[2]);
-      fs->num_prim_emitted++;
-   }
-
-   if (!stage->draw->feedback.discard)
-      stage->next->tri( stage->next, header );
-}
-
-
-static void feedback_line( struct draw_stage *stage,
-                           struct prim_header *header )
-{
-   struct feedback_stage *fs = (struct feedback_stage *) stage;
-
-   fs->num_prim_generated++;
-
-   if (stage->draw->feedback.enabled && check_space(stage, 2)) {
-      feedback_vertex(stage, header->v[0]);
-      feedback_vertex(stage, header->v[1]);
-      fs->num_prim_emitted++;
-   }
-
-   if (!stage->draw->feedback.discard)
-      stage->next->line( stage->next, header );
-}
-
-
-static void feedback_point( struct draw_stage *stage,
-                            struct prim_header *header )
-{
-   struct feedback_stage *fs = (struct feedback_stage *) stage;
-
-   fs->num_prim_generated++;
-
-   if (stage->draw->feedback.enabled && check_space(stage, 1)) {
-      feedback_vertex(stage, header->v[0]);
-      fs->num_prim_emitted++;
-   }
-
-   if (!stage->draw->feedback.discard)
-      stage->next->point( stage->next, header );
-}
-
-
-static void feedback_end( struct draw_stage *stage )
-{
-
-   /* XXX Unmap the vertex feedback buffers so we can write to them */
-
-
-   if (!stage->draw->feedback.discard)
-      stage->next->end( stage->next );
-}
-
-
-
-static void feedback_reset_stipple_counter( struct draw_stage *stage )
-{
-   if (!stage->draw->feedback.discard)
-      stage->next->reset_stipple_counter( stage->next );
-}
-
-
-static void feedback_destroy( struct draw_stage *stage )
-{
-   FREE( stage );
-}
-
-
-/**
- * Create feedback drawing stage.
- */
-struct draw_stage *draw_feedback_stage( struct draw_context *draw )
-{
-   struct feedback_stage *feedback = CALLOC_STRUCT(feedback_stage);
-
-   feedback->stage.draw = draw;
-   feedback->stage.next = NULL;
-   feedback->stage.begin = feedback_begin;
-   feedback->stage.point = feedback_point;
-   feedback->stage.line = feedback_line;
-   feedback->stage.tri = feedback_tri;
-   feedback->stage.end = feedback_end;
-   feedback->stage.reset_stipple_counter = feedback_reset_stipple_counter;
-   feedback->stage.destroy = feedback_destroy;
-
-   return &feedback->stage;
-}
-
-
index ca5ca7b3c90c0871cdfdb244c49db00c8029e90b..5f89ac121eb00202f600f04e1b926349c1190d81 100644 (file)
@@ -159,7 +159,6 @@ struct draw_context
       struct draw_stage *validate; 
 
       /* stages (in logical order) */
-      struct draw_stage *feedback;
       struct draw_stage *flatshade;
       struct draw_stage *clip;
       struct draw_stage *cull;
@@ -172,13 +171,10 @@ struct draw_context
 
    /* pipe state that we need: */
    const struct pipe_rasterizer_state *rasterizer;
-   struct pipe_feedback_state feedback;
    struct pipe_viewport_state viewport;
    struct pipe_vertex_buffer vertex_buffer[PIPE_ATTRIB_MAX];
    struct pipe_vertex_element vertex_element[PIPE_ATTRIB_MAX];
    const struct draw_vertex_shader *vertex_shader;
-   struct pipe_vertex_buffer feedback_buffer[PIPE_ATTRIB_MAX];
-   struct pipe_vertex_element feedback_element[PIPE_ATTRIB_MAX];
 
    /* user-space vertex data, buffers */
    struct {
@@ -192,10 +188,6 @@ struct draw_context
 
       /** constant buffer (for vertex shader) */
       const void *constants;
-
-      /** The vertex feedback buffer */
-      void *feedback_buffer[PIPE_MAX_FEEDBACK_ATTRIBS];
-      uint feedback_buffer_size[PIPE_MAX_FEEDBACK_ATTRIBS]; /* in bytes */
    } user;
 
    /* Clip derived state:
@@ -257,7 +249,6 @@ struct draw_context
 
 
 
-extern struct draw_stage *draw_feedback_stage( struct draw_context *context );
 extern struct draw_stage *draw_unfilled_stage( struct draw_context *context );
 extern struct draw_stage *draw_twoside_stage( struct draw_context *context );
 extern struct draw_stage *draw_offset_stage( struct draw_context *context );
index 8ce4a926e2225373d6ef23cbe700989cb9b923ad..58cf340281e6c05188a9b2fd82cbbc13f7d4ace3 100644 (file)
@@ -100,11 +100,6 @@ static void validate_begin( struct draw_stage *stage )
       next = draw->pipeline.flatshade;
    }
 
-   if (draw->feedback.enabled || draw->feedback.discard) {
-      draw->pipeline.feedback->next = next;
-      next = draw->pipeline.feedback;
-   }
-
    draw->pipeline.first = next;
    draw->pipeline.first->begin( draw->pipeline.first );
 }
index f505ff6ae6598057b8d00138351b8cd1538eaba6..d2bbeea16ab6934fc6a7e90eb337bd13e948ff51 100644 (file)
@@ -223,18 +223,6 @@ i915_draw_elements( struct pipe_context *pipe,
       draw_set_mapped_element_buffer(draw, 0, NULL);
    }
 
-   /* Map feedback buffers if enabled */
-   if (i915->feedback.enabled) {
-      const uint n = i915->feedback.interleaved ? 1 : i915->feedback.num_attribs;
-      for (i = 0; i < n; i++) {
-         void *ptr = pipe->winsys->buffer_map(pipe->winsys,
-                                              i915->feedback_buffer[i].buffer,
-                                              PIPE_BUFFER_FLAG_WRITE);
-         draw_set_mapped_feedback_buffer(draw, i, ptr,
-                                         i915->feedback_buffer[i].size);
-      }
-   }
-
 
    draw_set_mapped_constant_buffer(draw,
                                 i915->current.constants[PIPE_SHADER_VERTEX]);
@@ -256,16 +244,6 @@ i915_draw_elements( struct pipe_context *pipe,
       draw_set_mapped_element_buffer(draw, 0, NULL);
    }
 
-   /* Unmap feedback buffers if enabled */
-   if (i915->feedback.enabled) {
-      const uint n = i915->feedback.interleaved ? 1 : i915->feedback.num_attribs;
-      for (i = 0; i < n; i++) {
-         pipe->winsys->buffer_unmap(pipe->winsys,
-                                    i915->feedback_buffer[i].buffer);
-         draw_set_mapped_feedback_buffer(draw, i, NULL, 0);
-      }
-   }
-
    return TRUE;
 }
 
index dbf0c885cc8f6e35c1eb82bb1e14e6ecc2735018..b9b67c4fcfc3da54e4c8d8cf910278c5ff3214b5 100644 (file)
@@ -197,7 +197,6 @@ struct i915_context
    struct pipe_clear_color_state clear_color;
    struct pipe_clip_state clip;
    struct pipe_constant_buffer constants[PIPE_SHADER_TYPES];
-   struct pipe_feedback_state feedback;
    struct pipe_framebuffer_state framebuffer;
    struct pipe_poly_stipple poly_stipple;
    struct pipe_scissor_state scissor;
@@ -206,9 +205,6 @@ struct i915_context
    struct pipe_viewport_state viewport;
    struct pipe_vertex_buffer vertex_buffer[PIPE_ATTRIB_MAX];
 
-   /** Feedback buffers */
-   struct pipe_feedback_buffer feedback_buffer[PIPE_MAX_FEEDBACK_ATTRIBS];
-
    unsigned dirty;
 
    unsigned *batch_start;
index 038fd623ea15eaedf3e9980957d51a1121df017a..b9f257a0071e212de2f6fa8573310b731058f2ea 100644 (file)
@@ -547,34 +547,6 @@ static void i915_set_framebuffer_state(struct pipe_context *pipe,
 }
 
 
-static void
-i915_set_feedback_state(struct pipe_context *pipe,
-                        const struct pipe_feedback_state *feedback)
-{
-   struct i915_context *i915 = i915_context(pipe);
-   i915->feedback = *feedback;
-   draw_set_feedback_state(i915->draw, feedback);
-}
-
-
-static void
-i915_set_feedback_buffer(struct pipe_context *pipe,
-                             unsigned index,
-                             const struct pipe_feedback_buffer *feedback)
-{
-   struct i915_context *i915 = i915_context(pipe);
-
-   assert(index < PIPE_MAX_FEEDBACK_ATTRIBS);
-
-   /* Need to be careful with referencing */
-   pipe->winsys->buffer_reference(pipe->winsys,
-                                  &i915->feedback_buffer[index].buffer,
-                                  feedback->buffer);
-   i915->feedback_buffer[index].size = feedback->size;
-   i915->feedback_buffer[index].start_offset = feedback->start_offset;
-}
-
-
 
 static void i915_set_clear_color_state(struct pipe_context *pipe,
                                const struct pipe_clear_color_state *clear)
@@ -751,8 +723,6 @@ i915_init_state_functions( struct i915_context *i915 )
    i915->pipe.set_clear_color_state = i915_set_clear_color_state;
    i915->pipe.set_constant_buffer = i915_set_constant_buffer;
    i915->pipe.set_framebuffer_state = i915_set_framebuffer_state;
-   i915->pipe.set_feedback_state = i915_set_feedback_state;
-   i915->pipe.set_feedback_buffer = i915_set_feedback_buffer;
 
    i915->pipe.set_polygon_stipple = i915_set_polygon_stipple;
    i915->pipe.set_sampler_units = i915_set_sampler_units;
index 00379fbacfe64b09acb5d4bac2d743944eb9132c..7da4992841f29720ec973c26d0bee59a1a3150d5 100644 (file)
@@ -139,9 +139,6 @@ struct pipe_context {
                                 uint shader, uint index,
                                 const struct pipe_constant_buffer *buf );
 
-   void (*set_feedback_state)( struct pipe_context *,
-                               const struct pipe_feedback_state *);
-
    void (*set_framebuffer_state)( struct pipe_context *,
                                   const struct pipe_framebuffer_state * );
 
@@ -172,12 +169,6 @@ struct pipe_context {
                               unsigned index,
                               const struct pipe_vertex_element * );
 
-   /*
-    * Vertex feedback
-    */
-   void (*set_feedback_buffer)(struct pipe_context *,
-                               unsigned index,
-                               const struct pipe_feedback_buffer *);
 
    /** Get a surface which is a "view" into a texture */
    struct pipe_surface *(*get_tex_surface)(struct pipe_context *pipe,
index 6db9bbc9534d61aa29b59a1e07a3a23fa67231ad..50344bea78167803c65b871ba526b363ac040b50 100644 (file)
@@ -103,19 +103,6 @@ struct pipe_rasterizer_state
 };
 
 
-/**
- * Post-transform vertex feeback
- */
-struct pipe_feedback_state {
-   uint enabled:1;        /**< enable feedback? */
-   uint discard:1;        /**< discard primitives? */
-   uint interleaved:1;    /**< interleaved output? */
-   uint num_attribs;
-   uint attrib[PIPE_MAX_FEEDBACK_ATTRIBS];
-   uint size[PIPE_MAX_FEEDBACK_ATTRIBS];
-};
-
-
 struct pipe_poly_stipple {
    unsigned stipple[32];
 };
@@ -336,15 +323,6 @@ struct pipe_vertex_element
 };
 
 
-/**
- * Vertex feedback buffer
- */
-struct pipe_feedback_buffer {
-   struct pipe_buffer_handle *buffer;
-   unsigned size;
-   unsigned start_offset;
-};
-
 
 /**
  * Hardware queries (occlusion, transform feedback, timing, etc)
index 647cc05373b44316f90b41f10f7501be9a98e940..5e6886a37e16635c220359b846ac6130bdef5bc7 100644 (file)
@@ -27,7 +27,6 @@ DRIVER_SOURCES = \
        sp_state_blend.c \
        sp_state_clip.c \
        sp_state_derived.c \
-       sp_state_feedback.c \
        sp_state_fs.c \
        sp_state_sampler.c \
        sp_state_rasterizer.c \
index 8b8e04c2f9eb0c848d5209679e0a2210d40d7576..2eab3aaabb9d0ed17b75f93befc2cd60d35b2aa5 100644 (file)
@@ -306,7 +306,6 @@ struct pipe_context *softpipe_create( struct pipe_winsys *pipe_winsys,
    softpipe->pipe.set_clip_state = softpipe_set_clip_state;
    softpipe->pipe.set_clear_color_state = softpipe_set_clear_color_state;
    softpipe->pipe.set_constant_buffer = softpipe_set_constant_buffer;
-   softpipe->pipe.set_feedback_state = softpipe_set_feedback_state;
    softpipe->pipe.set_framebuffer_state = softpipe_set_framebuffer_state;
    softpipe->pipe.set_polygon_stipple = softpipe_set_polygon_stipple;
    softpipe->pipe.set_sampler_units = softpipe_set_sampler_units;
@@ -316,7 +315,6 @@ struct pipe_context *softpipe_create( struct pipe_winsys *pipe_winsys,
 
    softpipe->pipe.set_vertex_buffer = softpipe_set_vertex_buffer;
    softpipe->pipe.set_vertex_element = softpipe_set_vertex_element;
-   softpipe->pipe.set_feedback_buffer = softpipe_set_feedback_buffer;
 
    softpipe->pipe.draw_arrays = softpipe_draw_arrays;
    softpipe->pipe.draw_elements = softpipe_draw_elements;
index b97cdc52c61d64ea593dc9f3c8534ff37203f453..1c391dcd4d3e610737c6420db7d7d5c9bf96ca40 100644 (file)
@@ -85,7 +85,6 @@ struct softpipe_context {
    struct pipe_clear_color_state clear_color;
    struct pipe_clip_state clip;
    struct pipe_constant_buffer constants[2];
-   struct pipe_feedback_state feedback;
    struct pipe_framebuffer_state framebuffer;
    struct pipe_poly_stipple poly_stipple;
    struct pipe_scissor_state scissor;
@@ -117,9 +116,6 @@ struct softpipe_context {
    boolean need_w;  /**< produce quad/fragment W values? */
    int psize_slot;
 
-   /** Feedback buffers */
-   struct pipe_feedback_buffer feedback_buffer[PIPE_MAX_FEEDBACK_ATTRIBS];
-
 #if 0
    /* Stipple derived state:
     */
index 93eb68405dbd109b603fbd51e14488de3f41a832..b7626f8a5f2fdcd1c9377167f606d3a1019b6a13 100644 (file)
@@ -138,18 +138,6 @@ softpipe_draw_elements(struct pipe_context *pipe,
       draw_set_mapped_element_buffer(draw, 0, NULL);
    }
 
-   /* Map feedback buffers if enabled */
-   if (sp->feedback.enabled) {
-      const uint n = sp->feedback.interleaved ? 1 : sp->feedback.num_attribs;
-      for (i = 0; i < n; i++) {
-         void *ptr = pipe->winsys->buffer_map(pipe->winsys,
-                                              sp->feedback_buffer[i].buffer,
-                                              PIPE_BUFFER_FLAG_WRITE);
-         draw_set_mapped_feedback_buffer(draw, i, ptr,
-                                         sp->feedback_buffer[i].size);
-      }
-   }
-
 
    /* draw! */
    draw_arrays(draw, mode, start, count);
@@ -171,16 +159,6 @@ softpipe_draw_elements(struct pipe_context *pipe,
       draw_set_mapped_element_buffer(draw, 0, NULL);
    }
 
-   /* Unmap feedback buffers if enabled */
-   if (sp->feedback.enabled) {
-      const uint n = sp->feedback.interleaved ? 1 : sp->feedback.num_attribs;
-      for (i = 0; i < n; i++) {
-         pipe->winsys->buffer_unmap(pipe->winsys,
-                                    sp->feedback_buffer[i].buffer);
-         draw_set_mapped_feedback_buffer(draw, i, NULL, 0);
-      }
-   }
-
 
    /* Note: leave drawing surfaces mapped */
    softpipe_unmap_constant_buffers(sp);
index ea9d2e62be62997e81444d638668763ef9c16e3d..f434567da5d7402b17d4d369055131602ba6bf81 100644 (file)
@@ -102,9 +102,6 @@ void softpipe_set_constant_buffer(struct pipe_context *,
                                   uint shader, uint index,
                                   const struct pipe_constant_buffer *buf);
 
-void softpipe_set_feedback_state( struct pipe_context *,
-                                  const struct pipe_feedback_state * );
-
 void *softpipe_create_fs_state(struct pipe_context *,
                                const struct pipe_shader_state *);
 void softpipe_bind_fs_state(struct pipe_context *, void *);
@@ -138,11 +135,6 @@ void softpipe_set_vertex_buffer(struct pipe_context *,
                                 unsigned index,
                                 const struct pipe_vertex_buffer *);
 
-void softpipe_set_feedback_buffer(struct pipe_context *,
-                                  uint index,
-                                  const struct pipe_feedback_buffer *);
-
-
 
 void softpipe_update_derived( struct softpipe_context *softpipe );
 
diff --git a/src/mesa/pipe/softpipe/sp_state_feedback.c b/src/mesa/pipe/softpipe/sp_state_feedback.c
deleted file mode 100644 (file)
index 02aaf34..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/**************************************************************************
- * 
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- * 
- **************************************************************************/
-
-/**
- * Authors:
- *  Brian Paul
- */
-
-
-#include "sp_context.h"
-#include "sp_state.h"
-#include "sp_surface.h"
-
-#include "pipe/p_winsys.h"
-#include "pipe/draw/draw_context.h"
-
-
-void
-softpipe_set_feedback_state(struct pipe_context *pipe,
-                            const struct pipe_feedback_state *feedback)
-{
-   struct softpipe_context *softpipe = softpipe_context(pipe);
-
-   softpipe->feedback = *feedback; /* struct copy */
-   /*
-   softpipe->dirty |= SP_NEW_FEEDBACK;
-   */
-
-   draw_set_feedback_state(softpipe->draw, feedback);
-}
-
-
-void
-softpipe_set_feedback_buffer(struct pipe_context *pipe,
-                             unsigned index,
-                             const struct pipe_feedback_buffer *feedback)
-{
-   struct softpipe_context *softpipe = softpipe_context(pipe);
-
-   assert(index < PIPE_MAX_FEEDBACK_ATTRIBS);
-
-   /* Need to be careful with referencing */
-   pipe->winsys->buffer_reference(pipe->winsys,
-                                  &softpipe->feedback_buffer[index].buffer,
-                                  feedback->buffer);
-   softpipe->feedback_buffer[index].size = feedback->size;
-   softpipe->feedback_buffer[index].start_offset = feedback->start_offset;
-}
index c34361eaae85e0751181fa86e8aa9ca5f51539e8..4a5a97b47dfe228a8186bbe15cdd1871a0229f5f 100644 (file)
@@ -162,7 +162,6 @@ DRAW_SOURCES = \
        pipe/draw/draw_context.c\
        pipe/draw/draw_cull.c \
        pipe/draw/draw_debug.c \
-       pipe/draw/draw_feedback.c \
        pipe/draw/draw_flatshade.c \
        pipe/draw/draw_offset.c \
        pipe/draw/draw_prim.c \
index 5279cb1cd41c047fca034f44d97637df6bfabc26..852cff64901e7d5330c0e96051ecf9868653952c 100644 (file)
@@ -173,6 +173,7 @@ static struct rastpos_stage *
 new_draw_rastpos_stage(GLcontext *ctx, struct draw_context *draw)
 {
    struct rastpos_stage *rs = CALLOC_STRUCT(rastpos_stage);
+   GLuint i;
 
    rs->stage.draw = draw;
    rs->stage.next = NULL;
@@ -184,6 +185,26 @@ new_draw_rastpos_stage(GLcontext *ctx, struct draw_context *draw)
    rs->stage.reset_stipple_counter = rastpos_reset_stipple_counter;
    rs->ctx = ctx;
 
+   for (i = 0; i < VERT_ATTRIB_MAX; i++) {
+      rs->array[i].Size = 4;
+      rs->array[i].Type = GL_FLOAT;
+      rs->array[i].Stride = 0;
+      rs->array[i].StrideB = 0;
+      rs->array[i].Ptr = (GLubyte *) ctx->Current.Attrib[i];
+      rs->array[i].Enabled = GL_TRUE;
+      rs->array[i].Normalized = GL_TRUE;
+      rs->array[i].BufferObj = NULL;
+      rs->arrays[i] = &rs->array[i];
+   }
+
+   rs->prim.mode = GL_POINTS;
+   rs->prim.indexed = 0;
+   rs->prim.begin = 1;
+   rs->prim.end = 1;
+   rs->prim.weak = 0;
+   rs->prim.start = 0;
+   rs->prim.count = 1;
+
    return rs;
 }
 
@@ -201,31 +222,8 @@ st_RasterPos(GLcontext *ctx, const GLfloat v[4])
    }
    else {
       /* create rastpos draw stage */
-      GLuint i;
-
       rs = new_draw_rastpos_stage(ctx, draw);
       st->rastpos_stage = &rs->stage;
-
-      /* one-time init */
-      for (i = 0; i < VERT_ATTRIB_MAX; i++) {
-         rs->array[i].Size = 4;
-         rs->array[i].Type = GL_FLOAT;
-         rs->array[i].Stride = 0;
-         rs->array[i].StrideB = 0;
-         rs->array[i].Ptr = (GLubyte *) ctx->Current.Attrib[i];
-         rs->array[i].Enabled = GL_TRUE;
-         rs->array[i].Normalized = GL_TRUE;
-         rs->array[i].BufferObj = NULL;
-         rs->arrays[i] = &rs->array[i];
-      }
-
-      rs->prim.mode = GL_POINTS;
-      rs->prim.indexed = 0;
-      rs->prim.begin = 1;
-      rs->prim.end = 1;
-      rs->prim.weak = 0;
-      rs->prim.start = 0;
-      rs->prim.count = 1;
    }
 
    /* plug our rastpos stage into the draw module */
index c31b76c63f3ad4319e8f15d7c9c9c00178ae5bb3..33aacdb6d1a1060fbb5a8e1e4c83eae7af843f72 100644 (file)
@@ -106,7 +106,6 @@ struct st_context
       struct pipe_clear_color_state clear_color;
       struct pipe_clip_state clip;
       struct pipe_constant_buffer constants[2];
-      struct pipe_feedback_state feedback;
       struct pipe_framebuffer_state framebuffer;
       struct pipe_texture *texture[PIPE_MAX_SAMPLERS];
       struct pipe_poly_stipple poly_stipple;