On Thursday, 2018-01-18 07:52:42 +0000, Zhongmin Wu wrote:
> Implement the eglSwapinterval for Android platform to
> enable the async mode for some GFX benchmarks such as
> Daimler C217, CityBench.
> 
> Signed-off-by: Zhongmin Wu <zhongmin...@intel.com>
> ---
>  src/egl/drivers/dri2/platform_android.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/src/egl/drivers/dri2/platform_android.c 
> b/src/egl/drivers/dri2/platform_android.c
> index f6a24cd..3a64689 100644
> --- a/src/egl/drivers/dri2/platform_android.c
> +++ b/src/egl/drivers/dri2/platform_android.c
> @@ -476,6 +476,20 @@ droid_destroy_surface(_EGLDriver *drv, _EGLDisplay 
> *disp, _EGLSurface *surf)
>     return EGL_TRUE;
>  }
>  
> +static EGLBoolean
> +droid_swap_interval(_EGLDriver *drv, _EGLDisplay *dpy,
> +                   _EGLSurface *surf, EGLint interval)
> +{
> +   struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
> +   struct ANativeWindow *window = dri2_surf->window;
> +
> +   if (window->setSwapInterval(window, interval))
> +      return EGL_FALSE;
> +
> +   surf->SwapInterval = interval;
> +   return EGL_TRUE;
> +}
> +
>  static int
>  update_buffers(struct dri2_egl_surface *dri2_surf)
>  {
> @@ -1300,6 +1314,7 @@ static const struct dri2_egl_display_vtbl 
> droid_display_vtbl = {
>     .swap_buffers = droid_swap_buffers,
>     .swap_buffers_with_damage = dri2_fallback_swap_buffers_with_damage, /* 
> Android implements the function */
>     .swap_buffers_region = dri2_fallback_swap_buffers_region,
> +   .swap_interval = droid_swap_interval,
>  #if ANDROID_API_LEVEL >= 23
>     .set_damage_region = droid_set_damage_region,
>  #else
> @@ -1443,6 +1458,12 @@ dri2_initialize_android(_EGLDriver *drv, _EGLDisplay 
> *dpy)
>  
>     dri2_setup_screen(dpy);
>  
> +   /* we set the maximum swap interval as 1 for Android platform, Since
> +   it is the maximum value supported by Android according to the
> +   value of ANativeWindow::maxSwapInterval.
> +   */
> +   dri2_setup_swap_interval(dpy, 1);

My C<->C++ interaction skills are more than rusty, but is it possible to
use `ANativeWindow.maxSwapInterval` or something like this?

Given that the dEQP tests all pass, whether with the current comment or
the class field directly used in the code, this patch is:
Reviewed-by: Eric Engestrom <e...@engestrom.ch>

I'll push it for you in a couple days if no one objects :)

> +
>     if (!droid_add_configs_for_visuals(drv, dpy)) {
>        err = "DRI2: failed to add configs";
>        goto cleanup;
> -- 
> 2.7.4
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to