-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement indirect draw and dispatch. #118
base: main
Are you sure you want to change the base?
Conversation
…StructuredBuffer`.
… proper instance indexing in D3D.
Blocking for now, as we wait for SM 6.8 support in DXC to release (and preferably ship with Vulkan SDK). Implementing a workaround for instance indexing in DirectX backend would fragment interfaces too much, with the alternative in form of a |
I've merged all upstream changes and did some final tests, however I keep this blocked until a new Vulkan SDK ships with a recent DXC binary supporting Shader Model 6.8. |
Describe the pull request
This PR adds support for indirect draw (both indexed and non-indexed) and dispatch. Buffers can be marked with
BufferUsage::Indirect
to indicate that they store indirect draw commands. New structures (IndirectBatch
,IndirectIndexedBatch
andIndirectDispatch
) have been added, which are not required but recommended to be used to record indirect commands into indirect draw/dispatch buffers, as the command layout is defined by convention.The Indirect sample shows how to use a compute shader to perform GPU culling to write an indirect buffer, which is then executed on the graphics pipeline to draw simple geometries.
Additionally, some improvements have been made to simplify recording of indirect draw buffers:
Buffers now support counter variables (which allows to useAppendStructuredBuffer
and similar descriptor types).Related issues