I'm interested in indirect drawing, i.e. preparing and culling draw calls directly on the GPU. It seems like RenderMeshIndirect(https://docs.unity3d.com/ScriptReference/Graphics.RenderMeshIndirect.html) was made for this, but it has some drawbacks In the manual it says to pass in the SV_DrawId semantic for multidraw support. As far as i can tell though, this semantic is not supported. The shader compiler simply doesnt recognise it at all. Surely this must be possible somehow, the entirety of UnityIndirect.cginc relies on this? The need for this, and most of UnityIndirect.cginc, is to properly offset the InstanceID. Without this, the StartInstance property of the IndirectArgs seems to be ignored, but only on DirectX platforms (reported incident IN-41509). In Vulkan the InstanceId offsets correctly, there is no need for any of this there. I'm not sure how i can get multidraw working without this, in a performant way. We could call RenderMeshIndirect once for each draw, and add a property for the draw id. I think thats how its supposed to be done in dx11, but we target dx12 which should be capable of doing this out of the box with ExecuteIndirect. That would allow us to batch many more draw calls. Native plugins were a dead end too, i couldnt figure out how to prepare a managed mesh and material for rendering. tldr; how can we get StartInstance(https://docs.unity3d.com/ScriptReference/GraphicsBuffer.IndirectDrawIndexedArgs-startInstance.html) to work on DirectX?