summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_gs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_gs.h')
-rw-r--r--src/gallium/auxiliary/draw/draw_gs.h21
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);