diff options
author | Andreas Boll <andreas.boll.dev@gmail.com> | 2013-06-03 16:32:12 +0200 |
---|---|---|
committer | Andreas Boll <andreas.boll.dev@gmail.com> | 2013-06-03 16:52:41 +0200 |
commit | bb8ebec76e94955c14bf7e0ba22c953f94ce988d (patch) | |
tree | 7c8650d5752d3cf3268646bae60037b6ee9cd972 | |
parent | d8ac89d3123a446dd2e21abe915eab59cce11eb6 (diff) |
XXX apply changes from 14bb957b996dcc5392b8fa589bd3ffa5c55cb6b4hw_gl_select2
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.h | 3 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_draw_select_emul.c | 7 |
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? */ |