isl: Remove 512B pitch requirement for non-displayable CCS
CCS on gfx12 was originally implemented based on the understanding that the pitch always had to be 512B aligned. Upon further inspection (see HSD 1209978227), this seems to only be a requirement for displayable surfaces.
From Bspec 47709, MCS/CCS Buffers for Render Target(s):
CCS is a linear buffer created for storing meta-data (AUX data) for lossless compression. This buffer related information is mentioned in Render Surface State. CCS buffer's size is based on the padded main surface (after following Halign and Valign requirements mentioned in the Render Surface State). CCS_Buffer_Size = Padded_Main_Surface_Size/256
From Bspec 49252, Render Decompression:
Compressed displayable surfaces must be 16KB aligned and have pitches padded to multiple of 4 tiles.
By restricting the alignment requirement to displayable surfaces, we can reduce memory consumption. We've had a couple of use-cases where it has mattered: ASTC transcoding, #10284 (closed), and #4510.
In order to remove this alignment requirement, we can do the following:
-
Ignore the aux surface when determining the fast clear rectangle -
Drop extra_aux
from iris (!27835 (e1443074)) -
Update ISL to restrict the alignment to displayable surfaces -
Make iris and anv pass the display usage flag as needed
I have most of this done in a branch.