Does someone know how they GPU channels work exactly in Metal?
I implemented a blit command encoder in two different ways and metal system traces showed me that one blit command was sheduled to the GPUs blit channel while the other is running on the gfx channel.
- First Blit Copy: Shared MTLBuffer -> Private MTLBuffer
- Second Blit Copy: CVMetalTexture -> Private MTLTexture
Both blit commands were commited to the queue in seperate command buffers and on seperate threads.
A blit commander for generateMipmaps() on the private MTLTexture from above is also running on the gfx channel and not on the blit channel. Copying parts from one private texture to another region of a destination private texture also runs on the gfx channel.
So only the blit copy from one buffer to another buffer seems to run in the blit channel or is this wrong?