case OP_TYPE_INT: reflect_int_type(op); break;
case OP_TYPE_FLOAT: reflect_float_type(op); break;
case OP_TYPE_VECTOR: reflect_vector_type(op); break;
- case OP_TYPE_MATRIX: reflect_vector_type(op); break;
+ case OP_TYPE_MATRIX: reflect_matrix_type(op); break;
case OP_TYPE_IMAGE: reflect_image_type(op); break;
case OP_TYPE_SAMPLED_IMAGE: reflect_sampled_image_type(op); break;
case OP_TYPE_ARRAY: reflect_array_type(op); break;
TypeInfo &type = types[*(op+1)];
DataType component = types[*(op+2)].type;
unsigned count = *(op+3);
- type.type = static_cast<DataType>((count<<12) | (component&0xF00) | ((component&0xFF)*count));
+ type.type = static_cast<DataType>(((count-1)<<12) | (component&0xF00) | ((component&0xFF)*count));
}
void SpirVModule::Reflection::reflect_matrix_type(CodeIterator op)
TypeInfo &type = types[*(op+1)];
DataType column = types[*(op+2)].type;
unsigned count = *(op+3);
- type.type = static_cast<DataType>((count<<16) | (column&0xF00) | ((column&0xFF)*count));
+ type.type = static_cast<DataType>(((count-1)<<14) | (column&0x3F00) | ((column&0xFF)*count));
}
void SpirVModule::Reflection::reflect_image_type(CodeIterator op)