i965: If control_data_header_size_bits is zero, don't do EndPrimitive

This can occur when max_vertices=0 is explicitly specified.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Ian Romanick 2016-05-23 15:17:02 -07:00
parent 049bb94d2e
commit b27dfa5403
2 changed files with 6 additions and 0 deletions

View file

@ -1668,6 +1668,9 @@ fs_visitor::emit_gs_end_primitive(const nir_src &vertex_count_nir_src)
struct brw_gs_prog_data *gs_prog_data =
(struct brw_gs_prog_data *) prog_data;
if (gs_compile->control_data_header_size_bits == 0)
return;
/* We can only do EndPrimitive() functionality when the control data
* consists of cut bits. Fortunately, the only time it isn't is when the
* output type is points, in which case EndPrimitive() is a no-op.

View file

@ -539,6 +539,9 @@ vec4_gs_visitor::gs_end_primitive()
return;
}
if (c->control_data_header_size_bits == 0)
return;
/* Cut bits use one bit per vertex. */
assert(c->control_data_bits_per_vertex == 1);