summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorChris Forbes <[email protected]>2013-05-20 22:10:29 +1200
committerChris Forbes <[email protected]>2013-06-07 20:50:33 +1200
commit06a503ca7163174e9763adcf64186d38997fee83 (patch)
tree717946f19435ade116c78c101ff56fe8bc5beea7 /src/mesa
parent361594999099d981824e314f2f629cb4ab4c61f6 (diff)
i965/vs: add support for emitting gl_ClipVertex
Removes the special-case suppression of gl_ClipVertex in the VUE map. Also calculate vertex outcodes for user clip planes based on gl_ClipVertex if written; otherwise gl_Position. Signed-off-by: Chris Forbes <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp4
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c6
2 files changed, 3 insertions, 7 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index b2f8f009db9..33c1b2483c4 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -2567,8 +2567,10 @@ vec4_visitor::emit_psiz_and_flags(struct brw_reg reg)
current_annotation = "Clipping flags";
for (i = 0; i < key->nr_userclip_plane_consts; i++) {
vec4_instruction *inst;
+ gl_varying_slot slot = (prog_data->vue_map.slots_valid & VARYING_BIT_CLIP_VERTEX)
+ ? VARYING_SLOT_CLIP_VERTEX : VARYING_SLOT_POS;
- inst = emit(DP4(dst_null_f(), src_reg(output_reg[VARYING_SLOT_POS]),
+ inst = emit(DP4(dst_null_f(), src_reg(output_reg[slot]),
src_reg(this->userplane[i])));
inst->conditional_mod = BRW_CONDITIONAL_L;
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
index 6eb916ea4c6..720325dec5c 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -63,12 +63,6 @@ brw_compute_vue_map(struct brw_context *brw, struct brw_vue_map *vue_map,
{
const struct intel_context *intel = &brw->intel;
- /* Prior to Gen6, don't assign a slot for VARYING_SLOT_CLIP_VERTEX, since
- * it is unsupported.
- */
- if (intel->gen < 6)
- slots_valid &= ~VARYING_BIT_CLIP_VERTEX;
-
vue_map->slots_valid = slots_valid;
int i;