DrawIndexedIndirectCount functionality under Metal

Hello everybody,

I have a situation here.

I cannot realize vkCmdDrawIndexedIndirectCount functionality by using argument buffers (actually, they are useless and buggy). I tried to reach developer support with those issues, but nobody is answering.

So maybe somebody has an idea of how to execute multiple indirect draw calls based on GPU-generated count?

Moreover, it is impossible to use indirect command buffers for that: "Fragment shader cannot be used with indirect command buffers".

Current issues with indirect command buffers:
  1. Intel UHD Graphics 630 is not rendering all elements from the buffer.

  2. eGPU RX Vega 56 hangs the whole system for 5-6 seconds when command generation is performed by the vertex shader.

  3. "Compiler encountered an internal error" on Intel Iris Plus Graphics.

  4. Apple M1 renders a magenta screen when the generation is performed on compute shader.

  5. Apple M1 renders a magenta screen with a 20% chance of success rendering when the generation is performed on vertex shader.

Thank you!

Apple keeps shipping products like the new AppleTV with an A12 chips, so if that's in your market then you'll need a fallback. They are Tier1 devices that cannot index into or have pointers to Argument Buffers which is a key part of gpu-driven pipeline and ray-tracing. Fortunately M1 and A14 are replacing these old chips on macOS.

DrawIndexedIndirectCount functionality under Metal
 
 
Q