Mesa (master): ac/nir: Fix nir_texop_lod on GFX for 1D arrays.

Bas Nieuwenhuizen bnieuwenhuizen at kemper.freedesktop.org
Sun Oct 22 22:30:29 UTC 2017


Module: Mesa
Branch: master
Commit: 2c5b43c87fc4e5dcc50f72d782d7b3718e3c2c1c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2c5b43c87fc4e5dcc50f72d782d7b3718e3c2c1c

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Sun Oct 22 18:32:14 2017 +0200

ac/nir: Fix nir_texop_lod on GFX for 1D arrays.

Fixes: 1bcb953e166 'radv: handle GFX9 1D textures'
Reviewed-by: Dave Airlie <airlied at redhat.com>

---

 src/amd/common/ac_nir_to_llvm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 360ca81ca8..5e5a46a21f 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -4747,7 +4747,9 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)
 				filler = LLVMConstReal(ctx->ac.f32, 0.5);
 
 			if (instr->sampler_dim == GLSL_SAMPLER_DIM_1D) {
-				if (instr->is_array) {
+				/* No nir_texop_lod, because it does not take a slice
+				 * even with array textures. */
+				if (instr->is_array && instr->op != nir_texop_lod ) {
 					address[count] = address[count - 1];
 					address[count - 1] = filler;
 					count++;




More information about the mesa-commit mailing list