Mesa (master): glsl: fix incorrect indexing for gl_TextureMatrix[i][j]
Brian Paul
brianp at kemper.freedesktop.org
Thu Jul 9 14:07:28 UTC 2009
Module: Mesa
Branch: master
Commit: abdb0fdcc05eb9ec87b3d5a3226c3c190e1fbbcd
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=abdb0fdcc05eb9ec87b3d5a3226c3c190e1fbbcd
Author: Brian Paul <brianp at vmware.com>
Date: Thu Jul 9 07:57:29 2009 -0600
glsl: fix incorrect indexing for gl_TextureMatrix[i][j]
The two indexes were mixed up when accessing a row of a matrix in an array
of matrices.
---
src/mesa/shader/slang/slang_builtin.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/mesa/shader/slang/slang_builtin.c b/src/mesa/shader/slang/slang_builtin.c
index 154609c..289d946 100644
--- a/src/mesa/shader/slang/slang_builtin.c
+++ b/src/mesa/shader/slang/slang_builtin.c
@@ -111,10 +111,9 @@ lookup_statevar(const char *var, GLint index1, GLint index2, const char *field,
if (isMatrix) {
if (tokens[0] == STATE_TEXTURE_MATRIX) {
- if (index1 >= 0) {
- tokens[1] = index1; /* which texture matrix */
- index1 = 0; /* prevent extra addition at end of function */
- }
+ /* texture_matrix[index1][index2] */
+ tokens[1] = index1 >= 0 ? index1 : 0; /* which texture matrix */
+ index1 = index2; /* move matrix row value to index1 */
}
if (index1 < 0) {
/* index1 is unused: prevent extra addition at end of function */
@@ -682,7 +681,9 @@ _slang_alloc_statevar(slang_ir_node *n,
if (n->Opcode == IR_ELEMENT) {
/* XXX can only handle constant indexes for now */
if (n->Children[1]->Opcode == IR_FLOAT) {
- index2 = (GLint) n->Children[1]->Value[0];
+ /* two-dimensional array index: mat[i][j] */
+ index2 = index1;
+ index1 = (GLint) n->Children[1]->Value[0];
}
else {
*direct = GL_FALSE;
More information about the mesa-commit
mailing list