aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Berry <[email protected]>2013-06-11 14:23:12 -0700
committerPaul Berry <[email protected]>2013-08-23 11:03:43 -0700
commit06918f84c2d1092ac327d836ce9f136f41736e6f (patch)
tree7b04ee48a8160e355793d29e0e9d5b5883f9ab06
parent5b5d10bcd353bf5bef1cd12f3a84625e56af3bb0 (diff)
i965/vec4: Make a function for setting up vec4 program key clip info.
This functionality will need to be reused by geometry shaders. Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Matt Turner <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h6
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c24
2 files changed, 24 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 60dab488450..e4a1886325e 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -125,6 +125,7 @@ extern "C" {
struct brw_context;
struct brw_instruction;
struct brw_vs_prog_key;
+struct brw_vec4_prog_key;
struct brw_wm_prog_key;
struct brw_wm_prog_data;
@@ -1586,6 +1587,11 @@ gen7_emit_depth_stencil_hiz(struct brw_context *brw,
extern const GLuint prim_to_hw_prim[GL_POLYGON+1];
+void
+brw_setup_vec4_key_clip_info(struct brw_context *brw,
+ struct brw_vec4_prog_key *key,
+ bool program_uses_clip_distance);
+
#ifdef __cplusplus
}
#endif
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
index f1ff14166ef..0a3924fddf4 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -381,6 +381,23 @@ brw_vs_debug_recompile(struct brw_context *brw,
}
}
+
+void
+brw_setup_vec4_key_clip_info(struct brw_context *brw,
+ struct brw_vec4_prog_key *key,
+ bool program_uses_clip_distance)
+{
+ struct gl_context *ctx = &brw->ctx;
+
+ key->userclip_active = (ctx->Transform.ClipPlanesEnabled != 0);
+ key->uses_clip_distance = program_uses_clip_distance;
+ if (key->userclip_active && !key->uses_clip_distance) {
+ key->nr_userclip_plane_consts
+ = _mesa_logbase2(ctx->Transform.ClipPlanesEnabled) + 1;
+ }
+}
+
+
static void brw_upload_vs_prog(struct brw_context *brw)
{
struct gl_context *ctx = &brw->ctx;
@@ -397,12 +414,7 @@ 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;
- key.base.userclip_active = (ctx->Transform.ClipPlanesEnabled != 0);
- key.base.uses_clip_distance = vp->program.UsesClipDistance;
- if (key.base.userclip_active && !key.base.uses_clip_distance) {
- key.base.nr_userclip_plane_consts
- = _mesa_logbase2(ctx->Transform.ClipPlanesEnabled) + 1;
- }
+ brw_setup_vec4_key_clip_info(brw, &key.base, vp->program.UsesClipDistance);
/* _NEW_POLYGON */
if (brw->gen < 6) {