[Piglit] faster piglit start-up

Dylan Baker dylan at pnwbakers.com
Thu Apr 13 17:15:02 UTC 2017

Quoting Brian Paul (2017-04-12 13:15:54)
> When we run piglit the all.py script traverses the entire tests/ and 
> generated/tests/ directories looking for *.shader_test, *.vert, *.frag, 
> etc. shaders to run.  In the generated_tests/ directory, there's about 
> 60,000 entries to scan (ls -R generated_tests|wc)
> This takes some time, especially so with MinGW in a Windows VM.  Between 
> that and other setup overhead it takes about 8 minutes on my system 
> before any tests are run.  Ugh.  Linux is much faster but there's still 
> a start-up lag.
> I'd like to trim this down.  The prime area I'm looking at is skipping 
> swaths of tests when we know the particular feature is not supported by 
> the GL driver.
> In framework/driver_classifier.py we run glxinfo to get the GL renderer 
> string, etc.  I'm looking at expanding this to get the driver's GL and 
> GLSL versions, extension list, etc.
> Then, in all.py when we're scanning the tests directory and we find 
> somthing like "spec/arb_gpu_shader_fp64" which may not be supported by 
> the driver, we can skip that directory.  For drivers which don't support 
> all the latest GL 4.x extensions (like VMware's) we can save a lot of 
> time by skipping subdirectory traversals and building the test list.
> I'm digging into this now but it'll probably be a few days before I'll 
> have something to review.
> I'd be interested to hear any other ideas to reduce start-up time.
> -Brian
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit

I have some patches that work but need to be cleaned up for review that build an
XML list of test files at build time rather than at run time, and then piglit
iterates the XML file at runtime, it has very low memory overhead (since it
iteratively reads the XML), and doesn't build Test instances until they're
needed. Even with filters it makes piglit start up instant on my haswell. It
also works with the fast-skip mechanism so at least for shader and glsl-parser
tests it is very fast.

You can see what I have On my github wip/compiled-profiles-v2

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/piglit/attachments/20170413/c3d375b6/attachment.sig>

More information about the Piglit mailing list