Skip to content

iris: Create smaller program keys without legacy features

Kenneth Graunke requested to merge kwg/mesa:iris-keys into master

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:

  • VS: 328 bytes -> 8 bytes
  • TCS: 312 bytes -> 24 bytes
  • TES: 304 bytes -> 24 bytes
  • GS: 284 bytes -> 8 bytes
  • FS: 304 bytes -> 16 bytes
  • CS: 280 bytes -> 4 bytes

Scores for the Piglit drawoverhead microbenchmark case with a shader program change improve by roughly 30%.

Edited by Kenneth Graunke

Merge request reports