radeonsi: fix a regression causing GPU hang with GLCTS using streamout
Move the streamout code into the streamout-only branch. The code must be
guarded by si_shader_uses_streamout(). Using xfb_stride is not enough.
Fixes: 003cbddfee - radeonsi: use native shader info when init streamout args
Reviewed-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20147>
This commit is contained in:
@@ -210,17 +210,17 @@ static void declare_streamout_params(struct si_shader_args *args, struct si_shad
|
||||
if (si_shader_uses_streamout(shader)) {
|
||||
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.streamout_config);
|
||||
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.streamout_write_index);
|
||||
|
||||
/* A streamout buffer offset is loaded if the stride is non-zero. */
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (!sel->info.base.xfb_stride[i])
|
||||
continue;
|
||||
|
||||
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.streamout_offset[i]);
|
||||
}
|
||||
} else if (sel->stage == MESA_SHADER_TESS_EVAL) {
|
||||
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, NULL);
|
||||
}
|
||||
|
||||
/* A streamout buffer offset is loaded if the stride is non-zero. */
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (!sel->info.base.xfb_stride[i])
|
||||
continue;
|
||||
|
||||
ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.streamout_offset[i]);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned si_get_max_workgroup_size(const struct si_shader *shader)
|
||||
|
||||
Reference in New Issue
Block a user