i965: Fix gl_InvocationID in dual object GS where invocations == 1.
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 15 Oct 2016 03:08:47 +0000 (20:08 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 18 Oct 2016 03:22:02 +0000 (20:22 -0700)
commit9f677d6541741af483c22f29e81f0d883f86028a
treea65bcc402e33569590e298ae3f96c18ec5e46d83
parent52904ba85c7e1e3092601e3497bfbc246b00b84a
i965: Fix gl_InvocationID in dual object GS where invocations == 1.

dEQP-GLES31.functional.geometry_shading.instanced.geometry_1_invocations
draws using a geometry shader that specifies

   layout(points, invocations = 1) in;

and then uses gl_InvocationID.  According to the Haswell PRM, the
"GS Instance ID 0" (and 1) thread payload fields are undefined in
dual object mode:

   "If 'dispatch mode' is DUAL_OBJECT this field is not valid."

But there's no point in using them - if there's only one invocation,
the ID will be 0.  So just load a constant.

Cc: mesa-stable@lists.freedesktop.org
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp