radv: determine if a shader uses indirect descriptors from the SGPR loc

If the SGPR loc is declared, the shader needs indirect descriptor sets.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13149>
This commit is contained in:
Samuel Pitoiset
2021-09-28 10:44:45 +02:00
committed by Marge Bot
parent 2d4fc61bff
commit 113ce21528
5 changed files with 16 additions and 7 deletions
@@ -5317,7 +5317,9 @@ visit_load_tess_coord(isel_context* ctx, nir_intrinsic_instr* instr)
Temp
load_desc_ptr(isel_context* ctx, unsigned desc_set)
{
if (ctx->program->info->need_indirect_descriptor_sets) {
struct radv_userdata_locations *user_sgprs_locs = &ctx->program->info->user_sgprs_locs;
if (user_sgprs_locs->shader_data[AC_UD_INDIRECT_DESCRIPTOR_SETS].sgpr_idx != -1) {
Builder bld(ctx->program, ctx->block);
Temp ptr64 = convert_pointer_to_64_bit(ctx, get_arg(ctx, ctx->args->descriptor_sets[0]));
Operand off = bld.copy(bld.def(s1), Operand::c32(desc_set << 2));