etnaviv: Implement TXD
authorMarek Vasut <marex@denx.de>
Sat, 23 Apr 2022 13:41:13 +0000 (15:41 +0200)
committerMarge Bot <emma+marge@anholt.net>
Tue, 12 Jul 2022 21:28:11 +0000 (21:28 +0000)
Fill in support for TXD instruction which emits shader TEXLDD opcode.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17500>

src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c
src/gallium/drivers/etnaviv/etnaviv_compiler_nir_emit.c
src/gallium/drivers/etnaviv/etnaviv_nir.c

index 4a23dc3..ef8baf3 100644 (file)
@@ -522,10 +522,12 @@ emit_tex(struct etna_compile *c, nir_tex_instr * tex)
          break;
       case nir_tex_src_bias:
       case nir_tex_src_lod:
+      case nir_tex_src_ddx:
          assert(!src1);
          src1 = &tex->src[i].src;
          break;
       case nir_tex_src_comparator:
+      case nir_tex_src_ddy:
          src2 = &tex->src[i].src;
          break;
       default:
index a6f9c5f..7d8c483 100644 (file)
@@ -212,6 +212,7 @@ etna_emit_tex(struct etna_compile *c, nir_texop op, unsigned texid, unsigned dst
    switch (op) {
    case nir_texop_tex: inst.opcode = INST_OPCODE_TEXLD; break;
    case nir_texop_txb: inst.opcode = INST_OPCODE_TEXLDB; break;
+   case nir_texop_txd: inst.opcode = INST_OPCODE_TEXLDD; break;
    case nir_texop_txl: inst.opcode = INST_OPCODE_TEXLDL; break;
    default:
       compile_error(c, "Unhandled NIR tex type: %d\n", op);
index f27296e..57bc2bc 100644 (file)
@@ -108,6 +108,8 @@ etna_lower_io(nir_shader *shader, struct etna_shader_variant *v)
                   src1 = &tex->src[i].src;
                   src1_idx = i;
                   break;
+               case nir_tex_src_ddx:
+               case nir_tex_src_ddy:
                case nir_tex_src_comparator:
                   break;
                default: