nir/lower_clip: Add i/o semantics for load/store intrinsics.
ir3 looks at the .location on its inputs for handling
non-VARYING_SLOT_POS, but our uninitialized semantics matched that and
threw a compiler assertion failure.
Fixes: 502abfce7f
("nir: save IO semantics in lowered IO intrinsics")
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6716>
This commit is contained in:
@@ -233,11 +233,10 @@ traces:
|
||||
# expectations:
|
||||
# - device: freedreno-a630
|
||||
# checksum: 0
|
||||
# Fails due to clipdistance lowering not setting i/o semantics.
|
||||
# - path: neverball/neverball.trace
|
||||
# expectations:
|
||||
# - device: freedreno-a630
|
||||
# checksum: 0
|
||||
- path: neverball/neverball.trace
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
checksum: e67cdf15590f1729201eb82393f5513e
|
||||
- path: pathfinder/canvas_moire.trace
|
||||
expectations:
|
||||
- device: freedreno-a630
|
||||
|
@@ -100,6 +100,13 @@ store_clipdist_output(nir_builder *b, nir_variable *out, nir_ssa_def **val)
|
||||
store->num_components = 4;
|
||||
nir_intrinsic_set_base(store, out->data.driver_location);
|
||||
nir_intrinsic_set_write_mask(store, 0xf);
|
||||
|
||||
nir_io_semantics semantics = {
|
||||
.location = out->data.location,
|
||||
.num_slots = 1,
|
||||
};
|
||||
nir_intrinsic_set_io_semantics(store, semantics);
|
||||
|
||||
store->src[0].ssa = nir_vec4(b, val[0], val[1], val[2], val[3]);
|
||||
store->src[0].is_ssa = true;
|
||||
store->src[1] = nir_src_for_ssa(nir_imm_int(b, 0));
|
||||
@@ -115,6 +122,13 @@ load_clipdist_input(nir_builder *b, nir_variable *in, int location_offset,
|
||||
load = nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_input);
|
||||
load->num_components = 4;
|
||||
nir_intrinsic_set_base(load, in->data.driver_location + location_offset);
|
||||
|
||||
nir_io_semantics semantics = {
|
||||
.location = in->data.location,
|
||||
.num_slots = 1,
|
||||
};
|
||||
nir_intrinsic_set_io_semantics(load, semantics);
|
||||
|
||||
load->src[0] = nir_src_for_ssa(nir_imm_int(b, 0));
|
||||
nir_ssa_dest_init(&load->instr, &load->dest, 4, 32, NULL);
|
||||
nir_builder_instr_insert(b, &load->instr);
|
||||
|
Reference in New Issue
Block a user