Hi Ian, I haven't tested the code, but while scroling through I've found at least one mistake (the second comment below):
On Thu, Sep 25, 2014 at 01:36:40PM -0700, Ian Romanick wrote: > From: Ian Romanick <[email protected]> ... > +def vector_base_type(type): > + """Return the type of an element from a vector.""" > + if not isvector(type): > + raise Exception("Non-vector type {}".format(type)) > + > + if type[0] == 'v': > + return "float" > + elif type[0] == 'i': > + return "int" > + elif type[0] == 'u': > + return "uint" > + elif type[0] == 'b': > + return "bool" > + elif type[0] == 'd': > + return "double" > + else: > + raise Exception("Unknown vector type {}".format(type)) Imho it would look better if you replace the if/elif/else with a dictionary lookup: type_map = {'v':"float", 'i':"int", ...} try: return type_map[type[0]] except KeyError: pass raise Exception("Unknown vector type {}".format(type)) ... > +class unique_name_dict: > + """Helper class to generate a unique name for each field. > + > + Fields for each particular type have names based on the type. Each name > + is suffixed by a number, and the number is incremented each time a field > + of that type is created. For example, the first int field will be named > + "i1", and the second will be named "i2". > + """ > + > + def __init__(self): > + self.names = {} > + > + def trim_name(self, type): > + """Internal method to reduce a type name to a canonical form > + > + These names are used to track the type in the self.names dict. > + > + Array types have the arrayness stripped. Vector types have vector > + count stripped. Matrix types are converted to canonical "mat#x#" > + form. All other type names are unmodified. > + """ > + if isarray(type): > + t = array_base_type(type) > + else: > + t = type > + > + if ismatrix(t): > + # Canonicalize matrix type names. > + c, r = matrix_dimensions(t) > + > + name = "mat{}x{}".format(c, r) > + if t[0] == "d": > + name = "d" + name > + > + return name > + elif isscalar(t): > + return t > + elif isvector: isvector misses a (t) here. ... > +if __name__ == "__main__": ... > + blocks = generate_block_list( > + glsl_version, > + packing, > + fields, > + layouts) > + > + print emit_shader_test( > + blocks, > + packing, > + glsl_version, > + extensions) This print statement doesn't work with python3, but a print() would (as well as with python2(.6)). Cheers, Daniel Martin _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
