break;
}
- if (ctx->shader_info->info.needs_push_constants)
+ if (ctx->shader_info->info.loads_push_constants)
user_sgpr_info->sgpr_count += 2;
uint32_t remaining_sgprs = 16 - user_sgpr_info->sgpr_count;
add_array_arg(args, const_array(type, 32), desc_sets);
}
- if (ctx->shader_info->info.needs_push_constants) {
+ if (ctx->shader_info->info.loads_push_constants) {
/* 1 for push constants and dynamic descriptors */
add_array_arg(args, type, &ctx->push_constants);
}
ctx->shader_info->need_indirect_descriptor_sets = true;
}
- if (ctx->shader_info->info.needs_push_constants) {
+ if (ctx->shader_info->info.loads_push_constants) {
set_loc_shader(ctx, AC_UD_PUSH_CONSTANTS, user_sgpr_idx, 2);
}
}
case nir_intrinsic_load_primitive_id:
info->uses_prim_id = true;
break;
+ case nir_intrinsic_load_push_constant:
+ info->loads_push_constants = true;
+ break;
case nir_intrinsic_vulkan_resource_index:
info->desc_set_used_mask |= (1 << nir_intrinsic_desc_set(instr));
break;
{
struct nir_function *func = (struct nir_function *)exec_list_get_head(&nir->functions);
- info->needs_push_constants = false;
- if ((options->layout->push_constant_size &&
- options->layout->push_constant_stages & (1 << nir->info.stage)) ||
- options->layout->dynamic_offset_count)
- info->needs_push_constants = true;
+ if (options->layout->dynamic_offset_count)
+ info->loads_push_constants = true;
nir_foreach_variable(variable, &nir->inputs)
gather_info_input_decl(nir, options, variable, info);
struct ac_nir_compiler_options;
struct ac_shader_info {
- bool needs_push_constants;
+ bool loads_push_constants;
uint32_t desc_set_used_mask;
bool needs_multiview_view_index;
bool uses_invocation_id;