st/mesa: allow negative index for PROGRAM_STATE_VAR
authorBrian Paul <brianp@vmware.com>
Fri, 5 Feb 2010 21:59:04 +0000 (14:59 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 5 Feb 2010 21:59:04 +0000 (14:59 -0700)
The piglit vp-address-01 test uses negative address-relative
offsets.  In this test we're indexing into PROGRAM_STATE_VAR
which, in turn, contains references to ENV vars.

We previously fixed this issue for PROGRAM_CONSTANT.

piglit/vp-address-01 (the version from Feb 5) passes now.

(cherry picked from commit 64be837b0b171c44f47a3c0b83f566d292ffff50)

src/mesa/state_tracker/st_mesa_to_tgsi.c

index 6283833463f4fa201a91b23afa5f3c6cb9254c43..3eb4c1ccca77d2ecd8ed3c4ef8058e096f49c1d5 100644 (file)
@@ -177,13 +177,13 @@ src_register( struct st_translate *t,
          t->temps[index] = ureg_DECL_temporary( t->ureg );
       return ureg_src(t->temps[index]);
 
-   case PROGRAM_STATE_VAR:
    case PROGRAM_NAMED_PARAM:
    case PROGRAM_ENV_PARAM:
    case PROGRAM_LOCAL_PARAM:
    case PROGRAM_UNIFORM:
       ASSERT(index >= 0);
       return t->constants[index];
+   case PROGRAM_STATE_VAR:
    case PROGRAM_CONSTANT:       /* ie, immediate */
       if (index < 0)
          return ureg_DECL_constant( t->ureg, 0 );