summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-05-09 12:34:10 -0700
committerJason Ekstrand <[email protected]>2017-05-09 15:07:47 -0700
commitd2fe804d1890774828a5481f5873743d71d37c2a (patch)
tree5c1e42ca4a774d7e96bb5d9a6b424f3adbd42eb4
parentca4d1928023755d099578b7354bf763b8fa4a0f8 (diff)
i965/vec4: Set VERT_BIT_EDGEFLAG based on the VUE map
We also add a nice little comment to make it more clear exactly what happens with the edge flag copy. Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/intel/compiler/brw_vec4.cpp11
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c4
2 files changed, 11 insertions, 4 deletions
diff --git a/src/intel/compiler/brw_vec4.cpp b/src/intel/compiler/brw_vec4.cpp
index 9366b893068..7b17c642752 100644
--- a/src/intel/compiler/brw_vec4.cpp
+++ b/src/intel/compiler/brw_vec4.cpp
@@ -2778,6 +2778,17 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
const unsigned *assembly = NULL;
+ if (prog_data->base.vue_map.varying_to_slot[VARYING_SLOT_EDGE] != -1) {
+ /* If the output VUE map contains VARYING_SLOT_EDGE then we need to copy
+ * the edge flag from VERT_ATTRIB_EDGEFLAG. This will be done
+ * automatically by brw_vec4_visitor::emit_urb_slot but we need to
+ * ensure that prog_data->inputs_read is accurate.
+ */
+ assert(!is_scalar);
+ assert(key->copy_edgeflag);
+ prog_data->inputs_read |= VERT_BIT_EDGEFLAG;
+ }
+
prog_data->base.clip_distance_mask =
((1 << shader->info.clip_distance_array_size) - 1);
prog_data->base.cull_distance_mask =
diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
index b1ea01a9add..b823a4dd5c6 100644
--- a/src/mesa/drivers/dri/i965/brw_vs.c
+++ b/src/mesa/drivers/dri/i965/brw_vs.c
@@ -213,10 +213,6 @@ brw_codegen_vs_prog(struct brw_context *brw,
prog_data.inputs_read = vp->program.info.inputs_read;
prog_data.double_inputs_read = vp->program.info.double_inputs_read;
- if (key->copy_edgeflag) {
- prog_data.inputs_read |= VERT_BIT_EDGEFLAG;
- }
-
brw_compute_vue_map(devinfo,
&prog_data.base.vue_map, outputs_written,
vp->program.nir->info.separate_shader);