pub struct Buffer {
pub device: Device,
pub handle: Buffer,
pub info: BufferInfo,
/* private fields */
}Expand description
Smart pointer handle to a buffer object.
Also contains information about the object.
let info = BufferInfo::device_mem(1_024, vk::BufferUsageFlags::STORAGE_BUFFER);
let my_buf = Buffer::create(&device, info)?;
assert_eq!(my_buf.info, info);
assert_ne!(my_buf.handle, vk::Buffer::null());Fields§
§device: DeviceThe device which owns this buffer resource.
Note: This field is read-only.
handle: BufferThe native Vulkan resource handle of this buffer.
Note: This field is read-only.
info: BufferInfoInformation used to create this resource.
Note: This field is read-only.
Implementations§
Source§impl Buffer
impl Buffer
Sourcepub fn create(
device: &Device,
info: impl Into<BufferInfo>,
) -> Result<Self, DriverError>
pub fn create( device: &Device, info: impl Into<BufferInfo>, ) -> Result<Self, DriverError>
Creates a new buffer on the given device.
§Examples
Basic usage:
const SIZE: vk::DeviceSize = 1024;
let info = BufferInfo::host_mem(SIZE, vk::BufferUsageFlags::UNIFORM_BUFFER);
let buf = Buffer::create(&device, info)?;
assert_ne!(buf.handle, vk::Buffer::null());
assert_eq!(buf.info.size, SIZE);Sourcepub fn create_from_slice(
device: &Device,
usage: BufferUsageFlags,
data: &[u8],
) -> Result<Self, DriverError>
pub fn create_from_slice( device: &Device, usage: BufferUsageFlags, data: &[u8], ) -> Result<Self, DriverError>
Creates a new mappable buffer on the given device and fills it with the data in slice.
§Examples
Basic usage:
const DATA: [u8; 4] = [0xfe, 0xed, 0xbe, 0xef];
let buf = Buffer::create_from_slice(&device, vk::BufferUsageFlags::UNIFORM_BUFFER, &DATA)?;
assert_ne!(buf.handle, vk::Buffer::null());
assert_eq!(buf.info.size, 4);
assert_eq!(Buffer::mapped_slice(&buf), &DATA);Sourcepub fn copy_from_slice(&mut self, offset: DeviceSize, data: &[u8])
pub fn copy_from_slice(&mut self, offset: DeviceSize, data: &[u8])
Updates a mappable buffer starting at offset with the data in slice.
§Panics
Panics if the buffer was not created with host-writable memory.
§Examples
Basic usage:
const DATA: [u8; 4] = [0xde, 0xad, 0xc0, 0xde];
Buffer::copy_from_slice(&mut my_buf, 0, &DATA);
assert_eq!(Buffer::mapped_slice(&my_buf), &DATA);Sourcepub fn device_address(&self) -> DeviceAddress
pub fn device_address(&self) -> DeviceAddress
Sourcepub fn mapped_slice(&self) -> &[u8] ⓘ
pub fn mapped_slice(&self) -> &[u8] ⓘ
Sourcepub fn mapped_slice_mut(&mut self) -> &mut [u8] ⓘ
pub fn mapped_slice_mut(&mut self) -> &mut [u8] ⓘ
Sourcepub fn set_debug_name(&self, name: impl AsRef<str>)
pub fn set_debug_name(&self, name: impl AsRef<str>)
Sets the debugging name assigned to this buffer.
Sourcepub fn sync_info(&self) -> BufferSyncInfo
pub fn sync_info(&self) -> BufferSyncInfo
Returns compact synchronization information for the buffer’s current access ranges.
Sourcepub fn with_debug_name(self, name: impl AsRef<str>) -> Self
pub fn with_debug_name(self, name: impl AsRef<str>) -> Self
Sets the debugging name assigned to this buffer.