case SpvOpTextureGather:
case SpvOpTextureGatherOffset:
case SpvOpTextureGatherOffsets:
- case SpvOpTextureQueryLod:
+ case SpvOpTextureQueryLod: {
/* All these types have the coordinate as their first real argument */
- coord_components = glsl_get_vector_elements(b->values[w[4]].type);
- p->src = nir_src_for_ssa(vtn_ssa_value(b, w[4]));
- struct vtn_value *coord = vtn_value(b, w[4], vtn_value_type_ssa);
++ struct vtn_ssa_value *coord = vtn_ssa_value(b, w[4]);
+ coord_components = glsl_get_vector_elements(coord->type);
- p->src = nir_src_for_ssa(coord->ssa->def);
++ p->src = nir_src_for_ssa(coord->def);
p->src_type = nir_tex_src_coord;
p++;
break;
+ }
++
default:
break;
}
instr->is_array = glsl_sampler_type_is_array(sampler_type);
instr->is_shadow = glsl_sampler_type_is_shadow(sampler_type);
- instr->sampler = sampler;
+ instr->sampler = nir_deref_as_var(nir_copy_deref(instr, &sampler->deref));
nir_ssa_dest_init(&instr->instr, &instr->dest, 4, NULL);
- val->ssa = &instr->dest.ssa;
+ val->ssa->def = &instr->dest.ssa;
+ val->ssa->type = val->type;
nir_builder_instr_insert(&b->nb, &instr->instr);
}