anv/brw: rework compiler uniform/push-constants interface
The current push constant compiler interface requires us to have a uint32_t *param;
array which must be the have an element for each push constant dword offset.
In Anv we have no use for this array, we just leave it with 0s. But this is part of the prog_data
which we serialize in the shader cache.
Since the push constants can be up to 128B right now, that's potentially up to 32B of data stored per shader that is completely useless.
Unfortunately we cannot avoid the allocation at the moment because the compiler might add an additional item for the subgroup_id
.
We should find a better interface at least for Anv such that we can avoid having this array.