radeonsi: fill aco shader info for mono standalone vs
authorQiang Yu <yuq825@gmail.com>
Fri, 28 Apr 2023 07:51:09 +0000 (15:51 +0800)
committerQiang Yu <yuq825@gmail.com>
Fri, 2 Jun 2023 09:51:06 +0000 (17:51 +0800)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23096>

src/gallium/drivers/radeonsi/si_shader_aco.c

index 443264a..c657170 100644 (file)
@@ -60,6 +60,7 @@ static void
 si_fill_aco_shader_info(struct si_shader *shader, struct aco_shader_info *info)
 {
    const struct si_shader_selector *sel = shader->selector;
+   const union si_shader_key *key = &shader->key;
 
    info->wave_size = shader->wave_size;
    info->workgroup_size = si_get_max_workgroup_size(shader);
@@ -69,7 +70,17 @@ si_fill_aco_shader_info(struct si_shader *shader, struct aco_shader_info *info)
 
    info->image_2d_view_of_3d = sel->screen->info.gfx_level == GFX9;
 
+   if (sel->stage <= MESA_SHADER_GEOMETRY && key->ge.as_ngg && !key->ge.as_es) {
+      info->is_ngg = true;
+      info->has_ngg_culling = key->ge.opt.ngg_culling;
+      info->has_ngg_early_prim_export = gfx10_ngg_export_prim_early(shader);
+   }
+
    switch (sel->stage) {
+   case MESA_SHADER_VERTEX:
+      info->vs.as_es = key->ge.as_es;
+      info->vs.as_ls = key->ge.as_ls;
+      break;
    case MESA_SHADER_FRAGMENT:
       info->ps.num_interp = si_get_ps_num_interp(shader);
       info->ps.spi_ps_input = shader->config.spi_ps_input_ena;