Thanks for making the changes I requested. Reviewed-by: Dylan Baker <[email protected]>
Quoting Rafael Antognolli (2017-04-18 14:50:20) > If the 'dwords' dict is empty, max(dwords.keys()) throws an exception. > This case could happen when we have an instruction that is only an array > of other structs, with variable length. > > v2: > - Add another clause for empty dwords and make it work with python 3 > (Dylan) > - Set the length to 0 if dwords is empty, and do not declare dw > > Signed-off-by: Rafael Antognolli <[email protected]> > --- > src/intel/genxml/gen_pack_header.py | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > > diff --git a/src/intel/genxml/gen_pack_header.py > b/src/intel/genxml/gen_pack_header.py > index 29bec40..d0b1336 100644 > --- a/src/intel/genxml/gen_pack_header.py > +++ b/src/intel/genxml/gen_pack_header.py > @@ -346,7 +346,7 @@ class Group(object): > dwords[index + 1] = dwords[index] > index = index + 1 > > - def emit_pack_function(self): > + def collect_dwords_and_length(self): > dwords = {} > self.collect_dwords(dwords, 0, "") > > @@ -356,9 +356,14 @@ class Group(object): > # index we've seen plus one. > if self.size > 0: > length = self.size // 32 > - else: > + elif dwords: > length = max(dwords.keys()) + 1 > + else: > + length = 0 > + > + return (dwords, length) > > + def emit_pack_function(self, dwords, length): > for index in range(length): > # Handle MBZ dwords > if not index in dwords: > @@ -575,10 +580,12 @@ class Parser(object): > print("static inline void\n%s_pack(__gen_user_data *data, void * > restrict dst,\n%sconst struct %s * restrict values)\n{" % > (name, ' ' * (len(name) + 6), name)) > > - # Cast dst to make header C++ friendly > - print(" uint32_t * restrict dw = (uint32_t * restrict) dst;") > + (dwords, length) = group.collect_dwords_and_length() > + if length: > + # Cast dst to make header C++ friendly > + print(" uint32_t * restrict dw = (uint32_t * restrict) dst;") > > - group.emit_pack_function() > + group.emit_pack_function(dwords, length) > > print("}\n") > > -- > git-series 0.9.1 > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
