use crate::backend::MkGpuBackend;
pub struct MkStagingBuffer<B: MkGpuBackend> {
handle: B::BufferHandle,
size: usize,
}
impl<B: MkGpuBackend> MkStagingBuffer<B> {
pub(crate) fn new(handle: B::BufferHandle, size: usize) -> Self {
Self { handle, size }
}
pub fn size(&self) -> usize {
self.size
}
pub fn handle(&self) -> &B::BufferHandle {
&self.handle
}
}
#[derive(Debug)]
pub enum StagingError {
DataTooLarge,
NotMapped,
MapFailed,
}
impl std::fmt::Display for StagingError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
StagingError::DataTooLarge => write!(f, "Data too large for staging buffer"),
StagingError::NotMapped => write!(f, "Buffer not mapped"),
StagingError::MapFailed => write!(f, "Failed to map buffer"),
}
}
}
impl std::error::Error for StagingError {}