summaryrefslogtreecommitdiffstats
path: root/src/mesa/shader/slang/slang_builtin.h
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2008-12-30 17:11:32 -0700
committerBrian Paul <[email protected]>2008-12-30 17:11:32 -0700
commitc6537ac8b8130cf2271c8d1e51137a575073c762 (patch)
treed51e85841d71823d778a61ade9890af7bf4f24c2 /src/mesa/shader/slang/slang_builtin.h
parentca0540e25c86b8095511868b0cbe96d7e85f7437 (diff)
mesa: allow variable indexing into the predefined uniform variable arrays
This allows code such as "vec4 a = gl_LightSource[i].ambient;" to work. When a built-in uniform array is indexed with a variable index we need to "unroll" the whole array into the parameter list (aka constant buffer) because we don't know which elements may be accessed at compile-time. In the case of the gl_LightSource array of size [8], we emit 64 state references into the parameter array (8 elements times 8 vec4s per gl_LightSourceParameters struct). Previously, we only allowed constant-indexed references to uniform arrays (such as gl_LightSource[2].position) which resulted in a single state reference being added to the parameter array, not 64. We still optimize this case. Users should be aware that using "gl_LightSource[i].ambient" in their shaders is a bit expensive since state validation will involve updating all 64 light source entries in the parameter list.
Diffstat (limited to 'src/mesa/shader/slang/slang_builtin.h')
-rw-r--r--src/mesa/shader/slang/slang_builtin.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mesa/shader/slang/slang_builtin.h b/src/mesa/shader/slang/slang_builtin.h
index 58629f4f7fe..7f6fe80fcca 100644
--- a/src/mesa/shader/slang/slang_builtin.h
+++ b/src/mesa/shader/slang/slang_builtin.h
@@ -33,7 +33,8 @@
extern GLint
_slang_alloc_statevar(slang_ir_node *n,
- struct gl_program_parameter_list *paramList);
+ struct gl_program_parameter_list *paramList,
+ GLboolean *direct);
#endif /* SLANG_BUILTIN_H */