glsl: do const parameter optimization for array element actual parameters
authorBrian Paul <brianp@vmware.com>
Thu, 9 Jul 2009 13:58:50 +0000 (07:58 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 9 Jul 2009 13:58:50 +0000 (07:58 -0600)
When a function parameter is const-qualified we can avoid making a copy
of the actual parameter (we basically do a search/replace when inlining).
This is now done for array element params too, resulting in better code
(fewer MOV instructions).

We should allow some other types of function arguments here but let's be
conservative for the moment.

src/mesa/shader/slang/slang_codegen.c

index 24e99523869f846bfeb8bc7e8f4f8c691c78f0f3..2b7e781f98445c5c32fe82634bce205fd1e8113d 100644 (file)
@@ -1417,8 +1417,9 @@ slang_inline_function_call(slang_assemble_ctx * A, slang_function *fun,
       }
       else if (p->type.qualifier == SLANG_QUAL_CONST) {
         /* a constant input param */
-        if (args[i].type == SLANG_OPER_IDENTIFIER ||
-            args[i].type == SLANG_OPER_LITERAL_FLOAT) {
+         if (args[i].type == SLANG_OPER_IDENTIFIER ||
+             args[i].type == SLANG_OPER_LITERAL_FLOAT ||
+             args[i].type == SLANG_OPER_SUBSCRIPT) {
            /* replace all occurances of this parameter variable with the
             * actual argument variable or a literal.
             */