mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 00:40:09 +01:00
gallivm: add subgroup system values support
This just adds support for retrieving subgroup system values. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9645>
This commit is contained in:
parent
1b8145eee9
commit
52415cd39e
3 changed files with 18 additions and 0 deletions
|
|
@ -1676,6 +1676,9 @@ static void visit_intrinsic(struct lp_build_nir_context *bld_base,
|
|||
case nir_intrinsic_load_sample_pos:
|
||||
case nir_intrinsic_load_sample_mask_in:
|
||||
case nir_intrinsic_load_view_index:
|
||||
case nir_intrinsic_load_subgroup_invocation:
|
||||
case nir_intrinsic_load_subgroup_id:
|
||||
case nir_intrinsic_load_num_subgroups:
|
||||
bld_base->sysval_intrin(bld_base, instr, result);
|
||||
break;
|
||||
case nir_intrinsic_load_helper_invocation:
|
||||
|
|
|
|||
|
|
@ -1590,6 +1590,19 @@ static void emit_sysval_intrin(struct lp_build_nir_context *bld_base,
|
|||
case nir_intrinsic_load_view_index:
|
||||
result[0] = lp_build_broadcast_scalar(&bld_base->uint_bld, bld->system_values.view_index);
|
||||
break;
|
||||
case nir_intrinsic_load_subgroup_invocation: {
|
||||
LLVMValueRef elems[LP_MAX_VECTOR_LENGTH];
|
||||
for(unsigned i = 0; i < bld->bld_base.base.type.length; ++i)
|
||||
elems[i] = lp_build_const_int32(gallivm, i);
|
||||
result[0] = LLVMConstVector(elems, bld->bld_base.base.type.length);
|
||||
break;
|
||||
}
|
||||
case nir_intrinsic_load_subgroup_id:
|
||||
result[0] = lp_build_broadcast_scalar(&bld_base->uint_bld, bld->system_values.subgroup_id);
|
||||
break;
|
||||
case nir_intrinsic_load_num_subgroups:
|
||||
result[0] = lp_build_broadcast_scalar(&bld_base->uint_bld, bld->system_values.num_subgroups);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -188,6 +188,8 @@ struct lp_bld_tgsi_system_values {
|
|||
LLVMValueRef sample_pos;
|
||||
LLVMValueRef sample_mask_in;
|
||||
LLVMValueRef view_index;
|
||||
LLVMValueRef subgroup_id;
|
||||
LLVMValueRef num_subgroups;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue