zink: add 'optimal keys' for shader variants

Mike Blumenkrantz requested to merge zmike/mesa:zink-optimal into main

At this point in time, there are effectively two types of drivers that will be used with zink:

  • optimal drivers that support all the best features
  • the rest of the drivers

To this end, there is a lot of code that exists to handle the second group of drivers which reduces performance for the good drivers. By incrementally splitting this off, good drivers can continue to get improved performance.

This adds "optimal" shader keys, where the entirety of the shader key for an entire gfx pipeline is compressed into a 32bit uint, massively speeding up changing programs: a whopping 20% in the drawoverhead cases.

Merge request reports