debug_ui: Add option to display active gpu
This commit is contained in:
parent
bc89ff99b4
commit
8e1c1af6a9
5 changed files with 29 additions and 13 deletions
|
|
@ -441,12 +441,8 @@ impl Device {
|
|||
.insert_source(timer, |(dev_id, crtc), _, state| {
|
||||
let backend = state.backend.kms();
|
||||
if let Some(device) = backend.devices.get_mut(&dev_id) {
|
||||
let mut renderer = backend
|
||||
.api
|
||||
.renderer(&backend.primary, &device.render_node)
|
||||
.unwrap();
|
||||
if let Some(surface) = device.surfaces.get_mut(&crtc) {
|
||||
if let Err(err) = surface.render_output(&mut renderer, &mut state.common) {
|
||||
if let Err(err) = surface.render_output(&mut backend.api, &backend.primary, &device.render_node, &mut state.common) {
|
||||
slog_scope::error!("Error rendering: {}", err);
|
||||
// TODO re-schedule?
|
||||
}
|
||||
|
|
@ -478,9 +474,15 @@ impl Device {
|
|||
impl Surface {
|
||||
pub fn render_output(
|
||||
&mut self,
|
||||
renderer: &mut render::GlMultiRenderer<'_>,
|
||||
api: &mut GpuManager<EglGlesBackend>,
|
||||
render_node: &DrmNode,
|
||||
target_node: &DrmNode,
|
||||
state: &mut Common,
|
||||
) -> Result<()> {
|
||||
let mut renderer = api
|
||||
.renderer(render_node, target_node)
|
||||
.unwrap();
|
||||
|
||||
let (buffer, age) = self
|
||||
.surface
|
||||
.next_buffer()
|
||||
|
|
@ -491,7 +493,8 @@ impl Surface {
|
|||
.with_context(|| "Failed to bind buffer")?;
|
||||
|
||||
match render::render_output(
|
||||
renderer,
|
||||
Some(&render_node),
|
||||
&mut renderer,
|
||||
age,
|
||||
state,
|
||||
&self.output,
|
||||
|
|
|
|||
|
|
@ -9,10 +9,13 @@ use crate::{
|
|||
|
||||
use slog::Logger;
|
||||
use smithay::{
|
||||
backend::renderer::{
|
||||
gles2::{Gles2Renderbuffer, Gles2Renderer, Gles2Texture},
|
||||
multigpu::{egl::EglGlesBackend, Error as MultiError, MultiFrame, MultiRenderer},
|
||||
ImportAll, Renderer,
|
||||
backend::{
|
||||
drm::DrmNode,
|
||||
renderer::{
|
||||
gles2::{Gles2Renderbuffer, Gles2Renderer, Gles2Texture},
|
||||
multigpu::{egl::EglGlesBackend, Error as MultiError, MultiFrame, MultiRenderer},
|
||||
ImportAll, Renderer,
|
||||
},
|
||||
},
|
||||
desktop::space::{RenderElement, RenderError, SpaceOutputTuple, SurfaceTree},
|
||||
utils::{Logical, Point, Rectangle},
|
||||
|
|
@ -94,6 +97,7 @@ impl AsGles2Renderer for GlMultiRenderer<'_> {
|
|||
}
|
||||
|
||||
pub fn render_output<R>(
|
||||
_gpu: Option<&DrmNode>,
|
||||
renderer: &mut R,
|
||||
age: u8,
|
||||
state: &mut Common,
|
||||
|
|
@ -122,7 +126,7 @@ where
|
|||
.unwrap_or(Rectangle::from_loc_and_size((0, 0), (0, 0)));
|
||||
let scale = space.output_scale(output).unwrap();
|
||||
|
||||
let fps_overlay = fps_ui(state, fps, output_geo, scale);
|
||||
let fps_overlay = fps_ui(_gpu, state, fps, output_geo, scale);
|
||||
custom_elements.push(fps_overlay.into());
|
||||
|
||||
let mut area = state.spaces.global_space();
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ impl WinitState {
|
|||
let age = backend.buffer_age().unwrap_or(0);
|
||||
|
||||
match render::render_output(
|
||||
None,
|
||||
backend.renderer(),
|
||||
age as u8,
|
||||
state,
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@ impl Surface {
|
|||
.with_context(|| "Failed to bind buffer")?;
|
||||
|
||||
match render::render_output(
|
||||
None,
|
||||
renderer,
|
||||
age as u8,
|
||||
state,
|
||||
|
|
|
|||
|
|
@ -1,10 +1,14 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
use crate::state::{Common, Fps};
|
||||
use smithay::utils::{Logical, Rectangle};
|
||||
use smithay::{
|
||||
backend::drm::DrmNode,
|
||||
utils::{Logical, Rectangle},
|
||||
};
|
||||
pub use smithay_egui::EguiFrame;
|
||||
|
||||
pub fn fps_ui(
|
||||
gpu: Option<&DrmNode>,
|
||||
state: &Common,
|
||||
fps: &mut Fps,
|
||||
area: Rectangle<i32, Logical>,
|
||||
|
|
@ -55,6 +59,9 @@ pub fn fps_ui(
|
|||
ui.set_max_width(label_res.rect.min.x + label_res.rect.width());
|
||||
ui.separator();
|
||||
|
||||
if let Some(gpu) = gpu {
|
||||
ui.label(egui::RichText::new(format!("renderD{}", gpu.minor())).code());
|
||||
}
|
||||
ui.label(egui::RichText::new(format!("FPS: {:>7.3}", avg_fps)).heading());
|
||||
ui.label("Frame Times:");
|
||||
ui.label(egui::RichText::new(format!("avg: {:>7.6}", avg)).code());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue