glsl: implement loop unrolling for simple 'for' loops
authorBrian Paul <brianp@vmware.com>
Wed, 7 Jan 2009 00:24:23 +0000 (17:24 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 7 Jan 2009 00:24:23 +0000 (17:24 -0700)
commit1fa978c8911d00e7cac0a114110e98ebdbe4d57d
tree64ed642fe02792f27e43eaaf09b0138f9a048a82
parent338ae34d227fce8b6f358ca90d383d0cfb87c868
glsl: implement loop unrolling for simple 'for' loops

Loops such as this will be unrolled:
  for (i = 0; i < 4; ++i) {
      body;
  }
where 'body' isn't too large.

This also helps to fix the issue reported in bug #19190.  The problem there
is indexing vector types with a variable index.  For example:
  vec4 v;
  v[2] = 1.0;  // equivalent to v.z = 1.0
  v[i] = 2.0;  // variable index into vector!!

Since the for-i loop can be unrolled, we can avoid the problems associated
with variable indexing into a vector (at least in this case).
src/mesa/shader/slang/slang_codegen.c