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

Emil Velikov emil.l.velikov at gmail.com
Fri Jul 14 10:41:03 UTC 2017


Hi Zhongmin Wu,

On 14 July 2017 at 07:55, 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.
>
> v2: a) Also implement the fence in cancelBuffer.
>     b) The last sync fence is stored in drawable object
>        rather than brw context.
>     c) format clear.
>
> Change-Id: Ic0773c19788d612a98d1402f5b5619dab64c1bc2
> Tracked-On: https://jira01.devtools.intel.com/browse/OAM-43936
> Reported-On: https://bugs.freedesktop.org/show_bug.cgi?id=101655
> Signed-off-by: Zhongmin Wu <zhongmin.wu at intel.com>
> Reported-by: Li, Guangli <guangli.li at intel.com>
> Tested-by: Marathe, Yogesh <yogesh.marathe at intel.com>
> ---
>  include/GL/internal/dri_interface.h           |    9 +++++++++
>  src/egl/drivers/dri2/platform_android.c       |   20 +++++++++++++-------
>  src/mesa/drivers/dri/common/dri_util.c        |    3 +++
>  src/mesa/drivers/dri/common/dri_util.h        |    2 ++
>  src/mesa/drivers/dri/i915/intel_screen.c      |    1 +
>  src/mesa/drivers/dri/i965/intel_batchbuffer.c |   18 +++++++++++++++++-
>  src/mesa/drivers/dri/i965/intel_screen.c      |    6 ++++++
>  src/mesa/drivers/dri/nouveau/nouveau_screen.c |    1 +
>  src/mesa/drivers/dri/radeon/radeon_screen.c   |    1 +
>  9 files changed, 53 insertions(+), 8 deletions(-)
>
> diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
> index fc2d4bb..7c6b08b 100644
> --- a/include/GL/internal/dri_interface.h
> +++ b/include/GL/internal/dri_interface.h
> @@ -287,6 +287,15 @@ struct __DRI2flushExtensionRec {
>      void (*flush)(__DRIdrawable *drawable);
>
>      /**
> +    * This function enables retrieving fence during enqueue / cancel buffer operations
> +    *
> +    * \param drawable the drawable to invalidate
> +    *
> +    * \since 3
> +    */
> +    int (*get_retrieve_fd)(__DRIdrawable *drawable);
> +
If you get to v3 using the same approach, do not forget to incorporate
my earlier suggestions.
Reiterating from before, emphasising on the missing parts.

 - when extending the interface, _the version number must be bumped_
 - user should _check the version_ and the function pointer prior to
use, falling back to the old scheme
 - get_retrive_fd [barring the typo - retrieve], should have at least
_the fd ownership documented_

Thanks
Emil


More information about the mesa-dev mailing list