util: Add BLAKE3 hash support
In !18644, there were some complaints about Mesa's SHA1 implementation being slow.
Instead of trying to find and integrate SHA-1 assembly from a variety of places, why not replace it with something more modern?
This MR adds a copy of blake3 hashing library into Mesa. BLAKE3 was chosen because it's fast, and there is an actively maintained official implementation, which is used by ccache and llvm.
There are some potential build system issues that can happen with old compiler versions, which we should keep an eye on. I also had to patch symbol visibility in util/blake3: Patch with hidden visibility for asm symbols.
to comply with the shared object export policy.
As a preliminary benchmark, I replaced all sha1 calls with BLAKE3 truncated to 160-bits (not in this MR), and ran fossilize-replay
with a warm shader cache (cache hits only). I used --loop 20
which also happens to shift the majority of cost to hashing, because this way Fossilize only does the JSON parsing once. Still, it sufficiently demonstrates how faster BLAKE3 hashing is.
main (e84cf80f): 5824ms
This MR: 2393ms (-59%)