zink: add 'optimal_keys' handling for shader keys
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 1 Sep 2022 19:56:06 +0000 (15:56 -0400)
committerMarge Bot <emma+marge@anholt.net>
Mon, 26 Sep 2022 17:12:31 +0000 (17:12 +0000)
commit325c703624a7ccb74356c697ad305755db289a01
treeb821b84ec8dd410f31ddaaa8ecd8f008d00a362d
parent1198568e32bafe63b3198db70b68663b3d697005
zink: add 'optimal_keys' handling for shader keys

if it's known on init that there are no variants for nonseamless cubes,
or inlined values, or decomposed vertex attrs, then shader keys can be
compressed more optimally to reduce the work needed on program updates

more importantly, this reduces the total hash value for all the shader
modules to a single uint32_t (technically 24 bits), which is much better
than having to manage and incrementally add all the separte module hashes

...but for now using this is incompatible with gpl, so disable that

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18786>
src/gallium/drivers/zink/zink_compiler.c
src/gallium/drivers/zink/zink_context.c
src/gallium/drivers/zink/zink_program.c
src/gallium/drivers/zink/zink_program.h
src/gallium/drivers/zink/zink_screen.c
src/gallium/drivers/zink/zink_shader_keys.h
src/gallium/drivers/zink/zink_state.c
src/gallium/drivers/zink/zink_types.h