[Vulkan Ray Tracing] BLAS buffer contents differ with more triangles — what exactly is stored?

Hi,

I’m using Vulkan ray tracing (VK_KHR_acceleration_structure) on an NVIDIA GPU, and building bottom-level acceleration structures (BLAS) with vkCmdBuildAccelerationStructuresKHR.

I’ve noticed the following behavior:

  • When the geometry has only a few triangles (e.g., less than 10), the resulting BLAS buffer (VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR) is almost identical between builds. The only difference is the device address of the BLAS.
  • However, when the triangle count increases to a few hundred, the buffer contents begin to differ more substantially, even with identical input geometry and build flags.

My questions:

  1. What exactly is stored inside the BLAS buffer?
    • Is it a raw BVH structure? Some hardware-specific format? Or a driver-internal layout?
  2. Is it expected that the buffer content changes between builds, especially when geometry is more complex?
    • Is this due to driver-internal heuristics, multi-threading, or non-deterministic optimizations?

Thanks!