From: Samuel Pitoiset Date: Fri, 16 Feb 2018 09:33:10 +0000 (+0100) Subject: ac/nir: move ac_declare_lds_as_pointer() outside of the switch X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1ac741d690bea8e9a3d2dbc2f8e34deadc2ec072;p=mesa.git ac/nir: move ac_declare_lds_as_pointer() outside of the switch Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index dc471de9773..12f097e2b26 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -1068,8 +1068,6 @@ static void create_function(struct radv_shader_context *ctx, set_loc_shader(ctx, AC_UD_VS_LS_TCS_IN_LAYOUT, &user_sgpr_idx, 1); } - if (ctx->options->key.vs.as_ls) - ac_declare_lds_as_pointer(&ctx->ac); break; case MESA_SHADER_TESS_CTRL: set_vs_specific_input_locs(ctx, stage, has_previous_stage, @@ -1080,7 +1078,6 @@ static void create_function(struct radv_shader_context *ctx, set_loc_shader(ctx, AC_UD_TCS_OFFCHIP_LAYOUT, &user_sgpr_idx, 4); if (ctx->abi.view_index) set_loc_shader(ctx, AC_UD_VIEW_INDEX, &user_sgpr_idx, 1); - ac_declare_lds_as_pointer(&ctx->ac); break; case MESA_SHADER_TESS_EVAL: set_loc_shader(ctx, AC_UD_TES_OFFCHIP_LAYOUT, &user_sgpr_idx, 1); @@ -1102,8 +1099,6 @@ static void create_function(struct radv_shader_context *ctx, &user_sgpr_idx, 2); if (ctx->abi.view_index) set_loc_shader(ctx, AC_UD_VIEW_INDEX, &user_sgpr_idx, 1); - if (has_previous_stage) - ac_declare_lds_as_pointer(&ctx->ac); break; case MESA_SHADER_FRAGMENT: if (ctx->shader_info->info.ps.needs_sample_positions) { @@ -1115,6 +1110,13 @@ static void create_function(struct radv_shader_context *ctx, unreachable("Shader stage not implemented"); } + if (stage == MESA_SHADER_TESS_CTRL || + (stage == MESA_SHADER_VERTEX && ctx->options->key.vs.as_ls) || + /* GFX9 has the ESGS ring buffer in LDS. */ + (stage == MESA_SHADER_GEOMETRY && has_previous_stage)) { + ac_declare_lds_as_pointer(&ctx->ac); + } + ctx->shader_info->num_user_sgprs = user_sgpr_idx; }