diff options
-rw-r--r-- | src/mesa/shader/slang/slang_compile.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c index 65329c9db1..4203c3cc6f 100644 --- a/src/mesa/shader/slang/slang_compile.c +++ b/src/mesa/shader/slang/slang_compile.c @@ -40,6 +40,7 @@ #include "slang_error.h" #include "slang_emit.h" #include "slang_vartable.h" +#include "slang_simplify.h" #include "slang_print.h" @@ -367,8 +368,11 @@ parse_array_len(slang_parse_ctx * C, slang_output_ctx * O, GLuint * len) space.funcs = O->funs; space.structs = O->structs; space.vars = O->vars; - result = _slang_evaluate_int(O->assembly, O->machine, &space, - &array_size, len, C->atoms); + + /* evaluate compile-time expression which is array size */ + _slang_simplify(&array_size, &space, C->atoms); + result = (array_size.type == slang_oper_literal_int); + slang_operation_destruct(&array_size); return result; } |