nir: Add new GS intrinsics that maintain a count of emitted vertices.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 12 May 2015 08:05:29 +0000 (01:05 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 23 Sep 2015 18:00:00 +0000 (11:00 -0700)
commit542d40d698a698dc656c7a64ddcea07060707555
tree47cb3d80bb110677a6b844b8148e871a2fda3a20
parent0a040975ec1d27b62c6f8bf16093df3de898e9b3
nir: Add new GS intrinsics that maintain a count of emitted vertices.

This patch also introduces a lowering pass to convert the simple GS
intrinsics to the new ones.  See the comments above that for the
rationale behind the new intrinsics.

This should be useful for i965; it's a generic enough mechanism that I
could see other drivers potentially using it as well, so I don't feel
too bad about putting it in the generic code.

v2:
- Use nir_after_block_before_jump for the cursor (caught by Jason
  Ekstrand - I'd mistakenly used nir_after_block when rebasing this
  code onto the new NIR control flow API).
- Remove the old emit_vertex intrinsic at the end, rather than in
  the middle (requested by Jason).
- Use state->... directly rather than locals (requested by Jason).
- Report progress from nir_lower_gs_intrinsics() (requested by me).
- Remove "Authors:" section from file comment (requested by
  Michael Schellenberger Costa).

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/glsl/Makefile.sources
src/glsl/nir/nir.h
src/glsl/nir/nir_intrinsics.h
src/glsl/nir/nir_lower_gs_intrinsics.c [new file with mode: 0644]