Metal feature detection is very broken
Description
See #8439
Related and for texture formats: #8654
Many (most?) of the feature detection logic in the metal backend is completely incorrect. You usually need to check for a specific metal version, a feature family, or specific versions of different OSes. This is often not checked correctly. For example, I have seen checks that ignore the API version completely. Many checks also assume tvOS versions and iOS versions have the same feature support which isn't true.
Some examples: vertex amplficiation checks calls a function not available everywhere, barycentrics is the same.
Repro steps Look at the feature detection code
Expected vs observed behavior It should be correct
Extra materials None
Platform Metal