summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorIago Toral Quiroga <[email protected]>2015-06-29 14:08:11 +0200
committerJason Ekstrand <[email protected]>2015-08-03 09:40:50 -0700
commit1836201fde1826c82f579fb132455c8df4176ecd (patch)
treed3dd6cead2e3369bc6ee1fd5fdd174ffbb056e7a /src/mesa
parent551af29d2d8be33b66641fe47ee5156489c16132 (diff)
i965/nir/gs: Implement EmitVertex and EndPrimitive
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_gs_nir.cpp22
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.h1
2 files changed, 23 insertions, 0 deletions
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 de38bdaa836..f627a8dbdae 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 6a52d580621..517e99d7862 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,