[PATCH weston v3 4/4] gl-renderer: Emit GPU rendering begin and end timeline timepoints

Daniel Stone daniel at fooishbar.org
Wed Sep 27 14:24:33 UTC 2017

Hi Chris,
Thanks for taking a look!

On 27 September 2017 at 13:18, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> Quoting Alexandros Frantzis (2017-09-27 13:09:16)
>> Use EGL fence sync objects to emit timepoints for the beginning and the
>> end of rendering on the GPU.
> But why not use a qbo with GL_TIMESTAMP?

As Alexandros said, we don't really have support for that at the moment.

> sync_file are only timestamped when they are signaled, which is very,
> very loosely coupled with the GPU rendering.

This would, I imagine, mainly be used with the DRM/GBM backend; given
that we're submitting the buffer to KMS for a flip immediately
afterwards, we'll require CPU signaling anyway.

I'll grant you that it's not ideal for nested compositors, but ... shrug.

> Each will also force a
> flush and submission of the GL pipeline, which seems to me to be very
> heavyweight ?

The initial point is a no-op as far as GL is concerned, since it will
either be the very first operation called at startup, or immediately
after a flush -> swap -> context switch. The second is called
immediately before SwapBuffers, so again not adding any intra-batch
flush overhead. We have a single repaint loop per-CRTC, and per-CRTC
buffers we draw into, which are only ever rendered once per frame
(driven by, e.g., KMS flip completion). Besides, any compositor with a
repaint loop so GL-complex the flush causes noticeable overhead is
objectively broken anyway.


More information about the wayland-devel mailing list