i965/vec4: Use MOV_INDIRECT instead of reladdr for indirect push constants
[mesa.git] / src / mesa / drivers / dri / i965 / brw_vec4_nir.cpp
index 80845dc97cc6b74f6905388eccce79e80cd39cb3..3259c8fe7736d28f2a5a1011b6ae33f71715fa6a 100644 (file)
@@ -708,12 +708,14 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
          /* Offsets are in bytes but they should always be multiples of 16 */
          assert(const_offset->u32[0] % 16 == 0);
          src.reg_offset = const_offset->u32[0] / 16;
+
+         emit(MOV(dest, src));
       } else {
-         src_reg tmp = get_nir_src(instr->src[0], BRW_REGISTER_TYPE_UD, 1);
-         src.reladdr = new(mem_ctx) src_reg(tmp);
-      }
+         src_reg indirect = get_nir_src(instr->src[0], BRW_REGISTER_TYPE_UD, 1);
 
-      emit(MOV(dest, src));
+         emit(SHADER_OPCODE_MOV_INDIRECT, dest, src,
+              indirect, brw_imm_ud(instr->const_index[1]));
+      }
       break;
    }