Mesa (master): ac/nir: move ac_declare_lds_as_pointer() outside of the switch

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Tue Feb 20 09:45:20 UTC 2018


Module: Mesa
Branch: master
Commit: 1ac741d690bea8e9a3d2dbc2f8e34deadc2ec072
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ac741d690bea8e9a3d2dbc2f8e34deadc2ec072

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Fri Feb 16 10:33:10 2018 +0100

ac/nir: move ac_declare_lds_as_pointer() outside of the switch

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/common/ac_nir_to_llvm.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index dc471de977..12f097e2b2 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;
 }
 




More information about the mesa-commit mailing list