Mesa (master): egl/dri: use createImageFromRenderbuffer2 when available

Nicolai Hähnle nh at kemper.freedesktop.org
Tue Oct 10 12:04:00 UTC 2017


Module: Mesa
Branch: master
Commit: bad24395d91737ce2b07cfe567c449271e31988c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bad24395d91737ce2b07cfe567c449271e31988c

Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
Date:   Tue Oct 10 13:58:47 2017 +0200

egl/dri: use createImageFromRenderbuffer2 when available

Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>

---

 src/egl/drivers/dri2/egl_dri2.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 1407c96352..171858bbcd 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -1890,9 +1890,26 @@ dri2_create_image_khr_renderbuffer(_EGLDisplay *disp, _EGLContext *ctx,
       return EGL_NO_IMAGE_KHR;
    }
 
-   dri_image =
-      dri2_dpy->image->createImageFromRenderbuffer(dri2_ctx->dri_context,
-                                                   renderbuffer, NULL);
+   if (dri2_dpy->image->base.version >= 17) {
+      unsigned error = ~0;
+
+      dri_image = dri2_dpy->image->createImageFromRenderbuffer2(
+               dri2_ctx->dri_context, renderbuffer, NULL, &error);
+
+      assert(!!dri_image == (error == __DRI_IMAGE_ERROR_SUCCESS));
+
+      if (!dri_image) {
+         _eglError(egl_error_from_dri_image_error(error), "dri2_create_image_khr");
+         return EGL_NO_IMAGE_KHR;
+      }
+   } else {
+      dri_image = dri2_dpy->image->createImageFromRenderbuffer(
+               dri2_ctx->dri_context, renderbuffer, NULL);
+      if (!dri_image) {
+         _eglError(EGL_BAD_ALLOC, "dri2_create_image_khr");
+         return EGL_NO_IMAGE_KHR;
+      }
+   }
 
    return dri2_create_image_from_dri(disp, dri_image);
 }




More information about the mesa-commit mailing list