[Piglit] refactor and optimize OpenGL test generators
Dylan Baker
baker.dylan.c at gmail.com
Wed Nov 12 16:09:52 PST 2014
I read diff -Naur old_tests new_tests for hours.
If there is something easier please tell me.
On Wednesday, November 12, 2014 04:05:49 PM Jason Ekstrand wrote:
> What did you do (besides verifying that the tests pass) to ensure that the
> generated result is equivalent to the previous generator? Have you
> verified that they generate basically the same code?
>
> On Wed, Nov 12, 2014 at 3:45 PM, Dylan Baker <baker.dylan.c at gmail.com>
> wrote:
>
> > This rather lengthy series takes a strong stab at cleaning up the python
> > generators, particularly the OpenGL generators, with the exception of
> > the generators that rely on the builtin_function.py and
> > builtin_funciton_fp64.py (I have another series underway to deal with
> > those, but one thing at a time).
> >
> > There are 4 goals for each generator in this series:
> > 1) Use mako:
> > There on generator (gen_interpolation_tests) that didn't use mako
> > before this series. There are also several generators that nominally
> > use mako, but don't take advantage of it's features, instead relying
> > on python functions and blocks when mako is better equipped to handle
> > the problem itself
> > 2) Make it fast:
> > Mako is faster than string concatenation, but there are also some
> > really stupid things going on in these generators. For example Some
> > of them loop over the same very large container several times when
> > they could be combined.
> > 3) Make it clean:
> > The style of these ranges from pretty good, to pretty bad. There is a
> > lot of C-in-python code here, and a lot of use of sub-optimal
> > functions, like range instead of xrange, dict.items() instead of
> > dict.iteritems(), etc
> > 4) Split the templates:
> > This both helps with speed and cleanliness. It makes it clean because
> > the templates don't clutter the python scripts, in some cases the
> > templates are as long as the script itself. It also means we can use
> > a module_directory, which will speed up rebuilds significantly.
> >
> > Finally, as a bonus, the last patch splits the generators targets for
> > the generators so that the OpenGL and OpenCL generators aren't linked by
> > default. This allows OpenGL developers and OpenCL developers to save
> > time with generated tests they aren't going to run.
> >
> > Despite all of the work this ends up being a was for LOC, in 45 patches
> > we gain ~100 lines.
> >
> > I noticed on my system ~2 second decrease for OpenGL test generation,
> > and about a ~5 second decrease for OpenGL test regeneration (using
> > cached templates)
> >
> > This is available at my github:
> > https://github.com/dcbaker/piglit submit/generator-cleanups
> >
> > _______________________________________________
> > Piglit mailing list
> > Piglit at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/piglit
> >
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20141112/f199ce24/attachment.sig>
More information about the Piglit
mailing list