Mesa (master): i915g: Remove draw_flushes and state that we don' t need to track

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Mon Jan 24 02:30:21 UTC 2011


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

Author: Jakob Bornecrantz <wallbraker at gmail.com>
Date:   Mon Jan 24 02:03:59 2011 +0100

i915g: Remove draw_flushes and state that we don't need to track

---

 src/gallium/drivers/i915/i915_context.c |   20 --------------------
 src/gallium/drivers/i915/i915_context.h |    2 --
 src/gallium/drivers/i915/i915_state.c   |   29 ++++++++++++++++-------------
 3 files changed, 16 insertions(+), 35 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_context.c b/src/gallium/drivers/i915/i915_context.c
index ea3c10b..648d009 100644
--- a/src/gallium/drivers/i915/i915_context.c
+++ b/src/gallium/drivers/i915/i915_context.c
@@ -50,7 +50,6 @@ i915_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
    struct i915_context *i915 = i915_context(pipe);
    struct draw_context *draw = i915->draw;
    void *mapped_indices = NULL;
-   unsigned i;
    unsigned cbuf_dirty;
 
 
@@ -64,14 +63,6 @@ i915_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
       i915_update_derived(i915);
 
    /*
-    * Map vertex buffers
-    */
-   for (i = 0; i < i915->num_vertex_buffers; i++) {
-      void *buf = i915_buffer(i915->vertex_buffer[i].buffer)->data;
-      draw_set_mapped_vertex_buffer(draw, i, buf);
-   }
-
-   /*
     * Map index buffer, if present
     */
    if (info->indexed && i915->index_buffer.buffer)
@@ -90,13 +81,6 @@ i915_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
     */
    draw_vbo(i915->draw, info);
 
-   /*
-    * unmap vertex/index buffers
-    */
-   for (i = 0; i < i915->num_vertex_buffers; i++) {
-      draw_set_mapped_vertex_buffer(draw, i, NULL);
-   }
-
    if (mapped_indices)
       draw_set_mapped_index_buffer(draw, NULL);
 }
@@ -117,10 +101,6 @@ static void i915_destroy(struct pipe_context *pipe)
    if(i915->batch)
       i915->iws->batchbuffer_destroy(i915->batch);
 
-   for (i = 0; i < i915->num_vertex_buffers; i++) {
-      pipe_resource_reference(&i915->vertex_buffer[i].buffer, NULL);
-   }
-
    /* unbind framebuffer */
    for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
       pipe_surface_reference(&i915->framebuffer.cbufs[i], NULL);
diff --git a/src/gallium/drivers/i915/i915_context.h b/src/gallium/drivers/i915/i915_context.h
index b7f1fb2..7f49dc9 100644
--- a/src/gallium/drivers/i915/i915_context.h
+++ b/src/gallium/drivers/i915/i915_context.h
@@ -219,14 +219,12 @@ struct i915_context {
    struct pipe_scissor_state scissor;
    struct pipe_sampler_view *fragment_sampler_views[PIPE_MAX_SAMPLERS];
    struct pipe_viewport_state viewport;
-   struct pipe_vertex_buffer vertex_buffer[PIPE_MAX_ATTRIBS];
    struct pipe_index_buffer index_buffer;
 
    unsigned dirty;
 
    unsigned num_samplers;
    unsigned num_fragment_sampler_views;
-   unsigned num_vertex_buffers;
 
    struct i915_winsys_batchbuffer *batch;
 
diff --git a/src/gallium/drivers/i915/i915_state.c b/src/gallium/drivers/i915/i915_state.c
index e386a3f..b31cc30 100644
--- a/src/gallium/drivers/i915/i915_state.c
+++ b/src/gallium/drivers/i915/i915_state.c
@@ -776,17 +776,25 @@ static void i915_set_vertex_buffers(struct pipe_context *pipe,
                                     const struct pipe_vertex_buffer *buffers)
 {
    struct i915_context *i915 = i915_context(pipe);
-   /* Because we change state before the draw_set_vertex_buffers call
-    * we need a flush here, just to be sure.
-    */
-   draw_flush(i915->draw);
+   struct draw_context *draw = i915->draw;
+   int i;
 
-   util_copy_vertex_buffers(i915->vertex_buffer,
-                            &i915->num_vertex_buffers,
-                            buffers, count);
+#if 0
+   /* XXX doesn't look like this is needed */
+   /* unmap old */
+   for (i = 0; i < i915->num_vertex_buffers; i++) {
+      draw_set_mapped_vertex_buffer(draw, i, NULL);
+   }
+#endif
 
    /* pass-through to draw module */
-   draw_set_vertex_buffers(i915->draw, count, buffers);
+   draw_set_vertex_buffers(draw, count, buffers);
+
+   /* map new */
+   for (i = 0; i < count; i++) {
+      void *buf = i915_buffer(buffers[i].buffer)->data;
+      draw_set_mapped_vertex_buffer(draw, i, buf);
+   }
 }
 
 static void *
@@ -811,11 +819,6 @@ i915_bind_vertex_elements_state(struct pipe_context *pipe,
    struct i915_context *i915 = i915_context(pipe);
    struct i915_velems_state *i915_velems = (struct i915_velems_state *) velems;
 
-   /* Because we change state before the draw_set_vertex_buffers call
-    * we need a flush here, just to be sure.
-    */
-   draw_flush(i915->draw);
-
    /* pass-through to draw module */
    if (i915_velems) {
       draw_set_vertex_elements(i915->draw,




More information about the mesa-commit mailing list