diff options
author | Tomasz Figa <[email protected]> | 2016-08-02 20:07:50 +0900 |
---|---|---|
committer | Chad Versace <[email protected]> | 2016-08-08 11:40:31 -0700 |
commit | 217af75a4092545fb9f5afe4a12e0b74cb1b48e4 (patch) | |
tree | 9ab70484b2637490f7f45893e5413a151ae21377 /src/egl | |
parent | c6c26bc589f57c083f040ad70d1606cfa382c66a (diff) |
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 <[email protected]>
Tested-by: Rob Herring <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
Change-Id: I6c3c4eca90f4c618579f6725dec323c004cb44ba
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/drivers/dri2/platform_android.c | 20 |
1 files 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; } |