AC_UD_NGG_GS_STATE = 6,
AC_UD_NGG_CULLING_SETTINGS = 7,
AC_UD_NGG_VIEWPORT = 8,
- AC_UD_SHADER_START = 9,
+ AC_UD_FORCE_VRS_RATES = 9,
+ AC_UD_SHADER_START = 10,
AC_UD_VS_VERTEX_BUFFERS = AC_UD_SHADER_START,
AC_UD_VS_BASE_VERTEX_START_INSTANCE,
AC_UD_VS_PROLOG_INPUTS,
uint32_t num_lds_blocks_when_not_culling;
uint32_t num_tess_patches;
unsigned workgroup_size;
+ bool force_vrs_per_vertex;
struct {
uint8_t input_usage_mask[RADV_VERT_ATTRIB_MAX];
uint8_t output_usage_mask[VARYING_SLOT_VAR31 + 1];
if (needs_view_index)
user_sgpr_count++;
+ if (info->force_vrs_per_vertex)
+ user_sgpr_count++;
+
if (info->loads_push_constants)
user_sgpr_count++;
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.view_index);
}
+ if (info->force_vrs_per_vertex) {
+ ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.force_vrs_rates);
+ }
+
if (info->vs.as_es) {
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.es2gs_offset);
} else if (info->vs.as_ls) {
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.view_index);
}
+ if (info->force_vrs_per_vertex) {
+ ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.force_vrs_rates);
+ }
+
if (info->is_ngg) {
declare_ngg_sgprs(info, args, has_api_gs);
}
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.view_index);
}
+ if (info->force_vrs_per_vertex) {
+ ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.force_vrs_rates);
+ }
+
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.gs2vs_offset);
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.gs_wave_id);
if (options->explicit_scratch_args) {
case MESA_SHADER_VERTEX:
if (args->ac.view_index.used)
set_loc_shader(args, AC_UD_VIEW_INDEX, &user_sgpr_idx, 1);
+ if (args->ac.force_vrs_rates.used)
+ set_loc_shader(args, AC_UD_FORCE_VRS_RATES, &user_sgpr_idx, 1);
break;
case MESA_SHADER_TESS_CTRL:
if (args->ac.view_index.used)
if (args->ac.view_index.used)
set_loc_shader(args, AC_UD_VIEW_INDEX, &user_sgpr_idx, 1);
+ if (args->ac.force_vrs_rates.used)
+ set_loc_shader(args, AC_UD_FORCE_VRS_RATES, &user_sgpr_idx, 1);
+
if (args->ngg_gs_state.used) {
set_loc_shader(args, AC_UD_NGG_GS_STATE, &user_sgpr_idx, 1);
}