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
@@ -7,26 +7,17 @@ use smithay::backend::renderer::utils::CommitCounter;
|
||||
|
||||
use super::{
|
||||
AnimatedWindowRenderElement, ConstrainAlign, ConstrainBehavior, ConstrainReference,
|
||||
CropRenderElement, CursorImageStatus, CursorImageSurfaceData, Duration, Ferese,
|
||||
FrameEffectMetrics, GlesRenderer, Layer, LayerSurface, Logical, MaterialSurface,
|
||||
MemoryRenderBufferRenderElement, Output, Physical, Point, PopupManager, Rectangle, Relocate,
|
||||
RelocateRenderElement, RenderElementKind, Renderer, RescaleRenderElement, Resource,
|
||||
RoundedRect, Size, SolidColorRenderElement, Transform, WaylandSurfaceRenderElement,
|
||||
append_material_surface, backdrop, constrain_space_element, corner_program,
|
||||
layer_map_for_output, material_element, overview_strip_elements,
|
||||
render_elements_from_surface_tree, resize_content_behavior, rounded_visual_rect,
|
||||
rounded_window_elements, window_border_element, window_corner_shape, window_shadow_element,
|
||||
window_tint_element, with_states,
|
||||
CropRenderElement, CursorImageStatus, CursorImageSurfaceData, Ferese, FrameEffectMetrics,
|
||||
GlesRenderer, Layer, LayerSurface, Logical, MaterialSurface, MemoryRenderBufferRenderElement,
|
||||
Output, Physical, Point, PopupManager, Rectangle, Relocate, RelocateRenderElement,
|
||||
RenderElementKind, Renderer, RescaleRenderElement, Resource, RoundedRect, Size,
|
||||
SolidColorRenderElement, Transform, WaylandSurfaceRenderElement, append_material_surface,
|
||||
backdrop, constrain_space_element, corner_program, layer_map_for_output, material_element,
|
||||
overview_strip_elements, render_elements_from_surface_tree, resize_content_behavior,
|
||||
rounded_visual_rect, rounded_window_elements, window_border_element, window_corner_shape,
|
||||
window_shadow_element, window_tint_element, with_states,
|
||||
};
|
||||
|
||||
pub(crate) fn animated_window_elements(
|
||||
state: &mut Ferese,
|
||||
renderer: &mut GlesRenderer,
|
||||
output: &Output,
|
||||
) -> Vec<AnimatedWindowRenderElement> {
|
||||
output_elements(state, renderer, output, true)
|
||||
}
|
||||
|
||||
pub(crate) fn frame_effect_metrics(
|
||||
_elements: &[AnimatedWindowRenderElement],
|
||||
_scale: f64,
|
||||
@@ -34,17 +25,6 @@ pub(crate) fn frame_effect_metrics(
|
||||
FrameEffectMetrics
|
||||
}
|
||||
|
||||
pub(crate) fn output_elements(
|
||||
state: &mut Ferese,
|
||||
renderer: &mut GlesRenderer,
|
||||
output: &Output,
|
||||
include_cursor: bool,
|
||||
) -> Vec<AnimatedWindowRenderElement> {
|
||||
let frame = state.sample_frame(output, Duration::ZERO);
|
||||
|
||||
sampled_output_elements(state, renderer, output, include_cursor, &frame)
|
||||
}
|
||||
|
||||
pub(crate) fn sampled_output_elements(
|
||||
state: &mut Ferese,
|
||||
renderer: &mut GlesRenderer,
|
||||
|
||||
Reference in new issue
Block a user