summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2018-02-07 19:09:12 +0100
committerSamuel Pitoiset <[email protected]>2018-02-08 22:11:42 +0100
commitbd9f7b763558f9cf1a39a732cb7e5a501b6f024a (patch)
treea610e1f31db698df6b89c297688a5c8af0213edb
parent1f4d2433e73a0a6d4e2a180de407970d983309db (diff)
ac: add ac_build_export_null() helper
Imported from RadeonSI. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/amd/common/ac_llvm_build.c17
-rw-r--r--src/amd/common/ac_llvm_build.h2
-rw-r--r--src/gallium/drivers/radeonsi/si_shader.c21
3 files changed, 20 insertions, 20 deletions
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);