From 63ed11cde9987e438bf28ef74879e2700971eb26 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 26 Aug 2016 19:49:13 +0000 Subject: [PATCH] radeonsi: Don't use global variables for tess lds MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We were allocating global variables for the maximum LDS size which made the compiler think we were using all of LDS, which isn't the case. Reviewed-By: Edward O'Callaghan Reviewed-by: Marek Olšák --- src/gallium/drivers/radeonsi/si_shader.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index a5b566e5489..12f2df9bfe0 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -5413,16 +5413,13 @@ static unsigned llvm_get_type_size(LLVMTypeRef type) static void declare_tess_lds(struct si_shader_context *ctx) { struct gallivm_state *gallivm = &ctx->radeon_bld.gallivm; - LLVMTypeRef i32 = ctx->radeon_bld.soa.bld_base.uint_bld.elem_type; - unsigned lds_size = ctx->screen->b.chip_class >= CIK ? 65536 : 32768; + struct lp_build_tgsi_context *bld_base = &ctx->radeon_bld.soa.bld_base; + struct lp_build_context *uint = &bld_base->uint_bld; - /* The actual size is computed outside of the shader to reduce - * the number of shader variants. */ - ctx->lds = - LLVMAddGlobalInAddressSpace(gallivm->module, - LLVMArrayType(i32, lds_size / 4), - "tess_lds", - LOCAL_ADDR_SPACE); + unsigned lds_size = ctx->screen->b.chip_class >= CIK ? 65536 : 32768; + ctx->lds = LLVMBuildIntToPtr(gallivm->builder, uint->zero, + LLVMPointerType(LLVMArrayType(ctx->i32, lds_size / 4), LOCAL_ADDR_SPACE), + "tess_lds"); } static void create_function(struct si_shader_context *ctx) -- 2.30.2