use std::ptr::NonNull;
use crate::backend::Backend;
use crate::backend::ops::buffers::BufferBackend;
use super::DriverContext;
pub trait ProvidedBuffers {
fn buffer_group(&self) -> u16;
fn buffer_len(&self) -> usize;
unsafe fn release(&mut self, bid: u16);
unsafe fn buffer_ptr_len(&mut self, len: u32, bid: u16) -> (NonNull<u8>, usize);
}
impl ProvidedBuffers for DriverContext<'_, '_> {
fn buffer_group(&self) -> u16 {
<Backend as BufferBackend>::buffer_group(self.backend_ref())
}
fn buffer_len(&self) -> usize {
<Backend as BufferBackend>::buffer_len(self.backend_ref())
}
unsafe fn release(&mut self, bid: u16) {
unsafe { <Backend as BufferBackend>::release_buffer(self.backend(), bid) };
}
unsafe fn buffer_ptr_len(&mut self, len: u32, bid: u16) -> (NonNull<u8>, usize) {
unsafe { <Backend as BufferBackend>::buffer_ptr_len(self.backend_ref(), len, bid) }
}
}