Struct EGLDisplay

Source
pub struct EGLDisplay { /* private fields */ }
Available on crate feature backend_egl only.
Expand description

EGLDisplay represents an initialised EGL environment

Implementations§

Source§

impl EGLDisplay

Source

pub unsafe fn new<N>(native: N) -> Result<EGLDisplay, Error>
where N: EGLNativeDisplay + 'static,

Create a new EGLDisplay from a given EGLNativeDisplay.

§Safety

smithay internally tracks EGLDisplay instances as calls with the same parameters to eglGetPlatformDisplay will return references to the same underlying display.

You don’t have to worry about this, when using just smithay, but if other code calls eglGetPlatformDisplay it is possible to close the resulting EGLDisplay via eglTerminate without invalidating smithay’s instances.

If you are using other code creating EGLDisplays, don’t use this method, but use the external code to create the display and use EGLDisplay::from_raw to make it usable in smithay. This way eglTerminate will be skipped and you can clean up the display externally.

Source

pub unsafe fn from_raw( display: *const c_void, config_id: *const c_void, ) -> Result<EGLDisplay, Error>

Create a new EGLDisplay from an already initialized EGLDisplay and EGLConfig handle

§Safety
  • The display must be created from the system default EGL library (dlopen("libEGL.so"))
  • The display and config must be valid for the lifetime of the returned display and any handles created by this display (using EGLDisplay::get_display_handle)
  • smithay can’t track the parameters used to create this display, which may cause two Displays to point to the same underlying instance. For this reason displays created using this method will not call eglTerminate on destruction. You will have to cleanup manually.
Source

pub fn choose_config( &self, attributes: GlAttributes, reqs: PixelFormatRequirements, ) -> Result<(PixelFormat, EGLConfig), Error>

Finds a compatible EGLConfig for a given set of requirements

Source

pub fn get_display_handle(&self) -> Arc<EGLDisplayHandle>

Get a handle to the underlying raw EGLDisplay handle

Source

pub fn get_egl_version(&self) -> (i32, i32)

Returns the runtime egl version of this display

Source

pub fn extensions(&self) -> &[String]

Returns the supported extensions of this display

Source

pub fn dmabuf_render_formats(&self) -> &FormatSet

Returns a list of formats for dmabufs that can be rendered to.

Source

pub fn dmabuf_texture_formats(&self) -> &FormatSet

Returns a list of formats for dmabufs that can be used as textures.

Source

pub fn supports_damage(&self) -> bool

Returns when the display supports extensions required for smithays damage tracking helpers.

Source

pub fn create_dmabuf_from_image( &self, image: EGLImage, size: Size<i32, BufferCoords>, y_inverted: bool, ) -> Result<Dmabuf, Error>

Exports an EGLImage as a Dmabuf

Source

pub fn create_image_from_dmabuf( &self, dmabuf: &Dmabuf, ) -> Result<EGLImage, Error>

Imports a Dmabuf as an EGLImage

Source

pub fn bind_wl_display( &self, display: &DisplayHandle, ) -> Result<EGLBufferReader, Error>

Available on crate features use_system_lib and wayland_frontend only.

Binds this EGL display to the given Wayland display.

This will allow clients to utilize EGL to create hardware-accelerated surfaces. The server will need to be able to handle EGL-WlBuffers.

§Errors

This might return EglExtensionNotSupported if binding is not supported by the EGL implementation.

This might return OtherEGLDisplayAlreadyBound if called for the same DisplayHandle multiple times, as only one egl display may be bound at any given time.

Trait Implementations§

Source§

impl Clone for EGLDisplay

Source§

fn clone(&self) -> EGLDisplay

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EGLDisplay

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more