Remove AlignByteSlice
This commit is contained in:
parent
c559e4d731
commit
18fe1f7916
|
@ -3,45 +3,6 @@ use std::marker::PhantomData;
|
||||||
use std::mem::size_of;
|
use std::mem::size_of;
|
||||||
use vk;
|
use vk;
|
||||||
|
|
||||||
/// AlignByteSlice is the dynamic alternative to `Align`. Sometimes the user wants to
|
|
||||||
/// align slices at runtime. One example would be to align different images in one buffer.
|
|
||||||
/// There is usually no indicates of how big an image is at compile time and `AlignByteSlice`
|
|
||||||
/// will align those image byte slices at runtime.
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub struct AlignByteSlice {
|
|
||||||
ptr: *mut (),
|
|
||||||
alignment: vk::DeviceSize,
|
|
||||||
size: vk::DeviceSize,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl AlignByteSlice {
|
|
||||||
pub fn copy_from_slices(&mut self, slices: &[&[u8]]) {
|
|
||||||
self.ptr as *mut u8;
|
|
||||||
let mut current = 0;
|
|
||||||
for slice in slices {
|
|
||||||
unsafe {
|
|
||||||
assert!(current <= self.size, "");
|
|
||||||
let ptr = (self.ptr as *mut u8).offset(current as isize);
|
|
||||||
let raw_slice = ::std::slice::from_raw_parts_mut(ptr, slice.len());
|
|
||||||
raw_slice.copy_from_slice(slice);
|
|
||||||
current += slice.len() as vk::DeviceSize;
|
|
||||||
let padding = current % self.alignment;
|
|
||||||
current += padding;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl AlignByteSlice {
|
|
||||||
pub unsafe fn new(ptr: *mut (), alignment: vk::DeviceSize, size: vk::DeviceSize) -> Self {
|
|
||||||
AlignByteSlice {
|
|
||||||
ptr,
|
|
||||||
size,
|
|
||||||
alignment,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// `Align` handles dynamic alignment. x86 aligns on 4 byte boundries but GPUs
|
/// `Align` handles dynamic alignment. x86 aligns on 4 byte boundries but GPUs
|
||||||
/// sometimes have different requirements. For example if the user wants to create
|
/// sometimes have different requirements. For example if the user wants to create
|
||||||
/// a Uniform buffer of a Vec3<f32>, `get_buffer_memory_requirements` might return
|
/// a Uniform buffer of a Vec3<f32>, `get_buffer_memory_requirements` might return
|
||||||
|
|
Loading…
Reference in a new issue