pan/bi: implement nir_intrinsic_load_draw_id

Only valid on >= 9

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30583>
This commit is contained in:
Louis-Francis Ratté-Boulianne 2024-08-20 23:23:24 -04:00 committed by Marge Bot
parent 676afca468
commit ce76caf3ee

View file

@ -117,6 +117,13 @@ bi_instance_id(bi_builder *b)
return bi_preload(b, (b->shader->arch >= 9) ? 61 : 62);
}
static inline bi_index
bi_draw_id(bi_builder *b)
{
assert(b->shader->arch >= 9);
return bi_preload(b, 62);
}
static void
bi_emit_jump(bi_builder *b, nir_jump_instr *instr)
{
@ -1892,6 +1899,10 @@ bi_emit_intrinsic(bi_builder *b, nir_intrinsic_instr *instr)
bi_mov_i32_to(b, dst, bi_instance_id(b));
break;
case nir_intrinsic_load_draw_id:
bi_mov_i32_to(b, dst, bi_draw_id(b));
break;
case nir_intrinsic_load_subgroup_invocation:
bi_mov_i32_to(b, dst, bi_fau(BIR_FAU_LANE_ID, false));
break;