ARB prog parser: fix parameter binding type
authorBrian Paul <brianp@vmware.com>
Tue, 5 Jan 2010 17:53:44 +0000 (10:53 -0700)
committerBrian Paul <brianp@vmware.com>
Tue, 5 Jan 2010 18:44:19 +0000 (11:44 -0700)
References to program local and enviroment parameters are put into the
unified program parameters list as PROGRAM_STATE_VAR entries which point
into the local or environment arrays.  So the param_binding_type field
should be PROGRAM_STATE_VAR.

This fixes the piglit vpfp-generic vp-arl-env-array.vpfp and
vp-arl-local-array.vpfp test failures.

src/mesa/shader/program_parse.y

index be8c841e3da973889f0e2e7e0bd103415e492c35..5c5d8d759088449c13360f6922b3ce2e592183ad 100644 (file)
@@ -2516,9 +2516,12 @@ initialize_symbol_from_param(struct gl_program *prog,
    assert((state_tokens[1] == STATE_ENV)
          || (state_tokens[1] == STATE_LOCAL));
 
+   /*
+    * The param type is STATE_VAR.  The program parameter entry will
+    * effectively be a pointer into the LOCAL or ENV parameter array.
+    */
    param_var->type = at_param;
-   param_var->param_binding_type = (state_tokens[1] == STATE_ENV)
-     ? PROGRAM_ENV_PARAM : PROGRAM_LOCAL_PARAM;
+   param_var->param_binding_type = PROGRAM_STATE_VAR;
 
    /* If we are adding a STATE_ENV or STATE_LOCAL that has multiple elements,
     * we need to unroll it and call add_state_reference() for each row