(but maybe in a separate patch)
On Thu, Jun 19, 2014 at 7:53 PM, Chris Forbes <chr...@ijw.co.nz> wrote: > Sounds good to me. > > On Thu, Jun 19, 2014 at 7:23 PM, Iago Toral <ito...@igalia.com> wrote: >> On Wed, 2014-06-18 at 13:05 -0700, Ian Romanick wrote: >>> On 06/18/2014 02:51 AM, Iago Toral Quiroga wrote: >>> > On Intel hardware when a geometry shader outputs GL_POINTS primitives we >>> > only need to emit vertex control bits if it emits vertices to non-zero >>> > streams, so use a flag to track this. >>> > >>> > This flag will be set to TRUE when a geometry shader calls >>> > EmitStreamVertex() >>> > or EndStreamPrimitive() with a non-zero stream parameter in a later patch. >>> > --- >>> > src/mesa/main/mtypes.h | 2 ++ >>> > src/mesa/main/shaderapi.c | 1 + >>> > src/mesa/main/shaderobj.c | 1 + >>> > src/mesa/program/program.c | 1 + >>> > 4 files changed, 5 insertions(+) >>> > >>> > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h >>> > index f45dde4..5bc710e 100644 >>> > --- a/src/mesa/main/mtypes.h >>> > +++ b/src/mesa/main/mtypes.h >>> > @@ -2178,6 +2178,7 @@ struct gl_geometry_program >>> > GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */ >>> > GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP >>> > */ >>> > GLboolean UsesEndPrimitive; >>> > + GLboolean UsesStreams; >>> >>> For things that are not visible to the GL API, we've been trying to >>> transition away from GL types. Unless Brian or Chris object, I think >>> I'd rather have this be bool (and true / false below). >> >> If Brian and Chris are okay with this change then I'll also change >> UsesEndPrimitive to be bool. >> >>> > }; >>> > >>> > >>> > @@ -2681,6 +2682,7 @@ struct gl_shader_program >>> > GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance >>> > array, or >>> > 0 if not present. */ >>> > GLboolean UsesEndPrimitive; >>> > + GLboolean UsesStreams; >>> > } Geom; >>> > >>> > /** Vertex shader state */ >>> > diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c >>> > index 2ec2444..2bbef35 100644 >>> > --- a/src/mesa/main/shaderapi.c >>> > +++ b/src/mesa/main/shaderapi.c >>> > @@ -1888,6 +1888,7 @@ _mesa_copy_linked_program_data(gl_shader_stage type, >>> > dst_gp->OutputType = src->Geom.OutputType; >>> > dst->UsesClipDistanceOut = src->Geom.UsesClipDistance; >>> > dst_gp->UsesEndPrimitive = src->Geom.UsesEndPrimitive; >>> > + dst_gp->UsesStreams = src->Geom.UsesStreams; >>> > } >>> > break; >>> > case MESA_SHADER_FRAGMENT: { >>> > diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c >>> > index b0f0bfa..03db862 100644 >>> > --- a/src/mesa/main/shaderobj.c >>> > +++ b/src/mesa/main/shaderobj.c >>> > @@ -248,6 +248,7 @@ _mesa_init_shader_program(struct gl_context *ctx, >>> > struct gl_shader_program *prog >>> > prog->Geom.VerticesOut = 0; >>> > prog->Geom.InputType = GL_TRIANGLES; >>> > prog->Geom.OutputType = GL_TRIANGLE_STRIP; >>> > + prog->Geom.UsesStreams = GL_FALSE; >>> > >>> > prog->TransformFeedback.BufferMode = GL_INTERLEAVED_ATTRIBS; >>> > >>> > diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c >>> > index b7332fc..1263cea 100644 >>> > --- a/src/mesa/program/program.c >>> > +++ b/src/mesa/program/program.c >>> > @@ -552,6 +552,7 @@ _mesa_clone_program(struct gl_context *ctx, const >>> > struct gl_program *prog) >>> > gpc->InputType = gp->InputType; >>> > gpc->Invocations = gp->Invocations; >>> > gpc->OutputType = gp->OutputType; >>> > + gpc->UsesStreams = gp->UsesStreams; >>> > } >>> > break; >>> > default: >>> > >>> >>> >> >> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev