agx: skip scoreboard bit in builder for !wait

it's supposed to be set late, not at build-time.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26963>
This commit is contained in:
Alyssa Rosenzweig
2023-12-28 14:31:02 -04:00
parent 7fff5a128b
commit 5009e48748
2 changed files with 6 additions and 6 deletions

View File

@@ -30,7 +30,7 @@ agx_alloc_instr(agx_builder *b, enum agx_opcode op, uint8_t nr_dests, uint8_t nr
op = opcodes[opcode]
dests = op.dests
srcs = op.srcs
imms = op.imms
imms = [x for x in op.imms if (x.name != 'scoreboard' or opcode == 'wait')]
suffix = "_to" if dests > 0 else ""
nr_dests = "nr_dests" if op.variable_dests else str(dests)
nr_srcs = "nr_srcs" if op.variable_srcs else str(srcs)

View File

@@ -567,7 +567,7 @@ agx_emit_load(agx_builder *b, agx_index dest, nir_intrinsic_instr *instr)
offset = agx_abs(offset);
agx_device_load_to(b, dest, addr, offset, fmt,
BITFIELD_MASK(instr->def.num_components), shift, 0);
BITFIELD_MASK(instr->def.num_components), shift);
agx_emit_cached_split(b, dest, instr->def.num_components);
}
@@ -585,7 +585,7 @@ agx_emit_store(agx_builder *b, nir_intrinsic_instr *instr)
agx_device_store(b, agx_recollect_vector(b, instr->src[0]), addr, offset,
fmt, BITFIELD_MASK(nir_src_num_components(instr->src[0])),
shift, 0);
shift);
}
/* Preambles write directly to uniform registers, so move from uniform to GPR */
@@ -764,7 +764,7 @@ agx_emit_atomic(agx_builder *b, agx_index dst, nir_intrinsic_instr *instr,
agx_local_atomic_to(b, dst, value, base, index, op);
} else {
assert(base.size == AGX_SIZE_64);
agx_atomic_to(b, dst, value, base, index, op, 0);
agx_atomic_to(b, dst, value, base, index, op);
}
}
@@ -964,7 +964,7 @@ agx_emit_image_load(agx_builder *b, agx_index dst, nir_intrinsic_instr *intr)
agx_instr *I = agx_image_load_to(
b, tmp, coords, lod, bindless, texture, agx_txf_sampler(b->shader),
agx_null(), agx_tex_dim(dim, is_array), lod_mode, 0, 0, false);
agx_null(), agx_tex_dim(dim, is_array), lod_mode, 0, false);
I->mask = agx_expand_tex_to(b, &intr->def, tmp, true);
return NULL;
}
@@ -1854,7 +1854,7 @@ agx_emit_tex(agx_builder *b, nir_tex_instr *instr)
agx_tex_dim(instr->sampler_dim, instr->is_array),
agx_lod_mode_for_nir(
instr->op, nir_tex_instr_src_index(instr, nir_tex_src_bias) >= 0),
0, 0, !agx_is_null(packed_offset), !agx_is_null(compare),
0, !agx_is_null(packed_offset), !agx_is_null(compare),
instr->op == nir_texop_lod, agx_gather_for_nir(instr));
if (txf)