A lot of the brw_*_prog_key fields are for emulating features on legacy hardware that iris doesn't support. In particular, all of the texture swizzle fields take up a lot of space. These dead fields make hashing the shader keys more expensive than it ought to be.
We introduce iris-specific keys with only the information we need, and translate them to brw keys when actually compiling new variants. This way, key comparisons can use the small keys. The size reductions are:
Scores for the Piglit drawoverhead microbenchmark case with a shader program change improve by roughly 30%.