Add a new sample VK_KHR_device_address_commands. #1547
Conversation
|
This seems to run just fine for me, but I do get one validation error: |
There was a problem hiding this comment.
Pull request overview
This PR adds a new Vulkan-Samples extension sample showcasing VK_KHR_device_address_commands, demonstrating a GPU-driven rendering path that records bind/fill/update/draw operations using device addresses (instead of VkBuffer handles), along with accompanying documentation and build/docs integration.
Changes:
- Added a new
device_address_commandsextension sample implementation (C++), including runtime loading ofVK_KHR_device_address_commandsentry points and address-range barriers. - Added GLSL + Slang shader implementations for compute-driven animation/culling and indirect drawing.
- Integrated the sample into the extensions README, Antora navigation, and the sample build order list.
Reviewed changes
Copilot reviewed 16 out of 22 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
samples/extensions/device_address_commands/device_address_commands.cpp |
New sample implementation using address-based fill/update/bind/draw + memory-range barriers |
samples/extensions/device_address_commands/device_address_commands.h |
Sample interface + shared constants and push-constant struct definitions |
samples/extensions/device_address_commands/CMakeLists.txt |
Build integration for the new sample and shader compilation inputs |
shaders/device_address_commands/glsl/update_objects.comp |
Compute shader (GLSL) that animates objects, culls, and emits indirect commands |
shaders/device_address_commands/glsl/render.vert |
Vertex shader (GLSL) reading camera/transforms via buffer references in push constants |
shaders/device_address_commands/glsl/render.frag |
Fragment shader (GLSL) outputting per-instance color |
shaders/device_address_commands/slang/update_objects.comp.slang |
Compute shader (Slang) equivalent using pointer-based access |
shaders/device_address_commands/slang/render.vert.slang |
Vertex shader (Slang) equivalent using pointer-based access |
shaders/device_address_commands/slang/render.frag.slang |
Fragment shader (Slang) equivalent |
samples/extensions/device_address_commands/README.adoc |
New tutorial-style documentation for the sample and extension concepts |
samples/extensions/README.adoc |
Adds the new sample to the Extensions samples README list |
samples/CMakeLists.txt |
Adds the sample to the global sample ordering list |
antora/modules/ROOT/nav.adoc |
Adds the new sample docs page to the Antora navigation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
SaschaWillems
left a comment
There was a problem hiding this comment.
Sample is working for me on WIn11 and an nv RTX 4070.
I noticed a few naming/styling related thing in code that should be improved. But nothing functional.
This requires updating Vulkan.
Tested in Ubuntu Linux on NVIDIA.
Description
Please include a summary of the change, new sample or fixed issue. Please also include relevant motivation and context.
Please read the contribution guidelines
Fixes #
General Checklist:
Please ensure the following points are checked:
Note: The Samples CI runs a number of checks including:
If this PR contains framework changes:
batchcommand line argument to make sure all samples still work properlySample Checklist
If your PR contains a new or modified sample, these further checks must be carried out in addition to the General Checklist: