diff options
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_gs.h')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_gs.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/gallium/auxiliary/draw/draw_gs.h b/src/gallium/auxiliary/draw/draw_gs.h index 149278dd080..9a9154969f5 100644 --- a/src/gallium/auxiliary/draw/draw_gs.h +++ b/src/gallium/auxiliary/draw/draw_gs.h @@ -57,6 +57,13 @@ struct draw_gs_inputs { /** * Private version of the compiled geometry shader */ +struct draw_vertex_stream { + unsigned *primitive_lengths; + unsigned emitted_vertices; + unsigned emitted_primitives; + float (*tmp_output)[4]; +}; + struct draw_geometry_shader { struct draw_context *draw; @@ -74,14 +81,11 @@ struct draw_geometry_shader { unsigned primitive_boundary; unsigned input_primitive; unsigned output_primitive; - - unsigned *primitive_lengths; - unsigned emitted_vertices; - unsigned emitted_primitives; - - float (*tmp_output)[4]; unsigned vertex_size; + struct draw_vertex_stream stream[TGSI_MAX_VERTEX_STREAMS]; + unsigned num_vertex_streams; + unsigned in_prim_idx; unsigned input_vertex_stride; unsigned fetched_prim_count; @@ -109,14 +113,15 @@ struct draw_geometry_shader { unsigned num_vertices, unsigned prim_idx); void (*fetch_outputs)(struct draw_geometry_shader *shader, + unsigned vertex_stream, unsigned num_primitives, float (**p_output)[4]); void (*prepare)(struct draw_geometry_shader *shader, const void *constants[PIPE_MAX_CONSTANT_BUFFERS], const unsigned constants_size[PIPE_MAX_CONSTANT_BUFFERS]); - unsigned (*run)(struct draw_geometry_shader *shader, - unsigned input_primitives); + void (*run)(struct draw_geometry_shader *shader, + unsigned input_primitives, unsigned *out_prims); }; void draw_geometry_shader_new_instance(struct draw_geometry_shader *gs); |