perf(capture): add SceneLens GPU streams and retained scene reuse
Use persistent privacy-filtered capture targets and client-owned GPU buffers with fence completion, backpressure, negotiated frame rates and shared-memory fallback. Invalidate output views on scene changes while preserving inactive-window callbacks and capture revocation. Include OBS memory-mask negotiation and native pixel, transport and recording regressions.
This commit is contained in:
1 parent
f49f62583d
commit
533cd74c94
40 files changed
+4704
-704
No files matched your search
@@ -458,8 +458,9 @@ pub struct Ferese {
|
||||
pub(crate) render: crate::render::RenderResources,
|
||||
pub(crate) capture_render: crate::render::RenderResources,
|
||||
pub(crate) capture_last_used: Option<Instant>,
|
||||
pub(crate) nested_capture_texture: Option<smithay::backend::renderer::gles::GlesTexture>,
|
||||
pub(crate) nested_capture_texture: [Option<crate::backends::direct::capture::CaptureTarget>; 2],
|
||||
pub(crate) capture_epoch: u64,
|
||||
pub(crate) image_capture: crate::handlers::image_capture::CaptureSessions,
|
||||
capture_protected_windows: HashSet<WindowId>,
|
||||
capture_protected_cursor: Option<WlSurface>,
|
||||
pub(crate) daemons: Option<std::rc::Rc<std::cell::RefCell<crate::daemon::Runner>>>,
|
||||
@@ -733,6 +734,7 @@ impl Ferese {
|
||||
|
||||
let mut activities = crate::activities::Engine::default();
|
||||
activities.configure(&config.activity_settings, config.activity_matcher.clone());
|
||||
let image_capture = crate::handlers::image_capture::CaptureSessions::new(&display_handle);
|
||||
let mut state = Self {
|
||||
session_lock_state,
|
||||
session_lock: crate::session_lock::Lock::default(),
|
||||
@@ -778,8 +780,9 @@ impl Ferese {
|
||||
render: Default::default(),
|
||||
capture_render: Default::default(),
|
||||
capture_last_used: None,
|
||||
nested_capture_texture: None,
|
||||
nested_capture_texture: Default::default(),
|
||||
capture_epoch: 0,
|
||||
image_capture,
|
||||
capture_protected_windows: HashSet::new(),
|
||||
capture_protected_cursor: None,
|
||||
display_presentation: Default::default(),
|
||||
|
||||
Reference in new issue
Block a user