Skip to content

Buffer Device Address and Sparse Buffer - #142

Open
areidmeyer wants to merge 38 commits into
mainfrom
areidmeyer/buffer_device_address
Open

Buffer Device Address and Sparse Buffer#142
areidmeyer wants to merge 38 commits into
mainfrom
areidmeyer/buffer_device_address

Conversation

@areidmeyer

Copy link
Copy Markdown
Collaborator

No description provided.

Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
@areidmeyer
areidmeyer marked this pull request as ready for review December 8, 2025 15:47
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
areidmeyer and others added 4 commits December 8, 2025 22:28
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
Signed-off-by: Andrew Reidmeyer <areidmeyer@nvidia.com>
…ice_address

Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
@phapalova
phapalova requested a review from Copilot December 11, 2025 09:32

Copilot AI left a comment

Copy link
Copy Markdown

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_count in the function call is misleading. It represents the buffer capacity, not the maximum intersection count. Consider renaming to buffer_capacity or buffer_size_in_elements for clarity.
// Copyright Contributors to the OpenVDB Project

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread vulkan/BufferVulkan.cpp
Comment thread vulkan/BufferVulkan.cpp
…f it fixes tests on ARM lavapipe

Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
…ice_address

Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
…ice_address

Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
@phapalova

Copy link
Copy Markdown
Collaborator

/run-all

@github-actions

Copy link
Copy Markdown

🚀 Triggered workflows on branch areidmeyer/buffer_device_address

build-and-test.yml (run pending)
build-and-test-python.yml (run pending)
codestyle.yml (run pending)

phapalova and others added 3 commits December 11, 2025 20:17
…ice_address

Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
Signed-off-by: Petra Hapalova <phapalova@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants