From fb96f85d19efc51fec2218f627913bc16c4d5822 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 2 Apr 2026 18:02:22 +0200 Subject: [PATCH] spirv: implement SpvOpUntypedImageTexelPointerEXT Signed-off-by: Samuel Pitoiset Part-of: --- src/compiler/spirv/spirv_to_nir.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 1ad5eb6e028..6a19e49d35c 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -4216,6 +4216,20 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode, val->image->lod = nir_imm_int(&b->nb, 0); val->image->format = type->image_format; return; + } else if (opcode == SpvOpUntypedImageTexelPointerEXT) { + struct vtn_type *type = vtn_get_value_type(b, w[3]); + struct vtn_value *val = + vtn_push_value(b, w[2], vtn_value_type_image_pointer); + val->image = vtn_alloc(b, struct vtn_image_pointer); + + val->image->image = nir_build_deref_cast(&b->nb, vtn_get_nir_ssa(b, w[4]), + nir_var_image, + type->glsl_image, 0); + val->image->coord = get_image_coord(b, w[5]); + val->image->sample = vtn_get_nir_ssa(b, w[6]); + val->image->lod = nir_imm_int(&b->nb, 0); + val->image->format = type->image_format; + return; } struct vtn_image_pointer image; @@ -6762,6 +6776,7 @@ vtn_handle_body_instruction(struct vtn_builder *b, SpvOp opcode, case SpvOpImageSparseRead: case SpvOpImageWrite: case SpvOpImageTexelPointer: + case SpvOpUntypedImageTexelPointerEXT: case SpvOpImageQueryFormat: case SpvOpImageQueryOrder: vtn_handle_image(b, opcode, w, count);