feat: screen_render_down
This commit is contained in:
@@ -260,6 +260,9 @@ pub struct GeneralConfig {
|
|||||||
|
|
||||||
#[serde(default = "def_max_height")]
|
#[serde(default = "def_max_height")]
|
||||||
pub screen_max_height: u16,
|
pub screen_max_height: u16,
|
||||||
|
|
||||||
|
#[serde(default = "def_false")]
|
||||||
|
pub screen_render_down: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl GeneralConfig {
|
impl GeneralConfig {
|
||||||
|
|||||||
@@ -471,9 +471,22 @@ impl OverlayRenderer for ScreenRenderer {
|
|||||||
});
|
});
|
||||||
match app.graphics.dmabuf_texture(frame) {
|
match app.graphics.dmabuf_texture(frame) {
|
||||||
Ok(new) => {
|
Ok(new) => {
|
||||||
let view = ImageView::new_default(new.clone())?;
|
let pipeline = match self.pipeline {
|
||||||
|
Some(ref mut p) => Some(p),
|
||||||
self.last_view = Some(view);
|
None if app.session.config.screen_render_down => {
|
||||||
|
let pipeline = ScreenPipeline::new(&self.extent.unwrap(), app)?; // safe
|
||||||
|
self.last_view = Some(pipeline.view.clone());
|
||||||
|
self.pipeline = Some(pipeline);
|
||||||
|
self.pipeline.as_mut()
|
||||||
|
}
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
if let Some(pipeline) = pipeline {
|
||||||
|
pipeline.render(new.clone(), None, app)?;
|
||||||
|
} else {
|
||||||
|
let view = ImageView::new_default(new.clone())?;
|
||||||
|
self.last_view = Some(view);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
log::error!(
|
log::error!(
|
||||||
|
|||||||
Reference in New Issue
Block a user