To share common get and create dri_image_front code. Signed-off-by: Mun Gwan-gyeong <elong...@gmail.com> --- src/egl/drivers/dri2/egl_dri2.c | 36 ++++++++++++++++++++++++++++++++++++ src/egl/drivers/dri2/egl_dri2.h | 3 +++ 2 files changed, 39 insertions(+)
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 4070a80b23..890ed8138f 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1167,6 +1167,42 @@ dri2_egl_surface_destroy_image_front(struct dri2_egl_surface *dri2_surf) #endif } +int +dri2_egl_surface_get_image_front(struct dri2_egl_surface *dri2_surf, + unsigned int format) +{ +#if defined(HAVE_ANDROID_PLATFORM) || defined(HAVE_TIZEN_PLATFORM) + struct dri2_egl_display *dri2_dpy = + dri2_egl_display(dri2_surf->base.Resource.Display); + + if (dri2_surf->dri_image_front) + return 0; + + if (dri2_surf->base.Type == EGL_WINDOW_BIT) { + /* According current EGL spec, front buffer rendering + * for window surface is not supported now. + * and mesa doesn't have the implementation of this case. + * Add warning message, but not treat it as error. + */ + _eglLog(_EGL_DEBUG, "DRI driver requested unsupported front buffer for window surface"); + } else if (dri2_surf->base.Type == EGL_PBUFFER_BIT) { + dri2_surf->dri_image_front = + dri2_dpy->image->createImage(dri2_dpy->dri_screen, + dri2_surf->base.Width, + dri2_surf->base.Height, + format, + 0, + dri2_surf); + if (!dri2_surf->dri_image_front) { + _eglLog(_EGL_WARNING, "dri2_image_front allocation failed"); + return -1; + } + } +#endif + + return 0; +} + /** * Called via eglTerminate(), drv->API.Terminate(). * diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index fbef031fb6..d24425dba1 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -512,6 +512,9 @@ dri2_egl_surface_destroy_image_back(struct dri2_egl_surface *dri2_surf); void dri2_egl_surface_destroy_image_front(struct dri2_egl_surface *dri2_surf); +int +dri2_egl_surface_get_image_front(struct dri2_egl_surface *dri2_surf, + unsigned int format); EGLBoolean dri2_init_surface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type, _EGLConfig *conf, const EGLint *attrib_list, EGLBoolean enable_out_fence); -- 2.14.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev