aco: Fix integer overflows when emitting parallel copies during RA
[mesa.git] / src / amd / vulkan / radv_shader_args.c
index 6f40808d8255ffa94c57b429dbc392045a48356b..c6070dfe8ef4822a57872b780d8102c44345aa76 100644 (file)
@@ -68,7 +68,7 @@ set_loc_desc(struct radv_shader_args *args, int idx, uint8_t *sgpr_idx)
 
        set_loc(ud_info, sgpr_idx, 1);
 
-       locs->descriptor_sets_enabled |= 1 << idx;
+       locs->descriptor_sets_enabled |= 1u << idx;
 }
 
 struct user_sgpr_info {
@@ -615,6 +615,11 @@ radv_declare_shader_args(struct radv_shader_args *args,
                                           &args->ac.view_index);
                        }
 
+                       if (args->options->key.vs_common_out.as_ngg) {
+                               ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT,
+                                          &args->ngg_gs_state);
+                       }
+
                        ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT,
                                   &args->gs_vtx_offset[0]);
                        ac_add_arg(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT,
@@ -742,6 +747,9 @@ radv_declare_shader_args(struct radv_shader_args *args,
                }
                if (args->ac.view_index.used)
                        set_loc_shader(args, AC_UD_VIEW_INDEX, &user_sgpr_idx, 1);
+
+               if (args->ngg_gs_state.used)
+                       set_loc_shader(args, AC_UD_NGG_GS_STATE, &user_sgpr_idx, 1);
                break;
        case MESA_SHADER_FRAGMENT:
                break;