i965: Fix transform feedback of gl_PointSize.
authorPaul Berry <stereotype441@gmail.com>
Mon, 26 Dec 2011 21:58:46 +0000 (13:58 -0800)
committerPaul Berry <stereotype441@gmail.com>
Thu, 5 Jan 2012 21:27:11 +0000 (13:27 -0800)
commit15f4bca2df47fed8af322217d62b35189f5ca4ab
treea349986c056444d2c529e1ea86992633d9b06181
parent1be0fd8c86cac0775fd4451eb332effc70ccdbe5
i965: Fix transform feedback of gl_PointSize.

On i965 Gen6 and above, gl_PointSize is stored in component W of the
first VUE slot (which corresponds to VERT_RESULT_PSIZ in the VUE map).
Normally we store varying floats in component X of a VUE slot, so we
need special case logic for gl_PointSize.

For Gen6, we do this with a ".wwww" swizzle in the GS.  For Gen7, we
shift the component mask by 3 to select the W component.

Fixes Piglit test "EXT_transform_feedback/builtin-varyings
gl_PointSize".

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_gs_emit.c
src/mesa/drivers/dri/i965/gen7_sol_state.c