how to read metal feature set table?

The Metal feature set tables list features for each GPU family. I assumed that if a feature is present in a family, then it must be supported for the GPUs in the family, otherwise what's the point of specifying families? But I see exceptions to this assumption, so I'm confused how to make sense of this table.

For example, I assumed that features listed for the Metal 3 family must be supported on all GPUs in the Metal 3 family. The Metal 3 family includes A13, which is the Apple 6 family. But I see features available for Metal 3 not available for Apple 6. (Could it be that a feature available for A13 is not available for Apple 6?) For example, see "SIMD-scoped reduction operations."

Accepted Reply

So "Metal 3" is mostly marketing terminology for a set of the latest Metal features. In the case you're describing you should just use the Apple n or Mac2 families to determine if a feature is supported.

  • We actually discovered that A13, which is an Apple6 device, should not be listed as supporting Metal 3 in the "Metal 3 GPUs" table.

    Using MTLGPUFamilyMetal3 with supportsFamily is mostly useful on macOS, because MTLGPUFamilyMac2 is insufficient for checking for some features supported on macOS on device with AMD or Intel Graphics GPUs.

  • That table shows the GPUs for Metal 3, but is there some similar listing somewhere for the common families and Mac2? I'm interested to understand overlap. For example, indirect compute command buffers exist for Common2, Common3, and Metal 3, but not Mac2 so I'm wondering how it's disjoint (and whether or not to design around indirect command buffers as a result).

  • Does this mean 'Metal3' can indeed be relied upon (with that correction)? For example, could I target Metal3 features rather than Apple7, Apple8, Mac2 features? and which GPU's are in the latter but not the former -- there must be some, as some features for Metal3 are not for Mac2.

Replies

So "Metal 3" is mostly marketing terminology for a set of the latest Metal features. In the case you're describing you should just use the Apple n or Mac2 families to determine if a feature is supported.

  • We actually discovered that A13, which is an Apple6 device, should not be listed as supporting Metal 3 in the "Metal 3 GPUs" table.

    Using MTLGPUFamilyMetal3 with supportsFamily is mostly useful on macOS, because MTLGPUFamilyMac2 is insufficient for checking for some features supported on macOS on device with AMD or Intel Graphics GPUs.

  • That table shows the GPUs for Metal 3, but is there some similar listing somewhere for the common families and Mac2? I'm interested to understand overlap. For example, indirect compute command buffers exist for Common2, Common3, and Metal 3, but not Mac2 so I'm wondering how it's disjoint (and whether or not to design around indirect command buffers as a result).

  • Does this mean 'Metal3' can indeed be relied upon (with that correction)? For example, could I target Metal3 features rather than Apple7, Apple8, Mac2 features? and which GPU's are in the latter but not the former -- there must be some, as some features for Metal3 are not for Mac2.

Does this mean 'Metal3' can indeed be relied upon (with that correction)? For example, could I target Metal3 features rather than Apple7, Apple8, Mac2 features? which GPU's supporting Metal3 don't support Apple7, Apple8, and Mac2? There must be some, as some Metal3 features don't exist for Mac2 (eg indirect compute commands).

  • I mean which GPU's belong to Metal3 that don't belong to Apple7, Apple8, and Mac2?

Add a Comment