mesa,vbo: properly detect when vertex arrays need to be recalculated
authorMarek Olšák <maraeo@gmail.com>
Mon, 16 Apr 2012 01:34:22 +0000 (03:34 +0200)
committerMarek Olšák <maraeo@gmail.com>
Thu, 19 Apr 2012 12:47:21 +0000 (14:47 +0200)
commit784dd51198433e5c299da4a7742c68d21d68d1c1
tree82bfb55116d13e2738114f321a33bd69d60892a2
parent0de5a21470b3bff9b7c8714e5d960d5ed9d01b9c
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 <brianp@vmware.com>
Reviewed-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
src/mesa/main/attrib.c
src/mesa/main/mtypes.h
src/mesa/main/state.c
src/mesa/vbo/vbo_exec.c
src/mesa/vbo/vbo_exec.h
src/mesa/vbo/vbo_exec_array.c