From: Jason Ekstrand Date: Thu, 26 Nov 2015 08:05:32 +0000 (-0800) Subject: i965/vec4: Stop pretending to support indirect output stores X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b715e6d52832a0761ccec5c1252e7458499bf752;p=mesa.git i965/vec4: Stop pretending to support indirect output stores Since we're using nir_lower_outputs_to_temporaries to shadow all our outputs, it's impossible to actually get an indirect store. The code we had to "handle" this was pretty bogus as it created a register with a reladdr and then stuffed it in a fixed varying slot without so much as a MOV. Not only does this not do the MOV, it also puts the indirect on the wrong side of the transaction. Let's just delete the broken dead code. Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp index 86fcc97ed64..1e0302290ca 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp @@ -393,21 +393,15 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr) } case nir_intrinsic_store_output_indirect: - has_indirect = true; - /* fallthrough */ + unreachable("nir_lower_outputs_to_temporaries should prevent this"); + case nir_intrinsic_store_output: { int varying = instr->const_index[0]; src = get_nir_src(instr->src[0], BRW_REGISTER_TYPE_F, instr->num_components); - dest = dst_reg(src); - if (has_indirect) { - dest.reladdr = new(mem_ctx) src_reg(get_nir_src(instr->src[1], - BRW_REGISTER_TYPE_D, - 1)); - } - output_reg[varying] = dest; + output_reg[varying] = dst_reg(src); break; }