Hello,
According to FB8254449, yes, there is a function to draw indirect primitives, but that command is only executing single draw command. Vulkan and other API (OpenGL, D3D12, D3D11 (via extensions)) are proving more advanced functions to draw multiple commands with CPU and GPU-generated count:
This command is rendering multiple indirect commands, and the number of draw commands is inside GPU-buffer. Unfortunately, there is no such functionality in Metal API:
void vkCmdDrawIndexedIndirectCount(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32t maxDrawCount,
uint32t stride);
There is another request inside FB8254449: is to add an indirect buffer Offset based on GPU-buffer:
void vkCmdDrawIndexedIndirectCountOffset(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
VkBuffer offsetBuffer,
VkDeviceSize offsetBufferOffset,
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32t maxDrawCount,
uint32t stride);
FB8638856: Everything is fine with UHD 630 under Big Sur. The problems are 20 seconds start time with eGPU and inability to use textures with indirect command buffer (except M1).
Thank you!
Topic:
App & System Services
SubTopic:
Hardware
Tags: