turnip, freedreno/fdl: Full support for "mutable" format bit on a750+ with swapped formats
The normal tiling (TILE6_3
) does not support swapped formats, so if there was a chance the format would be reinterpreted with a different swap then we had to fall back to linear tiling. However on a750 there is now support for a "mutable" bit which forces the tiling and compression to be standardized for all formats of the same size, and this also includes support for swapped formats (like BGRA8). While we enabled it in the incompatible-UBWC case, we didn't handle swaps. This adds the plumbing to make sure that the swap isn't reset to the identity when the mutable bit is enabled, and then enables the mutable bit for all cases. This means there is no longer a huge performance penalty for MUTABLE_FORMAT_BIT
without a format list, and it will likely be a prerequisite for sparse residency support because apps expect sparse to work with MUTABLE_FORMAT_BIT
(and the image needs to be tiled for that).
The first three commits are bugfixes, the first a generic bugfix for an fdl issue exposed by this and second and third a more speculative bugfix and rework for mutable specifically.