mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 13:20:14 +01:00
radv/ac: setup lds for tessellation
This seems to get lost in the rebases, should fix the tessellation demos, crash in llvm. Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
3f0d69af20
commit
cb1518e96b
1 changed files with 12 additions and 0 deletions
|
|
@ -548,6 +548,14 @@ static void set_userdata_location_indirect(struct ac_userdata_info *ud_info, uin
|
|||
}
|
||||
#endif
|
||||
|
||||
static void declare_tess_lds(struct nir_to_llvm_context *ctx)
|
||||
{
|
||||
unsigned lds_size = ctx->options->chip_class >= CIK ? 65536 : 32768;
|
||||
ctx->lds = LLVMBuildIntToPtr(ctx->builder, ctx->i32zero,
|
||||
LLVMPointerType(LLVMArrayType(ctx->i32, lds_size / 4), LOCAL_ADDR_SPACE),
|
||||
"tess_lds");
|
||||
}
|
||||
|
||||
static void create_function(struct nir_to_llvm_context *ctx)
|
||||
{
|
||||
LLVMTypeRef arg_types[23];
|
||||
|
|
@ -785,6 +793,8 @@ static void create_function(struct nir_to_llvm_context *ctx)
|
|||
ctx->vs_prim_id = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
ctx->instance_id = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
}
|
||||
if (ctx->options->key.vs.as_ls)
|
||||
declare_tess_lds(ctx);
|
||||
break;
|
||||
case MESA_SHADER_TESS_CTRL:
|
||||
set_userdata_location_shader(ctx, AC_UD_TCS_OFFCHIP_LAYOUT, user_sgpr_idx, 4);
|
||||
|
|
@ -797,6 +807,8 @@ static void create_function(struct nir_to_llvm_context *ctx)
|
|||
ctx->tess_factor_offset = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
ctx->tcs_patch_id = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
ctx->tcs_rel_ids = LLVMGetParam(ctx->main_function, arg_idx++);
|
||||
|
||||
declare_tess_lds(ctx);
|
||||
break;
|
||||
case MESA_SHADER_TESS_EVAL:
|
||||
set_userdata_location_shader(ctx, AC_UD_TES_OFFCHIP_LAYOUT, user_sgpr_idx, 1);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue