Unrelated question incoming ...
Is there a reason why you need to specify the texture type including it's dimension and MSAA state when using argument buffers in Metal ?
Before using the setTexture method, you create an MTLTexture object to encode one of it's parameters. MTLTexture objects can be created with MTLTextureDescriptor but you need to specify the variable MTLTextureType upfront for this, am I correct ? When encoding textures to argument buffers is Metal API somehow relying on this information ? People are actually trying to work around this limitation with Metal ...
Well, duh, if you want to bind (encode) a resource, you have to create the resource first. And to create a resource, you need to know it's size and type. I don't understand why you would call it a limitation, sounds to me like a logical way to design a binding API? Is there any API out there that would allows you to bind a resource that doesn't exist yet?
I don't know the context of the issue you have linked, so I can't really comment on the problems they are having. Sounds to me like this is about mapping binding descriptor semantics between SPIR-V and Metal shading language.
On D3D12, the "texture type" can be unknown and I don't imagine that Vulkan has this limitation as well ?
Forgive my confusion, but how can you create a texture with an "unknown" type? What does it even mean?
Edit: I looked up DXGI_FORMAT_UNKNOWN. It appears to be just a badly chosen name for something like "choose a default format for me". It still chooses a concrete format according to a documentation I have seen.
On D3D12, we specify the layout of our root argument or more commonly known as the root signature and we don't have to provide information about our texture type to this root signature when binding our SRVs.
On Metal, we can create our argument buffer via MTLArgumentDescriptor. Not only do we need to provide information about the texture type to the MTLTexture objects but you have to do this as well for MTLArgumentDescriptor which I believe explains the work around that I showed earlier.
That thread and the TLB topic is complete nonsensical idiotic horseshit. The CPUs (each of them) have 3072pages/48MB of coverage which fully covers the M1 Max SLC optimally. The matter on the GPU side is completely irrelevant and we don't even know how large the structures are there.And related, this excellent Twitter thread:
And a good comment on the problem: