mesa: rework GLSL array code generation
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 19 Nov 2008 21:12:25 +0000 (14:12 -0700)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 19 Nov 2008 21:12:25 +0000 (14:12 -0700)
commitae0ff8097b85d3537a7be1674d55a44a9bd6018e
tree61c822bc84183fce03a329893daaf19d548eb278
parente709d68d92ef6f2392b118d0a22452e8f4c53e9a
mesa: rework GLSL array code generation

We now express arrays in terms of indirect addressing.  For example:
  dst = a[i];
becomes:
  MOV dst, TEMP[1 + TEMP[2].y];
At instruction-emit time indirect addressing is converted into ARL/
ADDR-relative form:
  ARL ADDR.x, TEMP[2].y;
  MOV dst, TEMP[1 + ADDR.x];
This fixes a number of array-related issues.  Arrays of arrays and complex
array/struct nesting works now.
There may be some regressions, but more work is coming.
src/mesa/shader/slang/slang_codegen.c
src/mesa/shader/slang/slang_emit.c
src/mesa/shader/slang/slang_ir.c
src/mesa/shader/slang/slang_ir.h
src/mesa/shader/slang/slang_vartable.h