arbprogparse.c and remove arbvertparse.[ch] and arbfragparse.[ch].
Clean up quite a bit of the arb parsing code.
Rewrite parser extension code to avoid a mess of string operations every
time the parser was used.
instructions to the various internal tables. It does not add support for
them to the parser nor does it add support for them to the program
interpreter.
It also corrects some errors in the comments in program_instruction.h.
This patch breaks the instruction union in t_vb_arbprogram.h. The opcode
field in that union was only 6 bits. When there were only 59+3 instructions
that worked fine. However, this patch increases the base instruction count
to 69. This requires 7 bits. The problem is that increasing the opcode
width to 7 bits increases the size of instruction::rsw to 33 bits. I've
increased the size of the union to 64-bit, but this is just a temporary hack
(and probably breaks the build on some systems).
vertex_program struct.
Allow switching between regular and vertex_program implementations
of fixed function TNL with the MESA_TNL_PROG environment var
(previously this required recompilation).
Ensure program compilation only references program data, not the
wider context. This means that compiled programs only need to be
invalidated when the program string changes, not on other state
changes.
and only active when _TNL_FIXED_FUNCTION_PROGRAM is defined *and*
the MESA_EXPERIMENTAL environment variable is set...
Works for the arbfplight demo at least.
- Expand operand argument specifiers so that all registers and
parameters can be referenced directly. Remove old PAR/PRL
instructions.
- No 3 operand instructions, translate MAD -> MUL, ADD. (No room for
3 full operands in instruction struct).
- Translate SWZ instructions into 1 or 2 reduced swizzles at compile
time.
- Add hardwired code for moving input and output values to/from the
register file. Drop old INx, OUT instructions.
- remove input/output fields, input tracking removed.
- remove state fields, the validate function now called
on every statechange.
- add an explicit 'create' function.
Add in code to build vertex program to implement current t&l state. Still
disabled, but turn on with a #define in t_vp_build.h.