i965: Fix shaders that write to gl_PointSize on Sandybridge.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 22 Feb 2011 18:04:18 +0000 (10:04 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 22 Feb 2011 18:52:44 +0000 (10:52 -0800)
gl_PointSize (VERT_RESULT_PSIZ) doesn't take up a message register,
as it's part of the header.  Without this fix, writing to gl_PointSize
would cause the SF to read and use the wrong attributes, leading to all
kinds of random looking failure.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/gen6_sf_state.c

index f27782935d42ac3930dfe5401d205891a90263b3..06ed89f84475063002aabba45120e4de4247c59c 100644 (file)
@@ -54,6 +54,8 @@ get_attr_override(struct brw_context *brw, int fs_attr, int two_side_color)
     * be FRAG_ATTRIB_*.
     */
    for (i = 1; i < vs_attr; i++) {
+      if (i == VERT_RESULT_PSIZ)
+        continue;
       if (brw->vs.prog_data->outputs_written & BITFIELD64_BIT(i))
         attr_index++;
    }