nir/spirv: Add support for SpvOpImage
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 1 Feb 2016 21:47:13 +0000 (13:47 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 1 Feb 2016 22:03:05 +0000 (14:03 -0800)
src/glsl/nir/spirv/spirv_to_nir.c

index 32188e5f364378ecfae80b7f33cb44ea2158a1b0..ed6ad6d7e63c5183fef7c6bcb219666c2841398b 100644 (file)
@@ -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: