summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Boll <andreas.boll.dev@gmail.com>2013-06-03 16:32:12 +0200
committerAndreas Boll <andreas.boll.dev@gmail.com>2013-06-03 16:52:41 +0200
commitbb8ebec76e94955c14bf7e0ba22c953f94ce988d (patch)
tree7c8650d5752d3cf3268646bae60037b6ee9cd972
parentd8ac89d3123a446dd2e21abe915eab59cce11eb6 (diff)
commit 14bb957b996dcc5392b8fa589bd3ffa5c55cb6b4 Author: Marek Olšák <maraeo@gmail.com> Date: Fri Dec 9 17:00:23 2011 +0100 mesa: implement DrawTransformFeedback from ARB_transform_feedback2 It's like DrawArrays, but the count is taken from a transform feedback object. This removes DrawTransformFeedback from dd_function_table and adds the same function to GLvertexformat (with the function parameters matching GL). The vbo_draw_func callback has a new parameter "struct gl_transform_feedback_object *tfb_vertcount". The rest of the code just validates states and forwards the transform feedback object into vbo_draw_func.
-rw-r--r--src/mesa/state_tracker/st_draw.h3
-rw-r--r--src/mesa/state_tracker/st_draw_select_emul.c7
2 files changed, 6 insertions, 4 deletions
diff --git a/src/mesa/state_tracker/st_draw.h b/src/mesa/state_tracker/st_draw.h
index 4b5e497c51..404faf2699 100644
--- a/src/mesa/state_tracker/st_draw.h
+++ b/src/mesa/state_tracker/st_draw.h
@@ -95,6 +95,7 @@ st_select_draw_func(struct gl_context *ctx,
const struct _mesa_index_buffer *ib,
GLboolean index_bounds_valid,
GLuint min_index,
- GLuint max_index);
+ GLuint max_index,
+ struct gl_transform_feedback_object *tfb_vertcount);
#endif
diff --git a/src/mesa/state_tracker/st_draw_select_emul.c b/src/mesa/state_tracker/st_draw_select_emul.c
index 444b4faf96..d37da55926 100644
--- a/src/mesa/state_tracker/st_draw_select_emul.c
+++ b/src/mesa/state_tracker/st_draw_select_emul.c
@@ -382,7 +382,8 @@ st_select_draw_func(struct gl_context *ctx,
const struct _mesa_index_buffer *ib,
GLboolean index_bounds_valid,
GLuint min_index,
- GLuint max_index)
+ GLuint max_index,
+ struct gl_transform_feedback_object *tfb_vertcount)
{
GLboolean saved_scissorEnabled;
struct gl_framebuffer *saved_fbo = NULL;
@@ -444,7 +445,7 @@ st_select_draw_func(struct gl_context *ctx,
cso_set_viewport(st->cso_context, &state_viewport);
/* draw */
- st_draw_vbo(ctx, prims, nr_prims, ib, index_bounds_valid, min_index, max_index);
+ st_draw_vbo(ctx, prims, nr_prims, ib, index_bounds_valid, min_index, max_index, tfb_vertcount);
}
/* render max-z */
@@ -456,7 +457,7 @@ st_select_draw_func(struct gl_context *ctx,
cso_set_viewport(st->cso_context, &state_viewport);
/* draw */
- st_draw_vbo(ctx, prims, nr_prims, ib, index_bounds_valid, min_index, max_index);
+ st_draw_vbo(ctx, prims, nr_prims, ib, index_bounds_valid, min_index, max_index, tfb_vertcount);
}
/* XXX: needs flushing? */