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