pub trait DriverGpuVm:
Sized
+ Send
+ Sync {
type Driver: Driver;
type Object: AllocImpl<Driver = Self::Driver> + Send + Sync;
type VaData: Send;
type VmBoData: Send + Sync;
type SmContext<'ctx>
where Self: 'ctx;
// Required methods
fn sm_step_map<'op, 'ctx>(
&mut self,
op: OpMap<'op, Self>,
context: &mut Self::SmContext<'ctx>,
) -> Result<OpMapped<'op, Self>, Error>;
fn sm_step_unmap<'op, 'ctx>(
&mut self,
op: OpUnmap<'op, Self>,
context: &mut Self::SmContext<'ctx>,
) -> Result<OpUnmapped<'op, Self>, Error>;
fn sm_step_remap<'op, 'ctx>(
&mut self,
op: OpRemap<'op, Self>,
context: &mut Self::SmContext<'ctx>,
) -> Result<OpRemapped<'op, Self>, Error>;
}Expand description
The manager for a GPUVM.
Required Associated Types§
Sourcetype Object: AllocImpl<Driver = Self::Driver> + Send + Sync
type Object: AllocImpl<Driver = Self::Driver> + Send + Sync
The kind of GEM object stored in this GPUVM.
Sourcetype VaData: Send
type VaData: Send
Data stored with each struct drm_gpuva.
Only Send is required: the data has a single owner at all times, moving
between threads by value (handed back as a GpuVaRemoved) but never
accessed by two threads concurrently.
Sourcetype VmBoData: Send + Sync
type VmBoData: Send + Sync
Data stored with each struct drm_gpuvm_bo.
Required Methods§
Sourcefn sm_step_map<'op, 'ctx>(
&mut self,
op: OpMap<'op, Self>,
context: &mut Self::SmContext<'ctx>,
) -> Result<OpMapped<'op, Self>, Error>
fn sm_step_map<'op, 'ctx>( &mut self, op: OpMap<'op, Self>, context: &mut Self::SmContext<'ctx>, ) -> Result<OpMapped<'op, Self>, Error>
Indicates that a new mapping should be created.
Sourcefn sm_step_unmap<'op, 'ctx>(
&mut self,
op: OpUnmap<'op, Self>,
context: &mut Self::SmContext<'ctx>,
) -> Result<OpUnmapped<'op, Self>, Error>
fn sm_step_unmap<'op, 'ctx>( &mut self, op: OpUnmap<'op, Self>, context: &mut Self::SmContext<'ctx>, ) -> Result<OpUnmapped<'op, Self>, Error>
Indicates that an existing mapping should be removed.
Sourcefn sm_step_remap<'op, 'ctx>(
&mut self,
op: OpRemap<'op, Self>,
context: &mut Self::SmContext<'ctx>,
) -> Result<OpRemapped<'op, Self>, Error>
fn sm_step_remap<'op, 'ctx>( &mut self, op: OpRemap<'op, Self>, context: &mut Self::SmContext<'ctx>, ) -> Result<OpRemapped<'op, Self>, Error>
Indicates that an existing mapping should be split up.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".