dope_core/driver/
buffers.rs1use std::ptr::NonNull;
2
3use crate::backend::Backend;
4use crate::backend::ops::buffers::BufferBackend;
5
6use super::DriverContext;
7
8pub trait ProvidedBuffers {
9 fn buffer_group(&self) -> u16;
10 fn buffer_len(&self) -> usize;
11 unsafe fn release(&mut self, bid: u16);
14 unsafe fn buffer_ptr_len(&mut self, len: u32, bid: u16) -> (NonNull<u8>, usize);
17}
18
19impl ProvidedBuffers for DriverContext<'_, '_> {
20 fn buffer_group(&self) -> u16 {
21 <Backend as BufferBackend>::buffer_group(self.backend_ref())
22 }
23
24 fn buffer_len(&self) -> usize {
25 <Backend as BufferBackend>::buffer_len(self.backend_ref())
26 }
27
28 unsafe fn release(&mut self, bid: u16) {
29 unsafe { <Backend as BufferBackend>::release_buffer(self.backend(), bid) };
30 }
31
32 unsafe fn buffer_ptr_len(&mut self, len: u32, bid: u16) -> (NonNull<u8>, usize) {
33 unsafe { <Backend as BufferBackend>::buffer_ptr_len(self.backend_ref(), len, bid) }
34 }
35}