summaryrefslogtreecommitdiff
path: root/src/asahi
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2021-07-04 23:27:01 -0400
committerMarge Bot <eric+marge@anholt.net>2021-07-05 20:56:04 +0000
commit50f012542f3a502aa16c332c78e9d5eaf9336f1f (patch)
tree2c5b36fbc9d2e8b55b599d7e006a29e0730906ad /src/asahi
parent8361e24604607a85828c6ef41b6cadaf3adfa82e (diff)
agx: Handle txl
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11718>
Diffstat (limited to 'src/asahi')
-rw-r--r--src/asahi/compiler/agx_compile.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c
index 64b4896cc7d..b30720287b1 100644
--- a/src/asahi/compiler/agx_compile.c
+++ b/src/asahi/compiler/agx_compile.c
@@ -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);