isl: Provide a module to help with aux resolves and other items
Gen12 included many new uses of compression: Stencil + CCS, Media compression, HiZ + CCS, and MCS + CCS. In hopes of preemptively reducing the amount of required code churn for such updates in the future (as well as to reduce complexity), this MR provides a generic interface which manages aux resolves in ISL.
The feature differences between this and what's in iris is:
- Support for media compression. MC behaves differently from many other usages of CCS, so it was useful to implement this support upfront, while designing the interfaces.
- Optimizations for full render target writes. For example, after a full RT write occurs with CCS_E in the PARTIAL_CLEAR state, finish_write() returns COMPRESSED_NO_CLEAR instead of COMPRESSED_CLEAR.
A performance suggestion for main-surface invalidating/replacing writes is given as a comment instead of adding a boolean to prepare_access(). This avoids extra validation and should be simple enough for the caller to handle.
FYI: @jekstrand, @kwg, @sagarghuge, @rantogno