From c22ce3cab9897133476675bbc8990616b5f1ef45 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 8 Apr 2024 19:07:47 -0400 Subject: [PATCH] agx: fix some ms texture packing Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_compile.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c index 1e918734763..c4b446461e9 100644 --- a/src/asahi/compiler/agx_compile.c +++ b/src/asahi/compiler/agx_compile.c @@ -1999,6 +1999,14 @@ agx_emit_tex(agx_builder *b, nir_tex_instr *instr) } } + enum agx_lod_mode lod_mode = agx_lod_mode_for_nir( + instr->op, nir_tex_instr_src_index(instr, nir_tex_src_bias) >= 0); + + if (lod_mode == AGX_LOD_MODE_AUTO_LOD) { + /* Ignored logically but asserted 0 */ + lod = agx_immediate(0); + } + agx_index dst = agx_def_index(&instr->def); /* Pack shadow reference value (compare) and packed offset together */ @@ -2014,10 +2022,8 @@ agx_emit_tex(agx_builder *b, nir_tex_instr *instr) agx_index tmp = agx_vec_temp(b->shader, dst.size, 4); agx_instr *I = agx_texture_sample_to( b, tmp, coords, lod, bindless, texture, sampler, compare_offset, - agx_tex_dim(instr->sampler_dim, instr->is_array), - agx_lod_mode_for_nir( - instr->op, nir_tex_instr_src_index(instr, nir_tex_src_bias) >= 0), - 0, !agx_is_null(packed_offset), !agx_is_null(compare), + agx_tex_dim(instr->sampler_dim, instr->is_array), lod_mode, 0, + !agx_is_null(packed_offset), !agx_is_null(compare), instr->op == nir_texop_lod, agx_gather_for_nir(instr)); if (instr->op == nir_texop_txf || instr->op == nir_texop_txf_ms)