On Thursday, 2018-01-18 19:07:06 +0000, Emil Velikov wrote: > On 18 January 2018 at 17:43, Eric Engestrom <e...@engestrom.ch> wrote: > > 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 :) > > > My current checkout shows the struct is nicely separated for inclusion > in both C and C++ sources. > The C++ vfuncs are wrapped in a ifdef _cplusplus block, so the ABI > should be identical across both. > > I'm suspecting that maxSwapInterval > 1 will require additional > changes, so I'd keep it as-is
That's actually a good point; this should indeed stay hard coded, with this comment. > (nit the comment style and adding dEQP stats in the commit message). I was going to do this before pushing, but you're right to point it out :) > Reviewed-by: Emil Velikov <emil.veli...@collabora.com> > > -Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev