Merge branch 'wip/nir-vtn' into vulkan
authorConnor Abbott <cwabbott0@gmail.com>
Fri, 26 Jun 2015 19:14:05 +0000 (12:14 -0700)
committerConnor Abbott <cwabbott0@gmail.com>
Fri, 26 Jun 2015 19:14:05 +0000 (12:14 -0700)
Adds composites and matrix multiplication, plus some control flow fixes.

1  2 
src/glsl/nir/spirv_to_nir.c

index d8523fd5a52bf132f2ed76f74e0cf792a618f294,a5e9c4aa8aec26f14d0ba0473890a75bd7caeef6..a47c683ffdf54543f97bfafeeb9409d4eda08a26
@@@ -804,13 -930,15 +1023,16 @@@ vtn_handle_texture(struct vtn_builder *
     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);
  }