-
Notifications
You must be signed in to change notification settings - Fork 4
Buffer Device Address and Sparse Buffer #142
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
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
Signed-off-by: Andrew Reidmeyer <[email protected]>
…ice_address Signed-off-by: Petra Hapalova <[email protected]>
Signed-off-by: Petra Hapalova <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds support for Vulkan Buffer Device Address (BDA) and sparse buffer binding features to enable more efficient memory management for large GPU buffers.
Key Changes:
- Enables VK_KHR_BUFFER_DEVICE_ADDRESS extension and sparse binding features
- Implements buffer device address retrieval for structured buffers
- Adds sparse buffer support for buffers exceeding 1GB threshold
- Refactors shader code to use device address pointers instead of direct buffer bindings
- Implements chunked upload/readback for large buffers exceeding 1GB
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vulkan/PublicDeviceVulkan.cpp | Registers the new get_buffer_device_address interface function |
| vulkan/LoaderVulkan.h | Adds sparse binding features and buffer device address extension declarations |
| vulkan/DeviceVulkan.h | Updates Buffer struct to support multiple memory handles, sparse bindings, and buffer addresses |
| vulkan/DeviceVulkan.cpp | Enables sparse binding and sparse residency buffer features |
| vulkan/DeviceUtilsVulkan.cpp | Enables VK_KHR_BUFFER_DEVICE_ADDRESS device extension |
| vulkan/ComputePipelineVulkan.cpp | Uncomments warning flag assignment for grid dimension warnings |
| vulkan/BufferVulkan.cpp | Implements sparse buffer creation, binding, and device address retrieval logic |
| raster/shaders/raster2d_common.slang | Adds device address pointer fields and pointer load/store helper functions |
| raster/shaders/gaussian_*.slang | Converts buffer accesses to use device address pointers |
| raster/Raster2D.cpp | Populates buffer device addresses in constants and handles dynamic intersection buffer sizing |
| raster/Raster.h | Adds max_isects_count tracking field |
| raster/ParallelPrimitives.cpp | Updates radix sort to support separate buffer size from actual element count |
| raster/Common.h | Implements chunked buffer upload/readback for buffers exceeding 1GB |
| nanovdb_editor/putil/ParallelPrimitives.h | Adds buffer_key_count parameter to radix sort function signatures |
| nanovdb_editor/putil/Compute.h | Declares get_buffer_device_address interface function |
Comments suppressed due to low confidence (1)
raster/ParallelPrimitives.cpp:1
- The parameter name
max_isects_countin the function call is misleading. It represents the buffer capacity, not the maximum intersection count. Consider renaming tobuffer_capacityorbuffer_size_in_elementsfor clarity.
// Copyright Contributors to the OpenVDB Project
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…f it fixes tests on ARM lavapipe Signed-off-by: Petra Hapalova <[email protected]>
Signed-off-by: Petra Hapalova <[email protected]>
…ice_address Signed-off-by: Petra Hapalova <[email protected]>
…ice_address Signed-off-by: Petra Hapalova <[email protected]>
|
/run-all |
🚀 Triggered workflows on branch
|
…ice_address Signed-off-by: Petra Hapalova <[email protected]>
Signed-off-by: Petra Hapalova <[email protected]>
No description provided.