From 06a503ca7163174e9763adcf64186d38997fee83 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Mon, 20 May 2013 22:10:29 +1200 Subject: [PATCH] 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 Reviewed-by: Paul Berry Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 4 +++- src/mesa/drivers/dri/i965/brw_vs.c | 6 ------ 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; -- 2.30.2