summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Iglesias Gonsalvez <siglesias@igalia.com>2015-07-13 15:51:17 +0200
committerJason Ekstrand <jason.ekstrand@intel.com>2015-08-03 09:40:50 -0700
commit7eced3aa863394c6e74ac3f037ed1cf9c481fe37 (patch)
tree8263f8772964afe41d325b8d30d99e93fb282a84
parent1836201fde1826c82f579fb132455c8df4176ecd (diff)
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>
-rw-r--r--src/mesa/drivers/dri/i965/gen6_gs_visitor.cpp13
-rw-r--r--src/mesa/drivers/dri/i965/gen6_gs_visitor.h2
2 files changed, 14 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_gs_visitor.cpp b/src/mesa/drivers/dri/i965/gen6_gs_visitor.cpp
index 782687aac57..68e443d38a5 100644
--- a/src/mesa/drivers/dri/i965/gen6_gs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/gen6_gs_visitor.cpp
@@ -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
@@ -224,6 +229,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
* the PrimEnd flag when we process EmitVertex().
diff --git a/src/mesa/drivers/dri/i965/gen6_gs_visitor.h b/src/mesa/drivers/dri/i965/gen6_gs_visitor.h
index 862d0eaacf0..4cf94893261 100644
--- a/src/mesa/drivers/dri/i965/gen6_gs_visitor.h
+++ b/src/mesa/drivers/dri/i965/gen6_gs_visitor.h
@@ -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,