mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 22:08:26 +02:00
glsl: Store info about geometry shaders that emit vertices to non-zero streams.
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. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
598c2e2c83
commit
6d3632c9c9
4 changed files with 5 additions and 0 deletions
|
|
@ -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 */
|
||||
bool UsesEndPrimitive;
|
||||
bool UsesStreams;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -2681,6 +2682,7 @@ struct gl_shader_program
|
|||
GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance array, or
|
||||
0 if not present. */
|
||||
bool UsesEndPrimitive;
|
||||
bool UsesStreams;
|
||||
} Geom;
|
||||
|
||||
/** Vertex shader state */
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -249,6 +249,7 @@ _mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog
|
|||
prog->Geom.InputType = GL_TRIANGLES;
|
||||
prog->Geom.OutputType = GL_TRIANGLE_STRIP;
|
||||
prog->Geom.UsesEndPrimitive = false;
|
||||
prog->Geom.UsesStreams = false;
|
||||
|
||||
prog->TransformFeedback.BufferMode = GL_INTERLEAVED_ATTRIBS;
|
||||
|
||||
|
|
|
|||
|
|
@ -553,6 +553,7 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog)
|
|||
gpc->Invocations = gp->Invocations;
|
||||
gpc->OutputType = gp->OutputType;
|
||||
gpc->UsesEndPrimitive = gp->UsesEndPrimitive;
|
||||
gpc->UsesStreams = gp->UsesStreams;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue