From 217af75a4092545fb9f5afe4a12e0b74cb1b48e4 Mon Sep 17 00:00:00 2001 From: Tomasz Figa Date: Tue, 2 Aug 2016 20:07:50 +0900 Subject: [PATCH] egl/android: Respect buffer mask in droid_image_get_buffers (v2) Drivers can request different set of buffers depending on the buffer mask they pass to the get_buffers callback. This patch makes droid_image_get_buffers() respect this mask. v2: Return error only in case of real error condition and ignore requests of unavailable buffers. Signed-off-by: Tomasz Figa Tested-by: Rob Herring Reviewed-by: Chad Versace Change-Id: I6c3c4eca90f4c618579f6725dec323c004cb44ba --- src/egl/drivers/dri2/platform_android.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index 124a30c72f7..d78c06d0fd6 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -434,16 +434,26 @@ droid_image_get_buffers(__DRIdrawable *driDrawable, { struct dri2_egl_surface *dri2_surf = loaderPrivate; + images->image_mask = 0; + if (update_buffers(dri2_surf) < 0) return 0; - if (get_back_bo(dri2_surf) < 0) { - _eglError(EGL_BAD_PARAMETER, "get_back_bo"); - return 0; + if (buffer_mask & __DRI_IMAGE_BUFFER_FRONT) { + /* + * We don't support front buffers and GLES doesn't require them for + * window surfaces, but some DRI drivers will request them anyway. + * We just ignore such request as other platforms backends do. + */ } - images->image_mask = __DRI_IMAGE_BUFFER_BACK; - images->back = dri2_surf->dri_image; + if (buffer_mask & __DRI_IMAGE_BUFFER_BACK) { + if (get_back_bo(dri2_surf) < 0) + return 0; + + images->back = dri2_surf->dri_image; + images->image_mask |= __DRI_IMAGE_BUFFER_BACK; + } return 1; } -- 2.30.2