andrejnau/FlyCube

Feature request : add DispatchMeshIndirect & DispatchRaysIndirect support

THISISAGOODNAME opened this issue · 6 comments

Or more universal api like dx12 ExecuteIndirect .

:)

I thought about ExecuteIndirect, but unfortunately Vulkan does not have such api. VK_NV_device_generated_commands can be the equivalent of ExecuteIndirect, but it is not a final version yet, for example there is no DispatchRaysIndirect. I prefer to wait for KHR version.

Another limitation is that Vulkan do not provide count version for all indirect calls. It does not allow emulating subset of ExecuteIndirect.

Anyway, thank you for your feature request. I will add DispatchMeshIndirect/DispatchRaysIndirect support.

DirectX 12 and Vulkan have different memory layout for arguments. D3D12_DISPATCH_MESH_ARGUMENTS vs VkDrawMeshTasksIndirectCommandNV and D3D12_DISPATCH_RAYS_DESC vs VkTraceRaysIndirectCommandKHR. It will require arguments patch on the gpu side.
Sorry, I want to postpone this feature request until there is a way to do it without arguments buffer patching.

I created KhronosGroup/Vulkan-Docs#1486 I hope it affects something.

DirectX 12 and Vulkan have different memory layout for arguments. D3D12_DISPATCH_MESH_ARGUMENTS vs VkDrawMeshTasksIndirectCommandNV and D3D12_DISPATCH_RAYS_DESC vs VkTraceRaysIndirectCommandKHR. It will require arguments patch on the gpu side.
Sorry, I want to postpone this feature request until there is a way to do it without arguments buffer patching.

Thank you anyway.