summaryrefslogtreecommitdiffstats
path: root/src/mesa/vbo/vbo_rebase.c
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2012-04-23 18:20:56 +0200
committerMarek Olšák <maraeo@gmail.com>2012-05-08 15:57:51 +0200
commit50f7e75f9e945cfbb2ae868cc961a2205a0b6e73 (patch)
treed55b1c38416040b9df653df6327dbaa0e82866fc /src/mesa/vbo/vbo_rebase.c
parenta7ac9c9c7dc7401ca6143d1e7476df5e3c2758b7 (diff)
downloadexternal_mesa3d-50f7e75f9e945cfbb2ae868cc961a2205a0b6e73.zip
external_mesa3d-50f7e75f9e945cfbb2ae868cc961a2205a0b6e73.tar.gz
external_mesa3d-50f7e75f9e945cfbb2ae868cc961a2205a0b6e73.tar.bz2
mesa: move gl_client_array*[] from vbo_draw_func into gl_context
In the future we'd like to treat vertex arrays as a state and not as a parameter to the draw function. This is the first step towards that goal. Part of the goal is to avoid array re-validation for every draw call. This commit adds: const struct gl_client_array **gl_context::Array::_DrawArrays. The pointer is changed in: * vbo_draw_method * vbo_rebase_prims - unused by gallium * vbo_split_prims - unused by gallium * st_RasterPos Reviewed-by: Brian Paul <brianp@vmware.com>
Diffstat (limited to 'src/mesa/vbo/vbo_rebase.c')
-rw-r--r--src/mesa/vbo/vbo_rebase.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mesa/vbo/vbo_rebase.c b/src/mesa/vbo/vbo_rebase.c
index 597a8f4..9a98ef7 100644
--- a/src/mesa/vbo/vbo_rebase.c
+++ b/src/mesa/vbo/vbo_rebase.c
@@ -129,6 +129,7 @@ void vbo_rebase_prims( struct gl_context *ctx,
struct _mesa_index_buffer tmp_ib;
struct _mesa_prim *tmp_prims = NULL;
+ const struct gl_client_array **saved_arrays = ctx->Array._DrawArrays;
void *tmp_indices = NULL;
GLuint i;
@@ -226,15 +227,18 @@ void vbo_rebase_prims( struct gl_context *ctx,
/* Re-issue the draw call.
*/
+ ctx->Array._DrawArrays = tmp_array_pointers;
+
draw( ctx,
- tmp_array_pointers,
- prim,
+ prim,
nr_prims,
ib,
GL_TRUE,
0,
max_index - min_index,
NULL );
+
+ ctx->Array._DrawArrays = saved_arrays;
if (tmp_indices)
free(tmp_indices);