case nir_intrinsic_load_ray_flags:
case nir_intrinsic_load_cull_mask:
case nir_intrinsic_load_sysval_nv:
+ case nir_intrinsic_emit_vertex_nv:
+ case nir_intrinsic_end_primitive_nv:
case nir_intrinsic_report_ray_intersection:
case nir_intrinsic_rq_proceed:
case nir_intrinsic_rq_load:
case nir_intrinsic_end_primitive:
case nir_intrinsic_end_primitive_with_counter:
+ case nir_intrinsic_end_primitive_nv:
assert(shader->info.stage == MESA_SHADER_GEOMETRY);
shader->info.gs.uses_end_primitive = 1;
FALLTHROUGH;
case nir_intrinsic_emit_vertex:
case nir_intrinsic_emit_vertex_with_counter:
+ case nir_intrinsic_emit_vertex_nv:
shader->info.gs.active_stream_mask |= 1 << nir_intrinsic_stream_id(instr);
break;
intrinsic("ast_nv", src_comp=[0, 1, 1],
indices=[BASE, RANGE_BASE, RANGE, FLAGS], flags=[])
+# NVIDIA-specific Geometry Shader intrinsics.
+# These contain an additional integer source and destination with the primitive handle input/output.
+intrinsic("emit_vertex_nv", dest_comp=1, src_comp=[1], indices=[STREAM_ID])
+intrinsic("end_primitive_nv", dest_comp=1, src_comp=[1], indices=[STREAM_ID])
+# Contains the final primitive handle and indicate the end of emission.
+intrinsic("final_primitive_nv", src_comp=[1])
+
# In order to deal with flipped render targets, gl_PointCoord may be flipped
# in the shader requiring a shader key or extra instructions or it may be
# flipped in hardware based on a state bit. This version of gl_PointCoord