What is Metal's “RG4B10Float” format (`MTLPixelFormatRG4B10Float` / `MTLPixelFormat.rg4b10Float`)?

In the Metal Feature Set Tables (Metal 3 v3, June 6, 2022), the GPU texture capabilities by pixel format section lists under Packed 32-bit pixel formats a “RG4B10Float” format.

What the heck is RG4B10Float? A quick Google search reveals no results other than the Metal Feature Set Tables. There's no results in Apple's code Documentation. Metal.framework's MTLPixelFormat.h also has no mentions of it.

The obvious answer: It's a typo. But the question is, a typo for what? I'm in the middle of picking which packed texture formats to use for Metal project, and would love to know if there's more multi-platform-friendly format options than I'm currently aware of.

Also, my other intent— assuming it is a typo and not some new undocumented type, how do we gain the notice of the Metal documentation people?

Replies

I have effectively not found in doc.

But, looking at https://developer.apple.com/documentation/metal/mtlpixelformat, we see in Packed 32-Bit Pixel Formats:

  • RGB9E5Float is (case rgb9e5Float)

Packed 32-bit format with floating-point color components: 9 bits each for RGB and 5 bits for an exponent shared by RGB, packed into 32 bits.

  • case rg11b10Float

32-bit format with floating-point color components, 11 bits each for red and green and 10 bits for blue.

  • so, it may be that, RG4B10Float is in fact RG11B10Float.

You should file a bug report with this hypothesis.

  • Note: RG4B10Float would be 4*2 + 10 = 18 bits, not 32 bits.

  • Exactly my thinking. All formats are going to multiples of 8 bits; an 18 bit format is likely a typo.

Add a Comment

Nvidia's Tensor float is 1 + 7 + 10. Might be some funky AI float. There's already bfloat.