Skip to content

Commit

Permalink
test: cursor plane offscreen buffer
Browse files Browse the repository at this point in the history
  • Loading branch information
cmeissl committed Feb 15, 2023
1 parent 6df3097 commit dafdfee
Show file tree
Hide file tree
Showing 3 changed files with 272 additions and 239 deletions.
43 changes: 26 additions & 17 deletions anvil/src/udev.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ use smithay::{
renderer::{
damage::{DamageTrackedRenderer, DamageTrackedRendererError},
element::{texture::TextureBuffer, AsRenderElements, RenderElement, RenderElementStates},
gles2::Gles2Renderer,
gles2::{Gles2Renderbuffer, Gles2Renderer},
multigpu::{gbm::GbmGlesBackend, GpuManager, MultiRenderer, MultiTexture},
Bind, DebugFlags, Renderer,
Bind, DebugFlags, ExportMem, Offscreen, Renderer,
},
session::{libseat::LibSeatSession, Event as SessionEvent, Session},
udev::{all_gpus, primary_gpu, UdevBackend, UdevEvent},
Expand Down Expand Up @@ -444,8 +444,12 @@ pub fn run_udev(log: Logger) {

pub type RenderSurface = GbmBufferedSurface<GbmAllocator<DrmDeviceFd>, Option<OutputPresentationFeedback>>;

pub type GbmDrmCompositor =
DrmCompositor<GbmAllocator<DrmDeviceFd>, GbmDevice<DrmDeviceFd>, Option<OutputPresentationFeedback>>;
pub type GbmDrmCompositor = DrmCompositor<
GbmAllocator<DrmDeviceFd>,
GbmDevice<DrmDeviceFd>,
Option<OutputPresentationFeedback>,
DrmDeviceFd,
>;

enum SurfaceComposition {
Surface {
Expand Down Expand Up @@ -498,15 +502,15 @@ impl SurfaceComposition {
}
}

fn render_frame<R, E>(
fn render_frame<'a, R, E, Target>(
&mut self,
renderer: &mut R,
elements: &[E],
elements: &'a [E],
clear_color: [f32; 4],
log: Logger,
) -> Result<(bool, RenderElementStates), SwapBuffersError>
where
R: Renderer + Bind<Dmabuf>,
R: Renderer + Bind<Dmabuf> + Bind<Target> + Offscreen<Target> + ExportMem,
<R as Renderer>::TextureId: 'static,
<R as Renderer>::Error: Into<SwapBuffersError>,
E: RenderElement<R>,
Expand Down Expand Up @@ -762,6 +766,7 @@ fn scan_connectors(
gbm.clone(),
formats.clone(),
device.cursor_size(),
Some(gbm.clone()),
logger.clone(),
) {
Ok(compositor) => compositor,
Expand Down Expand Up @@ -1394,10 +1399,12 @@ fn render_surface<'a, 'b>(

let (elements, clear_color) =
output_elements(output, space, custom_elements, renderer, show_window_preview);
let (rendered, states) =
surface
.compositor
.render_frame(renderer, &elements, clear_color, logger.clone())?;
let (rendered, states) = surface.compositor.render_frame::<_, _, Gles2Renderbuffer>(
renderer,
&elements,
clear_color,
logger.clone(),
)?;

post_repaint(output, &states, space, clock.now());

Expand Down Expand Up @@ -1445,12 +1452,14 @@ fn initial_render(
renderer: &mut UdevRenderer<'_, '_>,
logger: &::slog::Logger,
) -> Result<(), SwapBuffersError> {
surface.compositor.render_frame::<_, CustomRenderElements<_>>(
renderer,
&[],
CLEAR_COLOR,
logger.clone(),
)?;
surface
.compositor
.render_frame::<_, CustomRenderElements<_>, Gles2Renderbuffer>(
renderer,
&[],
CLEAR_COLOR,
logger.clone(),
)?;
surface.compositor.queue_frame(None)?;
surface.compositor.reset_buffers();

Expand Down
Loading

0 comments on commit dafdfee

Please sign in to comment.