nir/spirv: Fix a small bug in row-major matrix loading
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 8 Jan 2016 20:27:25 +0000 (12:27 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 8 Jan 2016 20:27:25 +0000 (12:27 -0800)
src/glsl/nir/spirv/spirv_to_nir.c

index 4f5639c4cf40d508fd62022671e4aa1fce053c66..49b9a6500f8e833188d7251db309563e5b02fe5f 100644 (file)
@@ -1350,7 +1350,11 @@ _vtn_block_load_store(struct vtn_builder *b, nir_intrinsic_op op, bool load,
             if (type->row_major) {
                num_ops = glsl_get_vector_elements(type->type);
                vec_width = glsl_get_matrix_columns(type->type);
-               if (!load) {
+               if (load) {
+                  const struct glsl_type *transpose_type =
+                     glsl_matrix_type(base_type, vec_width, num_ops);
+                  *inout = vtn_create_ssa_value(b, transpose_type);
+               } else {
                   transpose = vtn_ssa_transpose(b, *inout);
                   inout = &transpose;
                }