i965/gs/gen6: Refactor ir_emit_vertex and ir_end_primitive for gen6

So the implementation is independent of GLSL IR and the visit methods of the
gen6 GS visitor. This way we will be able to reuse that implementation directly
from the NIR vec4 backend.

Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
Samuel Iglesias Gonsalvez 2015-07-13 15:51:17 +02:00 committed by Jason Ekstrand
parent 1836201fde
commit 7eced3aa86
2 changed files with 14 additions and 1 deletions

View File

@ -147,7 +147,12 @@ gen6_gs_visitor::emit_prolog()
}
void
gen6_gs_visitor::visit(ir_emit_vertex *)
gen6_gs_visitor::visit(ir_emit_vertex *ir)
{
gs_emit_vertex(ir->stream_id());
}
void
gen6_gs_visitor::gs_emit_vertex(int stream_id)
{
this->current_annotation = "gen6 emit vertex";
/* Honor max_vertex layout indication in geometry shader by ignoring any
@ -223,6 +228,12 @@ gen6_gs_visitor::visit(ir_emit_vertex *)
void
gen6_gs_visitor::visit(ir_end_primitive *)
{
gs_end_primitive();
}
void
gen6_gs_visitor::gs_end_primitive()
{
this->current_annotation = "gen6 end primitive";
/* Calling EndPrimitive() is optional for point output. In this case we set

View File

@ -51,6 +51,8 @@ protected:
virtual void emit_thread_end();
virtual void visit(ir_emit_vertex *);
virtual void visit(ir_end_primitive *);
virtual void gs_emit_vertex(int stream_id);
virtual void gs_end_primitive();
virtual void emit_urb_write_header(int mrf);
virtual void emit_urb_write_opcode(bool complete,
int base_mrf,