gallivm/gs: fix the end primitive calls
authorZack Rusin <zackr@vmware.com>
Thu, 11 Apr 2013 09:22:06 +0000 (02:22 -0700)
committerZack Rusin <zackr@vmware.com>
Wed, 17 Apr 2013 06:38:46 +0000 (23:38 -0700)
commitb739376cffec19870804b1ebd4bef3c2f654e943
tree4e5d22968723f30fdd002c61ff5f225d5588fdee
parent93627e33cc4c4e8f800fdb61693c1107e6cdcd2e
gallivm/gs: fix the end primitive calls

The issue with SOA execution and end_primitive opcode is that it
can be executed both when we haven't emitted any vertices, in
which case we don't want to emit an empty primitive, and when
the execution mask is zero and the execution should be skipped. We
handled only the latter of those conditions. Now we're combining the
execution mask with a mask created from emitted vertices to handle
both cases. As a result we don't need the pending_end_primitive
flag which was broken because it was static and could be affected
by both above mentioned conditions at run-time.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c