egl image creation in case of atomic

Hosokawa, Kenji (ADITG/ESB) khosokawa at de.adit-jv.com
Tue Sep 11 12:47:15 UTC 2018



> -----Original Message-----
> From: Pekka Paalanen <ppaalanen at gmail.com>
> Sent: Dienstag, 11. September 2018 13:20
> To: Hosokawa, Kenji (ADITG/ESB) <khosokawa at de.adit-jv.com>
> Cc: wayland-devel at lists.freedesktop.org
> Subject: Re: egl image creation in case of atomic
> 
> On Tue, 28 Aug 2018 12:10:06 +0000
> "Hosokawa, Kenji (ADITG/ESB)" <khosokawa at de.adit-jv.com> wrote:
> 
> > Hi,
> >
> > When eglSwapInterval is 0, clients may send buffers without waiting
> > frame callbacks. Currently, egl image is created when a buffer is
> > committed from client. But egl image is only needed, when gl-renderer
> > is used to render the framebuffer. Creating an egl image in every
> > commit causes additional CPU load in weston when clients are sending
> > more buffers than display refresh rate. Furthermore, creating egl
> > images are not needed at all, when the client buffer can be imported
> > to a DRM plane. We would like to reduce CPU usage of weston in that
> > case. In my investigation, egl image creation can produce higher CPU
> > load in Weston. I tried to remove egl image creation with this simple
> > ugly patch for weston.
> >
> > diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c index
> > 2c50d2d..bbb5846 100644
> > --- a/libweston/gl-renderer.c
> > +++ b/libweston/gl-renderer.c
> > @@ -2260,6 +2260,8 @@ gl_renderer_attach_dmabuf(struct weston_surface *surface,
> >         buffer->y_inverted =
> >                 !(dmabuf->attributes.flags &
> > ZWP_LINUX_BUFFER_PARAMS_V1_FLAGS_Y_INVERT);
> >
> > +       return;
> > +
> >         for (i = 0; i < gs->num_images; i++)
> >                 egl_image_unref(gs->images[i]);
> >         gs->num_images = 0;
> >
> > Without the patch (original), total CPU usage of weston was 25%. With
> > the patch, it was decreased to 10%. I used weston v4.0.92,
> > weston-simple-egl with -o and -b options, rcar h3 target. It was
> > measured with top command simply.
> >
> > My question is that can egl image creation be postponed until repaint
> > output (gl_renderer_repaint_output)?
> 
> Hi,
> 
> I suppose the EGLImage creation could be postponed to the repaint phase.
> 
> The client is being abusive, which is why I think this has not been an issue before. The best solution would be to fix the client to
> throttle appropriately, that would produce the biggest savings. Why not do that instead?
> 
> My recommended approach in clients is to use SwapInterval=0 but throttle manually to the wl_surface.frame callbacks or
> presentation_feedback.
> This would give the most control in the client while not wasting power.

Hi Pekka,

Thank you for the comments and sorry for my misleading comments.
Even in our use case, there are no clients like sending 2000 frames per second. The client should be fix if it exists.

We would like to discuss the following part.
>Creating egl images are not needed at all, when the client buffer can be imported to a DRM plane. We would like to reduce CPU usage of weston in that case.

Best regards

Kenji Hosokawa
Engineering Software Base (ADITG/ESB)


More information about the wayland-devel mailing list