i965/gs: Fix up gl_PointSize input swizzling for DUAL_INSTANCED gs.
authorPaul Berry <stereotype441@gmail.com>
Wed, 16 Oct 2013 20:18:11 +0000 (13:18 -0700)
committerPaul Berry <stereotype441@gmail.com>
Fri, 25 Oct 2013 05:00:50 +0000 (22:00 -0700)
commit03ac2c7223f7645e30028bf59b4c9cf0f5734fc0
treefb39649a24436fa6e6274958375090c767032e5c
parenta05589ea0b7b760e0473af6c7ab5d796520f5948
i965/gs: Fix up gl_PointSize input swizzling for DUAL_INSTANCED gs.

Geometry shaders that run in "DUAL_INSTANCED" mode store their inputs
in vec4's.  This means that when compiling gl_PointSize input
swizzling (a MOV instruction which uses a geometry shader input as
both source and destination), we need to do two things:

- Set force_writemask_all to ensure that the MOV happens regardless of
  which channels are enabled.

- Set the source register region to <4;4,1> (instead of <0;4,1> to
  satisfy register region restrictions.

v2: move the source register region fixup to the top of
vec4_generator::generate_vec4_instruction(), so that it applies to all
instructions rather than just MOV.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_vec4_generator.cpp
src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp