Mesa (master): etnaviv: nir: support nir_intrinsic_load_texture_rect_scaling

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Feb 23 14:22:00 UTC 2021


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

Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date:   Sat Feb  6 21:09:19 2021 +0100

etnaviv: nir: support nir_intrinsic_load_texture_rect_scaling

Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8898>

---

 src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c | 10 ++++++++++
 src/gallium/drivers/etnaviv/etnaviv_compiler_nir.h |  3 ++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c
index be0b52757e5..08424c3e56d 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c
@@ -370,6 +370,15 @@ get_src(struct etna_compile *c, nir_src *src)
          return (hw_src) { .use = 1, .rgroup = INST_RGROUP_INTERNAL };
       case nir_intrinsic_load_frag_coord:
          return SRC_REG(0, INST_SWIZ_IDENTITY);
+      case nir_intrinsic_load_texture_rect_scaling: {
+         int sampler = nir_src_as_int(intr->src[0]);
+         nir_const_value values[] = {
+            TEXSCALE(sampler, 0),
+            TEXSCALE(sampler, 1),
+         };
+
+         return src_swizzle(const_src(c, values, 2), SWIZZLE(X,Y,X,X));
+      }
       default:
          compile_error(c, "Unhandled NIR intrinsic type: %s\n",
                        nir_intrinsic_infos[intr->intrinsic].name);
@@ -582,6 +591,7 @@ emit_intrinsic(struct etna_compile *c, nir_intrinsic_instr * intr)
       break;
    case nir_intrinsic_load_input:
    case nir_intrinsic_load_instance_id:
+   case nir_intrinsic_load_texture_rect_scaling:
       break;
    default:
       compile_error(c, "Unhandled NIR intrinsic type: %s\n",
diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.h b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.h
index a44710704ae..149532b647a 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.h
@@ -215,7 +215,8 @@ dest_for_instr(nir_instr *instr)
       if (intr->intrinsic == nir_intrinsic_load_uniform ||
           intr->intrinsic == nir_intrinsic_load_ubo ||
           intr->intrinsic == nir_intrinsic_load_input ||
-          intr->intrinsic == nir_intrinsic_load_instance_id)
+          intr->intrinsic == nir_intrinsic_load_instance_id ||
+          intr->intrinsic == nir_intrinsic_load_texture_rect_scaling)
          dest = &intr->dest;
    } break;
    case nir_instr_type_deref:



More information about the mesa-commit mailing list