[Mesa-dev] [PATCH v2 11/23] glsl: Add support for EmitStreamVertex() and EndStreamPrimitive().
Iago Toral
itoral at igalia.com
Thu Jun 19 00:45:13 PDT 2014
On Wed, 2014-06-18 at 13:31 -0700, Ian Romanick wrote:
> This patch should be split into several patches:
>
> 1. Modify ir_emit_vertex to have a stream. This patch also needs to update
> ir_to_mesa.cpp and st_glsl_to_tgsi.cpp.
>
> 2. Modify ir_end_primitive to have a stream. This patch also needs to update
> ir_to_mesa.cpp and st_glsl_to_tgsi.cpp.
>
> 3. Add the new built-in functions.
Ok, I will rework the patch accordingly.
> A couple other minor comments below...
(...)
> > +ir_function_signature *
> > +builtin_builder::_EmitStreamVertex(builtin_available_predicate avail,
> > + const glsl_type *stream_type)
> > +{
>
> Please add a spec quotation for this. I had to go look it up to be sure
> ir_var_const_in was correct.
>
> /* Section 8.12 (Geometry Shader Functions) of the OpenGL 4.0 spec says:
> *
> * "Completes the current output primitive on stream stream and starts
> * a new one. The argument to stream must be a constant integral
> * expression."
> */
I think you meant the GLSL 4.0 spec here.
> > + ir_variable *stream =
> > + new(mem_ctx) ir_variable(stream_type, "stream", ir_var_const_in);
> > +
> > + MAKE_SIG(glsl_type::void_type, avail, 1, stream);
> > +
> > + body.emit(new(mem_ctx) ir_emit_vertex(var_ref(stream)));
> >
> > return sig;
> > }
> > @@ -3882,7 +3915,22 @@ builtin_builder::_EndPrimitive()
> > {
> > MAKE_SIG(glsl_type::void_type, gs_only, 0);
> >
> > - body.emit(new(mem_ctx) ir_end_primitive());
> > + ir_rvalue *stream = new(mem_ctx) ir_constant(0, 1);
> > + body.emit(new(mem_ctx) ir_end_primitive(stream));
> > +
> > + return sig;
> > +}
(...)
Iago
More information about the mesa-dev
mailing list