nir: Make rq_load committed src an index

committed has to be a constant so there is no need to have a src and
depend on constant folding to remove the i2b.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22963>
This commit is contained in:
Konstantin Seurer
2023-05-11 19:00:51 +02:00
committed by Marge Bot
parent 626669bab3
commit 0cf22f9af3
4 changed files with 16 additions and 12 deletions

View File

@@ -427,9 +427,8 @@ static nir_ssa_def *
lower_rq_load(nir_builder *b, nir_ssa_def *index, nir_intrinsic_instr *instr,
struct ray_query_vars *vars)
{
assert(nir_src_is_const(instr->src[1]));
bool closest = nir_src_as_bool(instr->src[1]);
struct ray_query_intersection_vars *intersection = closest ? &vars->closest : &vars->candidate;
bool committed = nir_intrinsic_committed(instr);
struct ray_query_intersection_vars *intersection = committed ? &vars->closest : &vars->candidate;
uint32_t column = nir_intrinsic_column(instr);
@@ -494,7 +493,7 @@ lower_rq_load(nir_builder *b, nir_ssa_def *index, nir_intrinsic_instr *instr,
return rq_load_var(b, index, intersection->t);
case nir_ray_query_value_intersection_type: {
nir_ssa_def *intersection_type = rq_load_var(b, index, intersection->intersection_type);
if (!closest)
if (!committed)
intersection_type = nir_iadd_imm(b, intersection_type, -1);
return intersection_type;