Device-local buffer with shader device address (for AS builds / SBT). @ownership Owns the Vulkan buffer and memory; destroyed on release(). 更多...
#include <VulkanRayTracing.h>
Public 成员函数 | |
| DeviceAddressBuffer ()=default | |
| Constructs a DeviceAddressBuffer. | |
| ~DeviceAddressBuffer () | |
| Releases DeviceAddressBuffer resources. | |
| DeviceAddressBuffer (const DeviceAddressBuffer &)=delete | |
| DeviceAddressBuffer & | operator= (const DeviceAddressBuffer &)=delete |
| DeviceAddressBuffer (DeviceAddressBuffer &&o) noexcept | |
| Constructs a DeviceAddressBuffer. | |
| DeviceAddressBuffer & | operator= (DeviceAddressBuffer &&o) noexcept |
| Operator =. | |
| void | release () |
| Release. | |
| void | steal (DeviceAddressBuffer &o) noexcept |
| Steal. | |
| Result< void > | allocate (vkb::Device &dev, vk::DeviceSize bytes, vk::BufferUsageFlags usage) |
| Allocate a buffer usage that includes SHADER_DEVICE_ADDRESS. | |
| Result< void > | upload (vk::CommandPool pool, vk::Queue queue, const void *data, vk::DeviceSize bytes) |
| Upload host bytes via a staging buffer (stalls the queue). | |
Public 属性 | |
| vk::Buffer | buffer {} |
| vk::DeviceMemory | memory {} |
| vk::DeviceSize | size = 0 |
| vk::DeviceAddress | address = 0 |
| vkb::Device * | device = nullptr |
详细描述
Device-local buffer with shader device address (for AS builds / SBT). @ownership Owns the Vulkan buffer and memory; destroyed on release().
在文件 VulkanRayTracing.h 第 28 行定义.
构造及析构函数说明
◆ DeviceAddressBuffer() [1/3]
|
default |
Constructs a DeviceAddressBuffer.
◆ ~DeviceAddressBuffer()
|
inline |
◆ DeviceAddressBuffer() [2/3]
|
delete |
◆ DeviceAddressBuffer() [3/3]
|
inlinenoexcept |
成员函数说明
◆ allocate()
| Result< void > eve::graphics::raytracing::DeviceAddressBuffer::allocate | ( | vkb::Device & | dev, |
| vk::DeviceSize | bytes, | ||
| vk::BufferUsageFlags | usage | ||
| ) |
Allocate a buffer usage that includes SHADER_DEVICE_ADDRESS.
在文件 VulkanRayTracing.cpp 第 77 行定义.
引用了 address, buffer, bytes, device, eve::Diagnostic::error(), eve::Failed, eve::Result< T >::failure(), eve::InvalidArgument, memory, release(), size, eve::Result< T >::success() , 以及 usage.
◆ operator=() [1/2]
|
delete |
◆ operator=() [2/2]
|
inlinenoexcept |
◆ release()
| void eve::graphics::raytracing::DeviceAddressBuffer::release | ( | ) |
Release.
在文件 VulkanRayTracing.cpp 第 53 行定义.
引用了 address, buffer, device, memory , 以及 size.
被这些函数引用 allocate(), eve::graphics::raytracing::VulkanRayTracing::detachDevice(), operator=(), eve::graphics::raytracing::AccelerationStructure::release() , 以及 ~DeviceAddressBuffer().
◆ steal()
|
noexcept |
Steal.
在文件 VulkanRayTracing.cpp 第 64 行定义.
引用了 buffer, device, memory , 以及 size.
被这些函数引用 DeviceAddressBuffer() , 以及 operator=().
◆ upload()
| Result< void > eve::graphics::raytracing::DeviceAddressBuffer::upload | ( | vk::CommandPool | pool, |
| vk::Queue | queue, | ||
| const void * | data, | ||
| vk::DeviceSize | bytes | ||
| ) |
Upload host bytes via a staging buffer (stalls the queue).
在文件 VulkanRayTracing.cpp 第 114 行定义.
引用了 buffer, bytes, device, eve::Diagnostic::error(), eve::Failed, eve::Result< T >::failure(), eve::InvalidArgument, size , 以及 eve::Result< T >::success().
类成员变量说明
◆ address
| vk::DeviceAddress eve::graphics::raytracing::DeviceAddressBuffer::address = 0 |
在文件 VulkanRayTracing.h 第 32 行定义.
被这些函数引用 allocate() , 以及 release().
◆ buffer
| vk::Buffer eve::graphics::raytracing::DeviceAddressBuffer::buffer {} |
在文件 VulkanRayTracing.h 第 29 行定义.
被这些函数引用 allocate(), release() , 以及 upload().
◆ device
| vkb::Device* eve::graphics::raytracing::DeviceAddressBuffer::device = nullptr |
在文件 VulkanRayTracing.h 第 33 行定义.
被这些函数引用 allocate(), release() , 以及 upload().
◆ memory
| vk::DeviceMemory eve::graphics::raytracing::DeviceAddressBuffer::memory {} |
在文件 VulkanRayTracing.h 第 30 行定义.
被这些函数引用 allocate() , 以及 release().
◆ size
| vk::DeviceSize eve::graphics::raytracing::DeviceAddressBuffer::size = 0 |
在文件 VulkanRayTracing.h 第 31 行定义.
被这些函数引用 allocate(), release() , 以及 upload().
该结构体的文档由以下文件生成:
- src/modules/graphics/raytracing/vulkan/VulkanRayTracing.h
- src/modules/graphics/raytracing/vulkan/VulkanRayTracing.cpp