i965: Add scalar geometry shader support.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 12 Mar 2015 06:14:31 +0000 (23:14 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 3 Nov 2015 23:08:49 +0000 (15:08 -0800)
commit36fd65381756ed1b8f774f7fcdd555941a3d39e1
treea48a1983876548cd274622e5a817a98005e23ec2
parentc9541a74e4d179ad844bdf8af1e3de541c5b14c2
i965: Add scalar geometry shader support.

This is hidden behind INTEL_SCALAR_GS=1 for now, as we don't yet support
instanced geometry shaders, and Orbital Explorer's shader spills like
crazy.  But the infrastructure is in place, and it's largely working.

v2: Lots of rebasing.

v3: (feedback from Kristian Høgsberg)
- Handle stride and subreg_offset correctly for ATTRs; use a helper.
- Fix missing emit_shader_time_end() call.
- Delete dead code after early EOT in static vertex case to avoid
  tripping asserts in emit_shader_time_end().
- Use proper D/UD type in intexp2().
- Fix "EndPrimitve" and "to that" typos.
- Assert that invocations == 1 so we know this is missing.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_nir.cpp
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp