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: Intel UHD Graphics 630 is not rendering all elements from the buffer.
eGPU RX Vega 56 hangs the whole system for 5-6 seconds when command generation is performed by the vertex shader.
"Compiler encountered an internal error" on Intel Iris Plus Graphics.
Apple M1 renders a magenta screen when the generation is performed on compute shader.
Apple M1 renders a magenta screen with a 20% chance of success rendering when the generation is performed on vertex shader.
Thank you!
Post
Replies
Boosts
Views
Activity
Hello,
It looks like my previous question was closed without being resolved.
https://developer.apple.com/forums/thread/668171
There are FPS values from our new benchmark.
Indirect command buffers are not working properly.
So there is no way to emulate multi-draw indirect count
functionality other than a loop of draw indirect commands. As you can see below, the same hardware is working three times slower under Metal because of it. And Apple M1 performance is worse than AMD integrated graphics performance.
We have a buffer with multiple draw commands. How should we render it efficiently under Metal?
AMD Vega 56 eGPU:
Direct3D12: 94.0
Direct3D11: 87.2
Vulkan: 91.1
Metal: 35.8
AMD Ryzen™ 7 4800H:
Direct3D12: 21.1
Direct3D11: 19.4
Vulkan: 20.5
Apple M1:
Metal: 16.9
Thank you