agx: Handle txl
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Mon, 5 Jul 2021 03:27:01 +0000 (23:27 -0400)
committerMarge Bot <eric+marge@anholt.net>
Mon, 5 Jul 2021 20:56:04 +0000 (20:56 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11718>

src/asahi/compiler/agx_compile.c

index 64b4896..b307202 100644 (file)
@@ -711,11 +711,15 @@ agx_emit_tex(agx_builder *b, nir_tex_instr *instr)
 {
    switch (instr->op) {
    case nir_texop_tex:
+   case nir_texop_txl:
       break;
    default:
       unreachable("Unhandled texture op");
    }
 
+   enum agx_lod_mode lod_mode = (instr->op == nir_texop_tex) ?
+      AGX_LOD_MODE_AUTO_LOD : AGX_LOD_MODE_LOD_MIN;
+
    agx_index coords = agx_null(),
              texture = agx_immediate(instr->texture_index),
              sampler = agx_immediate(instr->sampler_index),
@@ -731,6 +735,9 @@ agx_emit_tex(agx_builder *b, nir_tex_instr *instr)
          break;
 
       case nir_tex_src_lod:
+         lod = index;
+         break;
+
       case nir_tex_src_bias:
       case nir_tex_src_ms_index:
       case nir_tex_src_offset:
@@ -745,7 +752,7 @@ agx_emit_tex(agx_builder *b, nir_tex_instr *instr)
    agx_texture_sample_to(b, agx_dest_index(&instr->dest),
          coords, lod, texture, sampler, offset,
          agx_tex_dim(instr->sampler_dim, instr->is_array),
-         AGX_LOD_MODE_AUTO_LOD, /* TODO */
+         lod_mode,
          0xF, /* TODO: wrmask */
          0);