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