From b1a16232932058f1b3db478964098c3a7c76e8d4 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 1 Feb 2016 13:47:13 -0800 Subject: [PATCH] nir/spirv: Add support for SpvOpImage --- src/glsl/nir/spirv/spirv_to_nir.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/glsl/nir/spirv/spirv_to_nir.c b/src/glsl/nir/spirv/spirv_to_nir.c index 32188e5f364..ed6ad6d7e63 100644 --- a/src/glsl/nir/spirv/spirv_to_nir.c +++ b/src/glsl/nir/spirv/spirv_to_nir.c @@ -1167,6 +1167,17 @@ vtn_handle_texture(struct vtn_builder *b, SpvOp opcode, val->sampled_image->sampler = vtn_value(b, w[4], vtn_value_type_access_chain)->access_chain; return; + } else if (opcode == SpvOpImage) { + struct vtn_value *val = + vtn_push_value(b, w[2], vtn_value_type_access_chain); + struct vtn_value *src_val = vtn_untyped_value(b, w[3]); + if (src_val->value_type == vtn_value_type_sampled_image) { + val->access_chain = src_val->sampled_image->image; + } else { + assert(src_val->value_type == vtn_value_type_access_chain); + val->access_chain = src_val->access_chain; + } + return; } struct vtn_type *ret_type = vtn_value(b, w[1], vtn_value_type_type)->type; @@ -2380,6 +2391,7 @@ vtn_handle_body_instruction(struct vtn_builder *b, SpvOp opcode, break; case SpvOpSampledImage: + case SpvOpImage: case SpvOpImageSampleImplicitLod: case SpvOpImageSampleExplicitLod: case SpvOpImageSampleDrefImplicitLod: -- 2.11.0