On Friday, September 26, 2014 12:28:09 AM Daniel Martin wrote: > 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)).
We use the __future__ print_function throughout piglit, I would recommend using that instead. > > > Cheers, > Daniel Martin > _______________________________________________ > Piglit mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/piglit
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
