ir3: reuse ir3_find_output in ir3_find_output_regid

The search logic was duplicated here. Also added a new helper
ir3_get_output_regid to make the regid calculation reusable.

Signed-off-by: Job Noorman <jnoorman@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31222>
This commit is contained in:
Job Noorman
2025-01-22 15:33:48 +01:00
committed by Marge Bot
parent 39206c1150
commit 040b803e4b
+13 -8
View File
@@ -1325,17 +1325,22 @@ ir3_link_shaders(struct ir3_shader_linkage *l,
}
}
static inline uint32_t
ir3_get_output_regid(const struct ir3_shader_output *output)
{
return output->regid | (output->half ? HALF_REG_ID : 0);
}
static inline uint32_t
ir3_find_output_regid(const struct ir3_shader_variant *so, unsigned slot)
{
for (unsigned j = 0; j < so->outputs_count; j++)
if (so->outputs[j].slot == slot) {
uint32_t regid = so->outputs[j].regid;
if (so->outputs[j].half)
regid |= HALF_REG_ID;
return regid;
}
return regid(63, 0);
int output_idx = ir3_find_output(so, (gl_varying_slot)slot);
if (output_idx < 0) {
return INVALID_REG;
}
return ir3_get_output_regid(&so->outputs[output_idx]);
}
void print_raw(FILE *out, const BITSET_WORD *data, size_t size);