mesa: use fi_type in vertex attribute code
authorMarius Predut <marius.predut@intel.com>
Wed, 25 Feb 2015 16:49:45 +0000 (09:49 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 25 Feb 2015 23:35:49 +0000 (16:35 -0700)
commit1a93e7690dc90211164082d6a2d26d93da8127ef
tree85dea0aa989370fbd767eec2b243e37c8892b6b5
parent47053464630888f819ef8cc44278f1a1220159b9
mesa: use fi_type in vertex attribute code

For 32-bit builds, floating point operations use x86 FPU registers,
not SSE registers.  If we're actually storing an integer in a float
variable, the value might get modified when written to memory.  This
patch changes the VBO code to use the fi_type (float/int union) to
store/copy vertex attributes.

Also, this can improve performance on x86 because moving floats with
integer registers instead of FP registers is faster.

Neil Roberts review:
- include changes on all places that are storing attribute values.
- check with and without -O3 compiler flag.
Brian Paul review:
- use fi_type type instead gl_constant_value type
- fix a bunch of nit-picks.
- fix compiler warnings

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82668
Signed-off-by: Marius Predut <marius.predut@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/context.c
src/mesa/main/macros.h
src/mesa/vbo/vbo_attrib_tmp.h
src/mesa/vbo/vbo_context.h
src/mesa/vbo/vbo_exec.h
src/mesa/vbo/vbo_exec_api.c
src/mesa/vbo/vbo_exec_draw.c
src/mesa/vbo/vbo_exec_eval.c
src/mesa/vbo/vbo_save.h
src/mesa/vbo/vbo_save_api.c
src/mesa/vbo/vbo_save_draw.c