Skip to main content

GpuVm

Struct GpuVm 

Source
pub struct GpuVm<T: DriverGpuVm> { /* private fields */ }
Expand description

A DRM GPU VA manager.

This object is refcounted, but the locations of mapped ranges may only be accessed or changed via the special unique handle UniqueRefGpuVm.

§Invariants

  • Stored in an allocation managed by the refcount in self.vm.
  • Access to data and the gpuvm interval tree is controlled via the UniqueRefGpuVm type.
  • Does not contain any sparse GpuVa<T> instances.

Implementations§

Source§

impl<T: DriverGpuVm> GpuVm<T>

Source

pub fn project<'__pin>( self: Pin<&'__pin mut Self>, ) -> GpuVmProjection<'__pin, T>

Pin-projects all fields of Self.

These fields are structurally pinned:

  • vm

These fields are not structurally pinned:

  • data
Source§

impl<T: DriverGpuVm> GpuVm<T>

Source

pub fn new<E, Ctx: DeviceContext>( name: &'static CStr, dev: &Device<T::Driver, Ctx>, r_obj: &T::Object, range: Range<u64>, reserve_range: Range<u64>, data: T, ) -> Result<UniqueRefGpuVm<T>, E>

Creates a GPUVM instance.

Source

pub unsafe fn from_raw<'a>(ptr: *mut drm_gpuvm) -> &'a Self

Access this GpuVm from a raw pointer.

§Safety

The pointer must reference the struct drm_gpuvm in a valid GpuVm<T> that remains valid for at least 'a.

Source

pub fn as_raw(&self) -> *mut drm_gpuvm

Returns a raw pointer to the embedded struct drm_gpuvm.

Source

pub fn va_start(&self) -> u64

The start of the VA space.

Source

pub fn va_length(&self) -> u64

The length of the GPU’s virtual address space.

Source

pub fn va_range(&self) -> Range<u64>

Returns the range of the GPU virtual address space.

Source

pub fn obtain( &self, obj: &T::Object, data: impl PinInit<T::VmBoData>, ) -> Result<ARef<GpuVmBo<T>>, AllocError>

Get or create the GpuVmBo for this gem object.

Source

pub fn deferred_cleanup(&self)

Clean up buffer objects that are no longer used.

Source

pub fn is_extobj(&self, obj: &T::Object) -> bool

Check if this GEM object is an external object for this GPUVM.

Trait Implementations§

Source§

impl<T: DriverGpuVm> AlwaysRefCounted for GpuVm<T>

Source§

fn inc_ref(&self)

Increments the reference count on the object.
Source§

unsafe fn dec_ref(obj: NonNull<Self>)

Decrements the reference count on the object. Read more
Source§

impl<T: DriverGpuVm> Eq for GpuVm<T>

Source§

impl<T: DriverGpuVm> HasPinData for GpuVm<T>

Source§

type PinData = __ThePinData<T>

Source§

unsafe fn __pin_data() -> Self::PinData

Source§

impl<T: DriverGpuVm> PartialEq for GpuVm<T>

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl<T: DriverGpuVm> Send for GpuVm<T>

Source§

impl<T: DriverGpuVm> Sync for GpuVm<T>

Auto Trait Implementations§

§

impl<T> !Freeze for GpuVm<T>

§

impl<T> !RefUnwindSafe for GpuVm<T>

§

impl<T> !UnsafeUnpin for GpuVm<T>

§

impl<T> UnwindSafe for GpuVm<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Init<T> for T

Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> KnownSize for T

Source§

const MIN_SIZE: usize = const MIN_SIZE: usize = size_of::<T>();

Minimum size of this type known at compile-time.
Source§

const MIN_ALIGN: Alignment = const MIN_ALIGN: Alignment = Alignment::of::<T>();

Minimum alignment of this type known at compile-time.
Source§

fn size(_: *const T) -> usize

Get the size of an object of this type in bytes, with the metadata of the given pointer.
Source§

impl<T> PinInit<T> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), Infallible>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U, const N: u32> TryIntoBounded<T, N> for U
where T: Integer, U: TryInto<T>,

Source§

fn try_into_bounded(self) -> Option<Bounded<T, N>>

Attempts to convert self into a Bounded using N bits. Read more