From: Samuel Pitoiset Date: Wed, 7 Feb 2018 18:09:12 +0000 (+0100) Subject: ac: add ac_build_export_null() helper X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bd9f7b763558f9cf1a39a732cb7e5a501b6f024a;p=mesa.git ac: add ac_build_export_null() helper Imported from RadeonSI. Signed-off-by: Samuel Pitoiset Reviewed-by: Marek Olšák --- diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index a86ba962fab..e88456274ff 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -1347,6 +1347,23 @@ void ac_build_export(struct ac_llvm_context *ctx, struct ac_export_args *a) AC_FUNC_ATTR_LEGACY); } +void ac_build_export_null(struct ac_llvm_context *ctx) +{ + struct ac_export_args args; + + args.enabled_channels = 0x0; /* enabled channels */ + args.valid_mask = 1; /* whether the EXEC mask is valid */ + args.done = 1; /* DONE bit */ + args.target = V_008DFC_SQ_EXP_NULL; + args.compr = 0; /* COMPR flag (0 = 32-bit export) */ + args.out[0] = LLVMGetUndef(ctx->f32); /* R */ + args.out[1] = LLVMGetUndef(ctx->f32); /* G */ + args.out[2] = LLVMGetUndef(ctx->f32); /* B */ + args.out[3] = LLVMGetUndef(ctx->f32); /* A */ + + ac_build_export(ctx, &args); +} + LLVMValueRef ac_build_image_opcode(struct ac_llvm_context *ctx, struct ac_image_args *a) { diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h index 47c843fb4b4..7e53115dc86 100644 --- a/src/amd/common/ac_llvm_build.h +++ b/src/amd/common/ac_llvm_build.h @@ -279,6 +279,8 @@ struct ac_export_args { void ac_build_export(struct ac_llvm_context *ctx, struct ac_export_args *a); +void ac_build_export_null(struct ac_llvm_context *ctx); + enum ac_image_opcode { ac_image_sample, ac_image_gather4, diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index f7413a2d6f0..4ff00db55f3 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -3725,25 +3725,6 @@ static void si_emit_ps_exports(struct si_shader_context *ctx, ac_build_export(&ctx->ac, &exp->args[i]); } -static void si_export_null(struct lp_build_tgsi_context *bld_base) -{ - struct si_shader_context *ctx = si_shader_context(bld_base); - struct lp_build_context *base = &bld_base->base; - struct ac_export_args args; - - args.enabled_channels = 0x0; /* enabled channels */ - args.valid_mask = 1; /* whether the EXEC mask is valid */ - args.done = 1; /* DONE bit */ - args.target = V_008DFC_SQ_EXP_NULL; - args.compr = 0; /* COMPR flag (0 = 32-bit export) */ - args.out[0] = base->undef; /* R */ - args.out[1] = base->undef; /* G */ - args.out[2] = base->undef; /* B */ - args.out[3] = base->undef; /* A */ - - ac_build_export(&ctx->ac, &args); -} - /** * Return PS outputs in this order: * @@ -7735,7 +7716,7 @@ static void si_build_ps_epilog_function(struct si_shader_context *ctx, if (depth || stencil || samplemask) si_export_mrt_z(bld_base, depth, stencil, samplemask, &exp); else if (last_color_export == -1) - si_export_null(bld_base); + ac_build_export_null(&ctx->ac); if (exp.num) si_emit_ps_exports(ctx, &exp);