diff options
| author | Zack Rusin <zackr@vmware.com> | 2013-04-19 16:51:27 -0700 |
|---|---|---|
| committer | Zack Rusin <zackr@vmware.com> | 2013-04-22 20:36:07 -0400 |
| commit | 913ed25f18aa9e24fc34fcf0b637d73ce355025d (patch) | |
| tree | 5be3d2ae7c99f3eaea96d6f416558d1286251d86 /src/gallium/auxiliary/draw/draw_gs.c | |
| parent | 2aad06844fe50deeb905417ed75d3d167a947d5a (diff) | |
| download | external_mesa3d-913ed25f18aa9e24fc34fcf0b637d73ce355025d.tar.gz external_mesa3d-913ed25f18aa9e24fc34fcf0b637d73ce355025d.tar.bz2 external_mesa3d-913ed25f18aa9e24fc34fcf0b637d73ce355025d.zip | |
draw: add code to reset instance dependent data
We want to be able to reset certain parts of the pipeline,
in particular the input primitive index, but only either with
seperate invocations of the draw_vbo or new instances. In all
other cases (e.g. new invocations due to primitive restart)
that data needs to be preserved. Add a function through which
we can reset instance dependent data.
Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_gs.c')
| -rw-r--r-- | src/gallium/auxiliary/draw/draw_gs.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/draw/draw_gs.c b/src/gallium/auxiliary/draw/draw_gs.c index 2f94eaeda4..fbb01b457d 100644 --- a/src/gallium/auxiliary/draw/draw_gs.c +++ b/src/gallium/auxiliary/draw/draw_gs.c @@ -560,7 +560,6 @@ int draw_geometry_shader_run(struct draw_geometry_shader *shader, shader->emitted_primitives = 0; shader->vertex_size = vertex_size; shader->tmp_output = (float (*)[4])output_verts->verts->data; - shader->in_prim_idx = 0; shader->fetched_prim_count = 0; shader->input_vertex_stride = input_stride; shader->input = input; @@ -869,3 +868,16 @@ void draw_gs_set_current_variant(struct draw_geometry_shader *shader, shader->current_variant = variant; } #endif + +/* + * Called at the very begin of the draw call with a new instance + * Used to reset state that should persist between primitive restart. + */ +void +draw_geometry_shader_new_instance(struct draw_geometry_shader *gs) +{ + if (!gs) + return; + + gs->in_prim_idx = 0; +} |
