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

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Tue May 15 22:27:28 2018 +0200

radv: only declare the ESGS rings for pre GFX9 chips

GFX9 uses LDS instead.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>

---

 src/amd/vulkan/radv_nir_to_llvm.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/amd/vulkan/radv_nir_to_llvm.c 
b/src/amd/vulkan/radv_nir_to_llvm.c
index 82b1e3637f..dba615025d 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -3017,9 +3017,16 @@ ac_nir_eliminate_const_vs_outputs(struct 
radv_shader_context *ctx)
 static void
 ac_setup_rings(struct radv_shader_context *ctx)
 {
-       if ((ctx->stage == MESA_SHADER_VERTEX && ctx->options->key.vs.as_es) ||
-           (ctx->stage == MESA_SHADER_TESS_EVAL && 
ctx->options->key.tes.as_es)) {
-               ctx->esgs_ring = ac_build_load_to_sgpr(&ctx->ac, 
ctx->ring_offsets, LLVMConstInt(ctx->ac.i32, RING_ESGS_VS, false));
+       if (ctx->options->chip_class <= VI &&
+           (ctx->stage == MESA_SHADER_GEOMETRY ||
+            ctx->options->key.vs.as_es || ctx->options->key.tes.as_es)) {
+               unsigned ring = ctx->stage == MESA_SHADER_GEOMETRY ? 
RING_ESGS_GS
+                                                                  : 
RING_ESGS_VS;
+               LLVMValueRef offset = LLVMConstInt(ctx->ac.i32, ring, false);
+
+               ctx->esgs_ring = ac_build_load_to_sgpr(&ctx->ac,
+                                                      ctx->ring_offsets,
+                                                      offset);
        }
 
        if (ctx->is_gs_copy_shader) {
@@ -3030,7 +3037,6 @@ ac_setup_rings(struct radv_shader_context *ctx)
                uint32_t num_entries = 64;
                LLVMValueRef gsvs_ring_stride = LLVMConstInt(ctx->ac.i32, 
ctx->max_gsvs_emit_size, false);
                LLVMValueRef gsvs_ring_desc = LLVMConstInt(ctx->ac.i32, 
ctx->max_gsvs_emit_size << 16, false);
-               ctx->esgs_ring = ac_build_load_to_sgpr(&ctx->ac, 
ctx->ring_offsets, LLVMConstInt(ctx->ac.i32, RING_ESGS_GS, false));
                ctx->gsvs_ring = ac_build_load_to_sgpr(&ctx->ac, 
ctx->ring_offsets, LLVMConstInt(ctx->ac.i32, RING_GSVS_GS, false));
 
                ctx->gsvs_ring = LLVMBuildBitCast(ctx->ac.builder, 
ctx->gsvs_ring, ctx->ac.v4i32, "");

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to