From: Stéphane Marchesin Date: Sat, 6 Oct 2012 20:08:36 +0000 (-0700) Subject: i915g: Call draw_set_mapped_vertex_buffer from draw_vbo X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6ef37f71b0a0460808bb68a9102c15f313492c9f;p=mesa.git i915g: Call draw_set_mapped_vertex_buffer from draw_vbo This regressed with the draw rework. Fixes glest and vdrift crash. --- diff --git a/src/gallium/drivers/i915/i915_context.c b/src/gallium/drivers/i915/i915_context.c index 42d90ffc0c6..0ee6c0eb89d 100644 --- a/src/gallium/drivers/i915/i915_context.c +++ b/src/gallium/drivers/i915/i915_context.c @@ -54,7 +54,7 @@ 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; const void *mapped_indices = NULL; - + unsigned i; /* * Ack vs contants here, helps ipers a lot. @@ -64,6 +64,16 @@ i915_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info) if (i915->dirty) i915_update_derived(i915); + /* + * Map vertex buffers + */ + for (i = 0; i < i915->nr_vertex_buffers; i++) { + const void *buf = i915->vertex_buffers[i].user_buffer; + if (!buf) + buf = i915_buffer(i915->vertex_buffers[i].buffer)->data; + draw_set_mapped_vertex_buffer(draw, i, buf); + } + /* * Map index buffer, if present */ @@ -92,6 +102,12 @@ 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->nr_vertex_buffers; i++) { + draw_set_mapped_vertex_buffer(i915->draw, i, NULL); + } if (mapped_indices) draw_set_indexes(draw, NULL, 0); diff --git a/src/gallium/drivers/i915/i915_state.c b/src/gallium/drivers/i915/i915_state.c index 74a5df484b4..aa2971c59cd 100644 --- a/src/gallium/drivers/i915/i915_state.c +++ b/src/gallium/drivers/i915/i915_state.c @@ -936,24 +936,10 @@ static void i915_set_vertex_buffers(struct pipe_context *pipe, util_copy_vertex_buffers(i915->vertex_buffers, &i915->nr_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(draw, count, buffers); - /* map new */ - for (i = 0; i < count; i++) { - const void *buf = buffers[i].user_buffer; - if (!buf) - buf = i915_buffer(buffers[i].buffer)->data; - draw_set_mapped_vertex_buffer(draw, i, buf); - } } static void *