mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 18:30:09 +01:00
glsl: Move UsesClipDistance from gl_{vertex,geometry}_program into gl_program.
This will make it easier for back-ends to share code between geometry shader and vertex shader compilation. Also, it is renamed to "UsesClipDistanceOut" to clarify that (a) in geometry shaders, it refers to the gl_ClipDistance output rather than the gl_ClipDistance input, and (b) it is irrelevant in fragment shaders. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
44b7ebe52d
commit
11634e491b
4 changed files with 13 additions and 9 deletions
|
|
@ -267,7 +267,8 @@ brw_upload_gs_prog(struct brw_context *brw)
|
|||
memset(&key, 0, sizeof(key));
|
||||
|
||||
key.base.program_string_id = gp->id;
|
||||
brw_setup_vec4_key_clip_info(brw, &key.base, gp->program.UsesClipDistance);
|
||||
brw_setup_vec4_key_clip_info(brw, &key.base,
|
||||
gp->program.Base.UsesClipDistanceOut);
|
||||
|
||||
/* _NEW_LIGHT | _NEW_BUFFERS */
|
||||
key.base.clamp_vertex_color = ctx->Light._ClampVertexColor;
|
||||
|
|
|
|||
|
|
@ -420,7 +420,8 @@ static void brw_upload_vs_prog(struct brw_context *brw)
|
|||
* the inputs it asks for, whether they are varying or not.
|
||||
*/
|
||||
key.base.program_string_id = vp->id;
|
||||
brw_setup_vec4_key_clip_info(brw, &key.base, vp->program.UsesClipDistance);
|
||||
brw_setup_vec4_key_clip_info(brw, &key.base,
|
||||
vp->program.Base.UsesClipDistanceOut);
|
||||
|
||||
/* _NEW_POLYGON */
|
||||
if (brw->gen < 6) {
|
||||
|
|
|
|||
|
|
@ -1965,6 +1965,12 @@ struct gl_program
|
|||
|
||||
GLboolean UsesGather; /**< Does this program use gather4 at all? */
|
||||
|
||||
/**
|
||||
* For vertex and geometry shaders, true if the program uses the
|
||||
* gl_ClipDistance output. Ignored for fragment shaders.
|
||||
*/
|
||||
GLboolean UsesClipDistanceOut;
|
||||
|
||||
|
||||
/** Named parameters, constants, etc. from program text */
|
||||
struct gl_program_parameter_list *Parameters;
|
||||
|
|
@ -2009,7 +2015,6 @@ struct gl_vertex_program
|
|||
{
|
||||
struct gl_program Base; /**< base class */
|
||||
GLboolean IsPositionInvariant;
|
||||
GLboolean UsesClipDistance;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -2023,7 +2028,6 @@ struct gl_geometry_program
|
|||
GLenum InputType; /**< GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_ARB,
|
||||
GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */
|
||||
GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP */
|
||||
GLboolean UsesClipDistance;
|
||||
GLboolean UsesEndPrimitive;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1855,10 +1855,8 @@ _mesa_copy_linked_program_data(gl_shader_type type,
|
|||
struct gl_program *dst)
|
||||
{
|
||||
switch (type) {
|
||||
case MESA_SHADER_VERTEX: {
|
||||
struct gl_vertex_program *dst_vp = (struct gl_vertex_program *) dst;
|
||||
dst_vp->UsesClipDistance = src->Vert.UsesClipDistance;
|
||||
}
|
||||
case MESA_SHADER_VERTEX:
|
||||
dst->UsesClipDistanceOut = src->Vert.UsesClipDistance;
|
||||
break;
|
||||
case MESA_SHADER_GEOMETRY: {
|
||||
struct gl_geometry_program *dst_gp = (struct gl_geometry_program *) dst;
|
||||
|
|
@ -1866,7 +1864,7 @@ _mesa_copy_linked_program_data(gl_shader_type type,
|
|||
dst_gp->VerticesOut = src->Geom.VerticesOut;
|
||||
dst_gp->InputType = src->Geom.InputType;
|
||||
dst_gp->OutputType = src->Geom.OutputType;
|
||||
dst_gp->UsesClipDistance = src->Geom.UsesClipDistance;
|
||||
dst->UsesClipDistanceOut = src->Geom.UsesClipDistance;
|
||||
dst_gp->UsesEndPrimitive = src->Geom.UsesEndPrimitive;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue