diff options
author | Marek Olšák <[email protected]> | 2012-04-16 03:34:22 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-04-19 14:47:21 +0200 |
commit | 784dd51198433e5c299da4a7742c68d21d68d1c1 (patch) | |
tree | 82bfb55116d13e2738114f321a33bd69d60892a2 /src/mesa/vbo/vbo_exec.h | |
parent | 0de5a21470b3bff9b7c8714e5d960d5ed9d01b9c (diff) |
mesa,vbo: properly detect when vertex arrays need to be recalculated
This moves the RebindArrays flag into the vbo module, consolidates the code,
and adds missing vbo_draw_method calls.
Also with this change, the vertex arrays are not needlessly recalculated twice.
The issue with the old code was:
- If recalculate_input_bindings updates vp_varying_inputs, _NEW_ARRAY is set.
- _mesa_update_state is called and the vp_varying_inputs change causes
regeneration of the fixed-function shaders, which also sets _NEW_PROGRAM.
- The occurence of either _NEW_ARRAY or _NEW_PROGRAM sets
the recalculate_inputs flag to TRUE again.
- The new code sets the flag to FALSE after the second _mesa_update_state,
because there can't possibly be any change which would require recalculating
the arrays.
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Mathias Fröhlich <[email protected]>
Diffstat (limited to 'src/mesa/vbo/vbo_exec.h')
-rw-r--r-- | src/mesa/vbo/vbo_exec.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mesa/vbo/vbo_exec.h b/src/mesa/vbo/vbo_exec.h index f6ede99cd75..5cdf5ced912 100644 --- a/src/mesa/vbo/vbo_exec.h +++ b/src/mesa/vbo/vbo_exec.h @@ -141,6 +141,7 @@ struct vbo_exec_context * programs: */ const struct gl_client_array *inputs[VERT_ATTRIB_MAX]; + GLboolean recalculate_inputs; } array; /* Which flags to set in vbo_exec_BeginVertices() */ |