Mesa (main): radeonsi: Add nir_lower_poly_line_smooth pass for polygon and line smoothing
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sat Jul 16 10:41:27 UTC 2022
Module: Mesa
Branch: main
Commit: 25204d89a617e90c2db4272ada49271d1eaf208f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=25204d89a617e90c2db4272ada49271d1eaf208f
Author: Arvind Yadav <arvind.yadav at amd.com>
Date: Fri Apr 29 18:18:36 2022 +0530
radeonsi: Add nir_lower_poly_line_smooth pass for polygon and line smoothing
Added a new NIR pass for handling polygon and line smoothing and
Removed previous smoothing changes.
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16245>
---
src/gallium/drivers/radeonsi/si_shader.c | 3 +++
src/gallium/drivers/radeonsi/si_shader_llvm_ps.c | 25 ------------------------
2 files changed, 3 insertions(+), 25 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index bfb7a91c44e..9874c964ac9 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1647,6 +1647,9 @@ struct nir_shader *si_get_nir_shader(struct si_shader *shader, bool *free_nir,
progress = true;
}
+ if (sel->stage == MESA_SHADER_FRAGMENT && key->ps.mono.poly_line_smoothing)
+ NIR_PASS(progress, nir, nir_lower_poly_line_smooth, SI_NUM_SMOOTH_AA_SAMPLES);
+
if (progress)
si_nir_opts(sel->screen, nir, true);
diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c b/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c
index 5a883d0197b..069a0f58a4e 100644
--- a/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c
+++ b/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c
@@ -217,19 +217,6 @@ static void si_alpha_test(struct si_shader_context *ctx, LLVMValueRef alpha)
}
}
-static LLVMValueRef si_get_coverage_from_sample_mask(struct si_shader_context *ctx)
-{
- LLVMValueRef coverage;
-
- /* alpha = alpha * popcount(coverage) / SI_NUM_SMOOTH_AA_SAMPLES */
- coverage = LLVMGetParam(ctx->main_fn, SI_PARAM_SAMPLE_COVERAGE);
- coverage = ac_build_bit_count(&ctx->ac, ac_to_integer(&ctx->ac, coverage));
- coverage = LLVMBuildUIToFP(ctx->ac.builder, coverage, ctx->ac.f32, "");
-
- return LLVMBuildFMul(ctx->ac.builder, coverage,
- LLVMConstReal(ctx->ac.f32, 1.0 / SI_NUM_SMOOTH_AA_SAMPLES), "");
-}
-
struct si_ps_exports {
unsigned num;
struct ac_export_args args[10];
@@ -508,10 +495,6 @@ void si_llvm_ps_build_end(struct si_shader_context *ctx)
}
}
- LLVMValueRef smoothing_coverage = NULL;
- if (ctx->shader->key.ps.mono.poly_line_smoothing)
- smoothing_coverage = si_get_coverage_from_sample_mask(ctx);
-
/* Fill the return structure. */
ret = ctx->return_value;
@@ -527,11 +510,6 @@ void si_llvm_ps_build_end(struct si_shader_context *ctx)
continue;
if (LLVMTypeOf(color[i][0]) == ctx->ac.f16) {
- if (smoothing_coverage) {
- color[i][3] = LLVMBuildFMul(builder, color[i][3],
- LLVMBuildFPTrunc(builder, smoothing_coverage, ctx->ac.f16, ""), "");
- }
-
for (j = 0; j < 2; j++) {
LLVMValueRef tmp = ac_build_gather_values(&ctx->ac, &color[i][j * 2], 2);
tmp = LLVMBuildBitCast(builder, tmp, ctx->ac.f32, "");
@@ -539,9 +517,6 @@ void si_llvm_ps_build_end(struct si_shader_context *ctx)
}
vgpr += 2;
} else {
- if (smoothing_coverage)
- color[i][3] = LLVMBuildFMul(builder, color[i][3], smoothing_coverage, "");
-
for (j = 0; j < 4; j++)
ret = LLVMBuildInsertValue(builder, ret, color[i][j], vgpr++, "");
}
More information about the mesa-commit
mailing list