aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStéphane Marchesin <[email protected]>2012-10-06 13:08:36 -0700
committerStéphane Marchesin <[email protected]>2012-10-06 13:15:04 -0700
commit6ef37f71b0a0460808bb68a9102c15f313492c9f (patch)
tree51523af362057e8c0d8f5d8a1e012c1477ce6d9f
parent9dfca930d7fcfda6767d3be9b1690d010f08fea5 (diff)
i915g: Call draw_set_mapped_vertex_buffer from draw_vbo
This regressed with the draw rework. Fixes glest and vdrift crash.
-rw-r--r--src/gallium/drivers/i915/i915_context.c18
-rw-r--r--src/gallium/drivers/i915/i915_state.c14
2 files changed, 17 insertions, 15 deletions
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.
@@ -65,6 +65,16 @@ 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->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
*/
if (info->indexed) {
@@ -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 *