i965: fix bugs in projective texture coordinates
authorBrian Paul <brianp@vmware.com>
Wed, 17 Jun 2009 00:19:45 +0000 (18:19 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 17 Jun 2009 00:21:26 +0000 (18:21 -0600)
commit6b917d0b1787280f976c2f0d1ead0e5d7587a3e9
treed859568db35e590ec84f78dcb45bee3a2d38ac8e
parent742ba084068b6856e94283a9c5fe3b39d48f64cb
i965: fix bugs in projective texture coordinates

For the TXP instruction we check if the texcoord is really a 4-component
atttibute which requires the divide by W step.  This check involved the
projtex_mask field.  However, the projtex_mask field was being miscalculated
because of some confusion between vertex program outputs and fragment
program inputs.

1. Rework the size_masks calculation so we correctly set bits corresponding
to fragment program input attributes.

2. Rename projtex_mask to proj_attrib_mask since we're interested in more
than just texcoords (generic varying vars too).

3. Simply the indexing of the size_masks and proj_attrib_mask fields.

4. The tracker::active[] array was mis-dimensioned.  Use MAX_PROGRAM_TEMPS
instead of a magic number.

5. Update comments, add new assertions.

With these changes the Lightsmark demo/benchmark renders correctly, until
we eventually hit a GPU lockup...
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_vs_constval.c
src/mesa/drivers/dri/i965/brw_wm.c
src/mesa/drivers/dri/i965/brw_wm.h
src/mesa/drivers/dri/i965/brw_wm_fp.c