mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-23 02:05:33 +07:00
Move import_dmabuf to backends
This commit is contained in:
@@ -2,6 +2,7 @@ use std::collections::HashMap;
|
|||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use smithay::backend::allocator::dmabuf::Dmabuf;
|
||||||
use smithay::backend::renderer::gles::GlesRenderer;
|
use smithay::backend::renderer::gles::GlesRenderer;
|
||||||
use smithay::output::Output;
|
use smithay::output::Output;
|
||||||
|
|
||||||
@@ -93,6 +94,13 @@ impl Backend {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn import_dmabuf(&mut self, dmabuf: &Dmabuf) -> Result<(), ()> {
|
||||||
|
match self {
|
||||||
|
Backend::Tty(tty) => tty.import_dmabuf(dmabuf),
|
||||||
|
Backend::Winit(winit) => winit.import_dmabuf(dmabuf),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg_attr(not(feature = "dbus"), allow(unused))]
|
#[cfg_attr(not(feature = "dbus"), allow(unused))]
|
||||||
pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
|
pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
|
||||||
match self {
|
match self {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ use std::time::Duration;
|
|||||||
|
|
||||||
use anyhow::{anyhow, Context};
|
use anyhow::{anyhow, Context};
|
||||||
use libc::dev_t;
|
use libc::dev_t;
|
||||||
|
use smithay::backend::allocator::dmabuf::Dmabuf;
|
||||||
use smithay::backend::allocator::gbm::{GbmAllocator, GbmBufferFlags, GbmDevice};
|
use smithay::backend::allocator::gbm::{GbmAllocator, GbmBufferFlags, GbmDevice};
|
||||||
use smithay::backend::allocator::Fourcc;
|
use smithay::backend::allocator::Fourcc;
|
||||||
use smithay::backend::drm::compositor::{DrmCompositor, PrimaryPlaneElement};
|
use smithay::backend::drm::compositor::{DrmCompositor, PrimaryPlaneElement};
|
||||||
@@ -974,6 +975,17 @@ impl Tty {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn import_dmabuf(&mut self, dmabuf: &Dmabuf) -> Result<(), ()> {
|
||||||
|
let device = self.output_device.as_mut().ok_or(())?;
|
||||||
|
match device.gles.import_dmabuf(dmabuf, None) {
|
||||||
|
Ok(_texture) => Ok(()),
|
||||||
|
Err(err) => {
|
||||||
|
debug!("error importing dmabuf: {err:?}");
|
||||||
|
Err(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
|
pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
|
||||||
self.connectors.clone()
|
self.connectors.clone()
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-1
@@ -5,9 +5,10 @@ use std::rc::Rc;
|
|||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use smithay::backend::allocator::dmabuf::Dmabuf;
|
||||||
use smithay::backend::renderer::damage::OutputDamageTracker;
|
use smithay::backend::renderer::damage::OutputDamageTracker;
|
||||||
use smithay::backend::renderer::gles::GlesRenderer;
|
use smithay::backend::renderer::gles::GlesRenderer;
|
||||||
use smithay::backend::renderer::{DebugFlags, ImportEgl, Renderer};
|
use smithay::backend::renderer::{DebugFlags, ImportDma, ImportEgl, Renderer};
|
||||||
use smithay::backend::winit::{self, WinitEvent, WinitGraphicsBackend};
|
use smithay::backend::winit::{self, WinitEvent, WinitGraphicsBackend};
|
||||||
use smithay::output::{Mode, Output, PhysicalProperties, Scale, Subpixel};
|
use smithay::output::{Mode, Output, PhysicalProperties, Scale, Subpixel};
|
||||||
use smithay::reexports::calloop::LoopHandle;
|
use smithay::reexports::calloop::LoopHandle;
|
||||||
@@ -199,6 +200,16 @@ impl Winit {
|
|||||||
renderer.set_debug_flags(renderer.debug_flags() ^ DebugFlags::TINT);
|
renderer.set_debug_flags(renderer.debug_flags() ^ DebugFlags::TINT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn import_dmabuf(&mut self, dmabuf: &Dmabuf) -> Result<(), ()> {
|
||||||
|
match self.backend.renderer().import_dmabuf(dmabuf, None) {
|
||||||
|
Ok(_texture) => Ok(()),
|
||||||
|
Err(err) => {
|
||||||
|
debug!("error importing dmabuf: {err:?}");
|
||||||
|
Err(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
|
pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
|
||||||
self.connectors.clone()
|
self.connectors.clone()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-10
@@ -9,7 +9,6 @@ use std::sync::Arc;
|
|||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
||||||
use smithay::backend::allocator::dmabuf::Dmabuf;
|
use smithay::backend::allocator::dmabuf::Dmabuf;
|
||||||
use smithay::backend::renderer::ImportDma;
|
|
||||||
use smithay::desktop::{PopupKind, PopupManager};
|
use smithay::desktop::{PopupKind, PopupManager};
|
||||||
use smithay::input::pointer::{CursorIcon, CursorImageStatus, PointerHandle};
|
use smithay::input::pointer::{CursorIcon, CursorImageStatus, PointerHandle};
|
||||||
use smithay::input::{Seat, SeatHandler, SeatState};
|
use smithay::input::{Seat, SeatHandler, SeatState};
|
||||||
@@ -202,17 +201,11 @@ impl DmabufHandler for State {
|
|||||||
dmabuf: Dmabuf,
|
dmabuf: Dmabuf,
|
||||||
notifier: ImportNotifier,
|
notifier: ImportNotifier,
|
||||||
) {
|
) {
|
||||||
let Some(renderer) = self.backend.renderer() else {
|
match self.backend.import_dmabuf(&dmabuf) {
|
||||||
notifier.failed();
|
Ok(_) => {
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
match renderer.import_dmabuf(&dmabuf, None) {
|
|
||||||
Ok(_texture) => {
|
|
||||||
let _ = notifier.successful::<State>();
|
let _ = notifier.successful::<State>();
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(_) => {
|
||||||
debug!("error importing dmabuf: {err:?}");
|
|
||||||
notifier.failed();
|
notifier.failed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user