pub struct DmaBufCapabilities { /* private fields */ }Expand description
What a renderer can import as a dma-buf surface.
Enumerated on the consumer’s device — the renderer’s — and handed to producers so they allocate a layout the renderer accepts rather than discovering a refusal at import time. A format absent from this report cannot be imported at all; a modifier absent from its entry cannot be bound for it.
A linear buffer is still checked against the device’s own plane layout when it is imported (a
driver samples only the layout it makes), so DmaBufHandle::LINEAR means “linear is accepted,
with the device’s own offsets and pitches”; a producer gets those from
gpui_interop::GpuDevice::linear_layout.
A driver may list a modifier that implies implicit compression the dma-buf does not carry
(Intel’s Y_TILED_CCS). The report is what the importer will bind, not a promise that the bytes
are uncompressed: a producer allocating under such a modifier must keep the compressed state
valid in the buffer, per DmaBufHandle’s contract.
Implementations§
Source§impl DmaBufCapabilities
impl DmaBufCapabilities
Sourcepub fn new(formats: Vec<DmaBufFormatCapability>) -> Self
pub fn new(formats: Vec<DmaBufFormatCapability>) -> Self
Build the report from the formats the renderer accepts.
Sourcepub fn formats(&self) -> &[DmaBufFormatCapability]
pub fn formats(&self) -> &[DmaBufFormatCapability]
Every format the renderer can import, with its accepted layouts.
Sourcepub fn format(
&self,
format: &SurfaceFormatKind,
) -> Option<&DmaBufFormatCapability>
pub fn format( &self, format: &SurfaceFormatKind, ) -> Option<&DmaBufFormatCapability>
The entry for format, if the renderer can import it.
Sourcepub fn modifiers(&self, format: &SurfaceFormatKind) -> Option<&[u64]>
pub fn modifiers(&self, format: &SurfaceFormatKind) -> Option<&[u64]>
The modifiers accepted for format, if it can be imported.
Sourcepub fn supports(&self, format: &SurfaceFormatKind, modifier: u64) -> bool
pub fn supports(&self, format: &SurfaceFormatKind, modifier: u64) -> bool
Whether the renderer will bind format under modifier.
Trait Implementations§
Source§impl Clone for DmaBufCapabilities
impl Clone for DmaBufCapabilities
Source§impl Debug for DmaBufCapabilities
impl Debug for DmaBufCapabilities
Source§impl Default for DmaBufCapabilities
impl Default for DmaBufCapabilities
impl Eq for DmaBufCapabilities
Source§impl PartialEq for DmaBufCapabilities
impl PartialEq for DmaBufCapabilities
impl StructuralPartialEq for DmaBufCapabilities
Auto Trait Implementations§
impl Freeze for DmaBufCapabilities
impl RefUnwindSafe for DmaBufCapabilities
impl Send for DmaBufCapabilities
impl Sync for DmaBufCapabilities
impl Unpin for DmaBufCapabilities
impl UnsafeUnpin for DmaBufCapabilities
impl UnwindSafe for DmaBufCapabilities
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.