diff options
author | Paul Berry <[email protected]> | 2013-10-23 10:59:57 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2013-10-24 22:00:13 -0700 |
commit | 11634e491bf6d7d930f00c5b4f62fd4e8cb4314d (patch) | |
tree | cb142dcb12b6b31ab88e545f40686650e6374286 /src/mesa | |
parent | 44b7ebe52d6f4b220a1c943bac2e571bb593f7e1 (diff) |
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 <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4_gs.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs.c | 3 | ||||
-rw-r--r-- | src/mesa/main/mtypes.h | 8 | ||||
-rw-r--r-- | src/mesa/main/shaderapi.c | 8 |
4 files changed, 13 insertions, 9 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs.c b/src/mesa/drivers/dri/i965/brw_vec4_gs.c index b48422c5001..e00a10431a4 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_gs.c +++ b/src/mesa/drivers/dri/i965/brw_vec4_gs.c @@ -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; diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index c0ae3edbe06..04cf857c98d 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -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) { diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 2c5ea4b5d2a..97ed1bd6a14 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -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; }; diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index d3677c8516b..53f0cab7c55 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -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; |