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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user