[Mesa-dev] [PATCH v2 71/78] i965/nir/gs: Implement EmitVertex and EndPrimitive

Eduardo Lima Mitev elima at igalia.com
Thu Jul 23 03:17:51 PDT 2015


From: Iago Toral Quiroga <itoral at igalia.com>

---
 src/mesa/drivers/dri/i965/brw_vec4_gs_nir.cpp   | 22 ++++++++++++++++++++++
 src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h |  1 +
 2 files changed, 23 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_nir.cpp b/src/mesa/drivers/dri/i965/brw_vec4_gs_nir.cpp
index de38bda..f627a8d 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_gs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_nir.cpp
@@ -65,4 +65,26 @@ vec4_gs_visitor::nir_setup_inputs(nir_shader *shader)
       }
    }
 }
+
+void
+vec4_gs_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
+{
+   dst_reg dest;
+   src_reg src;
+
+   switch (instr->intrinsic) {
+   case nir_intrinsic_emit_vertex: {
+      int stream_id = instr->const_index[0];
+      gs_emit_vertex(stream_id);
+      break;
+   }
+
+   case nir_intrinsic_end_primitive:
+      gs_end_primitive();
+      break;
+
+   default:
+      vec4_visitor::nir_emit_intrinsic(instr);
+   }
+}
 }
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h
index 6a52d58..517e99d 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h
@@ -91,6 +91,7 @@ protected:
    virtual void visit(ir_end_primitive *);
    virtual void gs_emit_vertex(int stream_id);
    virtual void gs_end_primitive();
+   virtual void nir_emit_intrinsic(nir_intrinsic_instr *instr);
 
 protected:
    int setup_varying_inputs(int payload_reg, int *attribute_map,
-- 
2.1.4



More information about the mesa-dev mailing list