Mesa (main): ac/nir: add an option to disable anisotropic filtering for single level images
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Dec 16 07:42:25 UTC 2021
Module: Mesa
Branch: main
Commit: 8a327722d541d4b8eb3cdd485cf8b0770d1912b9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8a327722d541d4b8eb3cdd485cf8b0770d1912b9
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Mon Dec 13 17:39:01 2021 +0100
ac/nir: add an option to disable anisotropic filtering for single level images
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14171>
---
src/amd/llvm/ac_nir_to_llvm.c | 2 +-
src/amd/llvm/ac_shader_abi.h | 5 +++++
src/amd/vulkan/radv_nir_to_llvm.c | 1 +
src/gallium/drivers/radeonsi/si_shader_llvm.c | 1 +
4 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c
index 0c585d7d9f8..697bab09d76 100644
--- a/src/amd/llvm/ac_nir_to_llvm.c
+++ b/src/amd/llvm/ac_nir_to_llvm.c
@@ -4453,7 +4453,7 @@ static LLVMValueRef sici_fix_sampler_aniso(struct ac_nir_context *ctx, LLVMValue
LLVMBuilderRef builder = ctx->ac.builder;
LLVMValueRef img7, samp0;
- if (ctx->ac.chip_class >= GFX8)
+ if (ctx->ac.chip_class >= GFX8 || !ctx->abi->disable_aniso_single_level)
return samp;
img7 = LLVMBuildExtractElement(builder, res, LLVMConstInt(ctx->ac.i32, 7, 0), "");
diff --git a/src/amd/llvm/ac_shader_abi.h b/src/amd/llvm/ac_shader_abi.h
index 941cc3ce582..c1269f83a02 100644
--- a/src/amd/llvm/ac_shader_abi.h
+++ b/src/amd/llvm/ac_shader_abi.h
@@ -170,6 +170,11 @@ struct ac_shader_abi {
* some GFX10.3 chips.
*/
bool adjust_frag_coord_z;
+
+ /* Whether anisotropic filtering should be disabled for single level
+ * images.
+ */
+ bool disable_aniso_single_level;
};
#endif /* AC_SHADER_ABI_H */
diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c
index 09c1710c27e..c6f43a6fce9 100644
--- a/src/amd/vulkan/radv_nir_to_llvm.c
+++ b/src/amd/vulkan/radv_nir_to_llvm.c
@@ -2399,6 +2399,7 @@ ac_translate_nir_to_llvm(struct ac_llvm_compiler *ac_llvm,
ctx.abi.clamp_shadow_reference = false;
ctx.abi.adjust_frag_coord_z = options->adjust_frag_coord_z;
ctx.abi.robust_buffer_access = options->robust_buffer_access;
+ ctx.abi.disable_aniso_single_level = true;
bool is_ngg = is_pre_gs_stage(shaders[0]->info.stage) && info->is_ngg;
if (shader_count >= 2 || is_ngg)
diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c
index 0577287f73c..8ece050561b 100644
--- a/src/gallium/drivers/radeonsi/si_shader_llvm.c
+++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c
@@ -520,6 +520,7 @@ static bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *
ctx->abi.convert_undef_to_zero = true;
ctx->abi.clamp_div_by_zero = ctx->screen->options.clamp_div_by_zero;
ctx->abi.adjust_frag_coord_z = false;
+ ctx->abi.disable_aniso_single_level = true;
const struct si_shader_info *info = &ctx->shader->selector->info;
for (unsigned i = 0; i < info->num_outputs; i++) {
More information about the mesa-commit
mailing list