[Mesa-dev] [EGL android: accquire fence implementation] i965: Queue the buffer with a sync fence for Android OS

Emil Velikov emil.l.velikov at gmail.com
Mon Jul 10 11:11:11 UTC 2017


Hi Zhongmin Wu,

Above all, a bit of a disclaimer: I'm by no means an expert on the
topic so take the following with a pinch of salt.

On 10 July 2017 at 03:11, Zhongmin Wu <zhongmin.wu at intel.com> wrote:
> Before we queued the buffer with a invalid fence (-1), it will
> make some benchmarks failed to test such as flatland.
>
> Now we get the out fence during the flushing buffer and then pass
> it to SurfaceFlinger in eglSwapbuffer function.
>
Having a closer look it seems that the issue can be summarised as follows:
 - flatland intercepts/interacts ANativeWindow::{de,}queueBuffer (how
about ANativeWindow::cancelBuffer?)
 - the program expects that a sync fd is available for both dequeue and queue

At the same time:
 - the ANativeWindow documentation does _not_ state such requirement
 - even if it did, that will be somewhat wrong, since
ANativeWindow::queueBuffer is called by eglSwapBuffers()
Where the latter documentation clearly states - "... performs an
implicit flush ... glFlush ... vgFlush"

My take is that if flatland/Android framework does want an explicit
sync point it should insert one with the EGL API.
There could be alternative solutions, but the proposed patch seems wrong IMHO.

Regards,
Emil


More information about the mesa-dev mailing list