[Mesa-dev] GLSL IR & TGSI on-disk shader cache

Timothy Arceri tarceri at itsqueeze.com
Tue Feb 7 03:42:04 UTC 2017

This series adds support for a GLSL IR level and TGSI (OpenGL/st)
level caches.

There are a few small bug fixes and a little bit of restructuring
to the GLSL IR patches to make things work for Gallium drivers vs
just i965 previously, but nothing too major.

The biggest change is patch 35 which changes the mesa cache
directory to be more structured allowing us to not fallback to
recompiles at draw time if we realise a cache item was created
with an old version of Mesa. Patch 36 also cleans up old cache
files so we shouldn't get into a possition were we are constantly
evicting cache items because its never cleaned out.

Even with the new directory structure I've still left in the
code that adds the Mesa version string to cache items because
users can do things like override the OpenGL version which will
change the output (in future we might want to just add this as
part of the sha1 input).

This series does not include the patch that adds cache support
to the radeonsi backend, the main reason for this is that llvm
currently doesn't allow the version to be queried at runtime
(as far as I'm aware) although it seems like other are interested
in this feature [1] so I will follow up on that.

The reason we don't just use the build time like radv is that we
will want something consistent accross distros to enable 
distribution of precompiled shaders.

Without the radeonsi patch min fps still goes up around 4 fps in
the Shadow of Mordor benchmark (although the stalls are still
very noticeable).

I should also point out that this enables a tgsi level cache for
r600, but I haven't tested this myself and lack the hardware.

Also any other Gallium driver that uses TGSI should also be able
to enable support.

Please review.

[1] https://groups.google.com/forum/#!topic/llvm-dev/xUg8fAKIKsA 

More information about the mesa-dev mailing list