[Mesa-dev] [PATCH] android: add support for EGL_EXT_buffer_age extension
Tapani Pälli
tapani.palli at intel.com
Fri Nov 25 08:55:48 UTC 2016
forgot to also CC possible interested ppl!
On 11/24/2016 11:44 AM, Tapani Pälli wrote:
> Oops, commit message missed the dEQP testing results. I can add these
> when committing:
>
> On Android (running dEQP with *buffer_age*):
>
> 102 passing tests, 0 failing and 84 not supported ones
>
> On 11/24/2016 11:38 AM, Tapani Pälli wrote:
>> From: Kalyan Kondapally <kalyan.kondapally at intel.com>
>>
>> - initialize buffer age as 0 (Tapani)
>>
>> Signed-off-by: Kalyan Kondapally <kalyan.kondapally at intel.com>
>> ---
>> src/egl/drivers/dri2/egl_dri2.h | 2 ++
>> src/egl/drivers/dri2/platform_android.c | 24 +++++++++++++++++++++++-
>> 2 files changed, 25 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/egl/drivers/dri2/egl_dri2.h
>> b/src/egl/drivers/dri2/egl_dri2.h
>> index eac58f3..4eda1a2 100644
>> --- a/src/egl/drivers/dri2/egl_dri2.h
>> +++ b/src/egl/drivers/dri2/egl_dri2.h
>> @@ -297,6 +297,8 @@ struct dri2_egl_surface
>> __DRIimage *dri_image_back;
>> __DRIimage *dri_image_front;
>>
>> + int back_buffer_age;
>> +
>> /* EGL-owned buffers */
>> __DRIbuffer *local_buffers[__DRI_BUFFER_COUNT];
>> #endif
>> diff --git a/src/egl/drivers/dri2/platform_android.c
>> b/src/egl/drivers/dri2/platform_android.c
>> index 373e2c0..b6c6533 100644
>> --- a/src/egl/drivers/dri2/platform_android.c
>> +++ b/src/egl/drivers/dri2/platform_android.c
>> @@ -477,6 +477,8 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
>> if (!dri2_surf->dri_image_back)
>> return -1;
>>
>> + dri2_surf->back_buffer_age = 0;
>> +
>> return 0;
>> }
>>
>> @@ -573,6 +575,9 @@ droid_swap_buffers(_EGLDriver *drv, _EGLDisplay
>> *disp, _EGLSurface *draw)
>> if (dri2_surf->base.Type != EGL_WINDOW_BIT)
>> return EGL_TRUE;
>>
>> + if (dri2_surf->back_buffer_age > 0)
>> + dri2_surf->back_buffer_age++;
>> +
>> dri2_flush_drawable_for_swapbuffers(disp, draw);
>>
>> if (dri2_surf->buffer)
>> @@ -580,9 +585,25 @@ droid_swap_buffers(_EGLDriver *drv, _EGLDisplay
>> *disp, _EGLSurface *draw)
>>
>> (*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable);
>>
>> + dri2_surf->back_buffer_age = 1;
>> +
>> return EGL_TRUE;
>> }
>>
>> +static EGLint
>> +droid_query_buffer_age(_EGLDriver *drv,
>> + _EGLDisplay *disp, _EGLSurface *surface)
>> +{
>> + struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surface);
>> +
>> + if (get_back_bo(dri2_surf) < 0) {
>> + _eglError(EGL_BAD_ALLOC, "dri2_query_buffer_age");
>> + return 0;
>> + }
>> +
>> + return dri2_surf->back_buffer_age;
>> +}
>> +
>> static _EGLImage *
>> droid_create_image_from_prime_fd_yuv(_EGLDisplay *disp, _EGLContext
>> *ctx,
>> struct ANativeWindowBuffer *buf,
>> int fd)
>> @@ -1027,7 +1048,7 @@ static struct dri2_egl_display_vtbl
>> droid_display_vtbl = {
>> .swap_buffers_region = dri2_fallback_swap_buffers_region,
>> .post_sub_buffer = dri2_fallback_post_sub_buffer,
>> .copy_buffers = dri2_fallback_copy_buffers,
>> - .query_buffer_age = dri2_fallback_query_buffer_age,
>> + .query_buffer_age = droid_query_buffer_age,
>> .query_surface = droid_query_surface,
>> .create_wayland_buffer_from_image =
>> dri2_fallback_create_wayland_buffer_from_image,
>> .get_sync_values = dri2_fallback_get_sync_values,
>> @@ -1126,6 +1147,7 @@ dri2_initialize_android(_EGLDriver *drv,
>> _EGLDisplay *dpy)
>> dpy->Extensions.ANDROID_framebuffer_target = EGL_TRUE;
>> dpy->Extensions.ANDROID_image_native_buffer = EGL_TRUE;
>> dpy->Extensions.ANDROID_recordable = EGL_TRUE;
>> + dpy->Extensions.EXT_buffer_age = EGL_TRUE;
>>
>> /* Fill vtbl last to prevent accidentally calling virtual function
>> during
>> * initialization.
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list