diff options
author | Paul Berry <[email protected]> | 2013-06-11 14:23:12 -0700 |
---|---|---|
committer | Paul Berry <[email protected]> | 2013-08-23 11:03:43 -0700 |
commit | 06918f84c2d1092ac327d836ce9f136f41736e6f (patch) | |
tree | 7b04ee48a8160e355793d29e0e9d5b5883f9ab06 /src/mesa/drivers | |
parent | 5b5d10bcd353bf5bef1cd12f3a84625e56af3bb0 (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]>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_context.h | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs.c | 24 |
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) { |