xserver: Branch 'master' - 13 commits

Adam Jackson ajax at kemper.freedesktop.org
Thu May 18 15:38:43 UTC 2017


 glamor/glamor.h                                  |   14 -
 glamor/glamor_egl.c                              |  315 ++++++-----------------
 hw/xfree86/drivers/modesetting/dri2.c            |    4 
 hw/xfree86/drivers/modesetting/driver.c          |   14 -
 hw/xfree86/drivers/modesetting/driver.h          |    6 
 hw/xfree86/drivers/modesetting/drmmode_display.c |   19 -
 hw/xfree86/drivers/modesetting/pageflip.c        |    2 
 hw/xfree86/drivers/modesetting/present.c         |    8 
 8 files changed, 118 insertions(+), 264 deletions(-)

New commits:
commit d0675e96f1fc8501324c88afa648a9d394f35587
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:23 2017 -0700

    glamor_egl: Drop glamor_egl_create_textured_screen_ext().
    
    The function hasn't been doing anything useful since keithp's resource
    freeing fixes in 2014.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor.h b/glamor/glamor.h
index bdd2374cf..b4fd76a6a 100644
--- a/glamor/glamor.h
+++ b/glamor/glamor.h
@@ -299,17 +299,11 @@ extern _X_EXPORT Bool glamor_egl_init_textured_pixmap(ScreenPtr screen);
 extern _X_EXPORT Bool glamor_egl_create_textured_screen(ScreenPtr screen,
                                                         int handle, int stride);
 
-/* @glamor_egl_create_textured_screen_ext:
- *
- * extent one parameter to track the pointer of the DDX layer's back pixmap.
- * We need this pointer during the closing screen stage. As before back to
- * the DDX's close screen, we have to free all the glamor related resources.
+/* Obsolete entrypoint, temporarily left here for API compatibility
+ * for xf86-video-ati.
  */
-extern _X_EXPORT Bool glamor_egl_create_textured_screen_ext(ScreenPtr screen,
-                                                            int handle,
-                                                            int stride,
-                                                            PixmapPtr
-                                                            *back_pixmap);
+#define glamor_egl_create_textured_screen_ext(a, b, c, d) \
+    glamor_egl_create_textured_screen(a, b, c)
 
 /*
  * @glamor_egl_create_textured_pixmap: Try to create a textured pixmap from
diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index 4043dcfe8..354c30f68 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -149,14 +149,6 @@ glamor_egl_create_textured_screen(ScreenPtr screen, int handle, int stride)
     return TRUE;
 }
 
-Bool
-glamor_egl_create_textured_screen_ext(ScreenPtr screen,
-                                      int handle,
-                                      int stride, PixmapPtr *back_pixmap)
-{
-    return glamor_egl_create_textured_screen(screen, handle, stride);
-}
-
 static void
 glamor_egl_set_pixmap_image(PixmapPtr pixmap, EGLImageKHR image)
 {
commit c36f56808ffbefc4a3dcf61dfad17f62aeb8e16c
Author: Eric Anholt <eric at anholt.net>
Date:   Wed May 17 17:06:44 2017 -0700

    glamor_egl: Automatically choose a GLES2 context if desktop GL fails.
    
    GLES2 support has been requested multiple times, and we've had this
    code laying around trying to implement it.  The GLES2 implementation
    is not quite there yet (some pixel transfer failures), but it
    shouldn't take much fixing at this point.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index 9527caad2..4043dcfe8 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -635,22 +635,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
 {
     struct glamor_egl_screen_private *glamor_egl;
 
-    EGLint config_attribs[] = {
-#ifdef GLAMOR_GLES2
-        EGL_CONTEXT_CLIENT_VERSION, 2,
-#endif
-        EGL_NONE
-    };
-    static const EGLint config_attribs_core[] = {
-        EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR,
-        EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
-        EGL_CONTEXT_MAJOR_VERSION_KHR,
-        GLAMOR_GL_CORE_VER_MAJOR,
-        EGL_CONTEXT_MINOR_VERSION_KHR,
-        GLAMOR_GL_CORE_VER_MINOR,
-        EGL_NONE
-    };
-
     glamor_egl = calloc(sizeof(*glamor_egl), 1);
     if (glamor_egl == NULL)
         return FALSE;
@@ -679,12 +663,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
         goto error;
     }
 
-#ifndef GLAMOR_GLES2
-    eglBindAPI(EGL_OPENGL_API);
-#else
-    eglBindAPI(EGL_OPENGL_ES_API);
-#endif
-
 #define GLAMOR_CHECK_EGL_EXTENSION(EXT)  \
 	if (!epoxy_has_egl_extension(glamor_egl->display, "EGL_" #EXT)) {  \
 		ErrorF("EGL_" #EXT " required.\n");  \
@@ -701,21 +679,49 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
     GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_texture_2D_image);
     GLAMOR_CHECK_EGL_EXTENSION(KHR_surfaceless_context);
 
-#ifndef GLAMOR_GLES2
-    glamor_egl->context = eglCreateContext(glamor_egl->display,
-                                           NULL, EGL_NO_CONTEXT,
-                                           config_attribs_core);
-#else
-    glamor_egl->context = NULL;
-#endif
-    if (!glamor_egl->context) {
+    if (eglBindAPI(EGL_OPENGL_API)) {
+        static const EGLint config_attribs_core[] = {
+            EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR,
+            EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
+            EGL_CONTEXT_MAJOR_VERSION_KHR,
+            GLAMOR_GL_CORE_VER_MAJOR,
+            EGL_CONTEXT_MINOR_VERSION_KHR,
+            GLAMOR_GL_CORE_VER_MINOR,
+            EGL_NONE
+        };
+        static const EGLint config_attribs[] = {
+            EGL_NONE
+        };
+
         glamor_egl->context = eglCreateContext(glamor_egl->display,
                                                NULL, EGL_NO_CONTEXT,
-                                               config_attribs);
-        if (glamor_egl->context == EGL_NO_CONTEXT) {
-            xf86DrvMsg(scrn->scrnIndex, X_ERROR, "Failed to create EGL context\n");
+                                               config_attribs_core);
+
+        if (glamor_egl->context == EGL_NO_CONTEXT)
+            glamor_egl->context = eglCreateContext(glamor_egl->display,
+                                                   NULL, EGL_NO_CONTEXT,
+                                                   config_attribs);
+    }
+
+    if (glamor_egl->context == EGL_NO_CONTEXT) {
+        static const EGLint config_attribs[] = {
+            EGL_CONTEXT_CLIENT_VERSION, 2,
+            EGL_NONE
+        };
+        if (!eglBindAPI(EGL_OPENGL_ES_API)) {
+            xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                       "glamor: Failed to bind either GL or GLES APIs.\n");
             goto error;
         }
+
+        glamor_egl->context = eglCreateContext(glamor_egl->display,
+                                               NULL, EGL_NO_CONTEXT,
+                                               config_attribs);
+    }
+    if (glamor_egl->context == EGL_NO_CONTEXT) {
+        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                   "glamor: Failed to create GL or GLES2 contexts\n");
+        goto error;
     }
 
     if (!eglMakeCurrent(glamor_egl->display,
commit f6bf5f1c7475ff1b19b0e8c3e71c1224d5b6bc82
Author: Eric Anholt <eric at anholt.net>
Date:   Wed May 17 17:06:43 2017 -0700

    glamor_egl: Remove check for KHR_surfaceless_context_*
    
    Those extensions don't exist.  There's only surfaceless_context.
    
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index a82c1f790..9527caad2 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -699,12 +699,7 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
 	}
 
     GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_texture_2D_image);
-#ifdef GLAMOR_GLES2
-    GLAMOR_CHECK_EGL_EXTENSIONS(KHR_surfaceless_context, KHR_surfaceless_gles2);
-#else
-    GLAMOR_CHECK_EGL_EXTENSIONS(KHR_surfaceless_context,
-                                KHR_surfaceless_opengl);
-#endif
+    GLAMOR_CHECK_EGL_EXTENSION(KHR_surfaceless_context);
 
 #ifndef GLAMOR_GLES2
     glamor_egl->context = eglCreateContext(glamor_egl->display,
commit 6e793ae08510639d011f638bcfc5246b9cccd1ae
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:21 2017 -0700

    glamor_egl: Drop warning about indirect GLX and GLES2.
    
    Indirect GLX uses its own context and doesn't care what glamor is
    using.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index 6bc9b5383..a82c1f790 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -746,12 +746,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
 
     glamor_egl->saved_free_screen = scrn->FreeScreen;
     scrn->FreeScreen = glamor_egl_free_screen;
-#ifdef GLAMOR_GLES2
-    xf86DrvMsg(scrn->scrnIndex, X_INFO, "Using GLES2.\n");
-    xf86DrvMsg(scrn->scrnIndex, X_WARNING,
-               "Glamor is using GLES2 but GLX needs GL. "
-               "Indirect GLX may not work correctly.\n");
-#endif
     return TRUE;
 
 error:
commit 59de50d6ef3331ee03eb82d4acba45aa75c70d42
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:20 2017 -0700

    glamor_egl: Avoid flink names in glamor_egl_create_textured_pixmap().
    
    Using flink is banned on render nodes, and they needlessly expose our
    screen pixmap contents to any authenticated client.  This also
    incidentally drops the dependency on EGL_MESA_drm_image.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index ea047b4c4..6bc9b5383 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -92,38 +92,6 @@ glamor_egl_make_current(struct glamor_context *glamor_ctx)
     }
 }
 
-static EGLImageKHR
-_glamor_egl_create_image(struct glamor_egl_screen_private *glamor_egl,
-                         int width, int height, int stride, int name, int depth)
-{
-    EGLImageKHR image;
-
-    EGLint attribs[] = {
-        EGL_WIDTH, 0,
-        EGL_HEIGHT, 0,
-        EGL_DRM_BUFFER_STRIDE_MESA, 0,
-        EGL_DRM_BUFFER_FORMAT_MESA,
-        EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
-        EGL_DRM_BUFFER_USE_MESA,
-        EGL_DRM_BUFFER_USE_SHARE_MESA | EGL_DRM_BUFFER_USE_SCANOUT_MESA,
-        EGL_NONE
-    };
-    attribs[1] = width;
-    attribs[3] = height;
-    attribs[5] = stride;
-    if (depth != 32 && depth != 24)
-        return EGL_NO_IMAGE_KHR;
-    image = eglCreateImageKHR(glamor_egl->display,
-                              glamor_egl->context,
-                              EGL_DRM_BUFFER_MESA,
-                              (void *) (uintptr_t) name,
-                              attribs);
-    if (image == EGL_NO_IMAGE_KHR)
-        return EGL_NO_IMAGE_KHR;
-
-    return image;
-}
-
 static int
 glamor_get_flink_name(int fd, int handle, int *name)
 {
@@ -212,43 +180,34 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride)
 {
     ScreenPtr screen = pixmap->drawable.pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-    struct glamor_screen_private *glamor_priv =
-        glamor_get_screen_private(screen);
-    struct glamor_egl_screen_private *glamor_egl;
-    EGLImageKHR image;
-    GLuint texture;
-    int name;
-    Bool ret = FALSE;
-
-    glamor_egl = glamor_egl_get_screen_private(scrn);
+    struct glamor_egl_screen_private *glamor_egl =
+        glamor_egl_get_screen_private(scrn);
+    int ret, fd;
 
-    glamor_make_current(glamor_priv);
-    if (!glamor_get_flink_name(glamor_egl->fd, handle, &name)) {
+    /* GBM doesn't have an import path from handles, so we make a
+     * dma-buf fd from it and then go through that.
+     */
+    ret = drmPrimeHandleToFD(glamor_egl->fd, handle, O_CLOEXEC, &fd);
+    if (ret) {
         xf86DrvMsg(scrn->scrnIndex, X_ERROR,
-                   "Couldn't flink pixmap handle\n");
-        glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY);
-        assert(0);
+                   "Failed to make prime FD for handle: %d\n", errno);
         return FALSE;
     }
 
-    image = _glamor_egl_create_image(glamor_egl,
-                                     pixmap->drawable.width,
-                                     pixmap->drawable.height,
-                                     ((stride * 8 +
-                                       7) / pixmap->drawable.bitsPerPixel),
-                                     name, pixmap->drawable.depth);
-    if (image == EGL_NO_IMAGE_KHR) {
-        glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY);
-        goto done;
+    if (!glamor_back_pixmap_from_fd(pixmap, fd,
+                                    pixmap->drawable.width,
+                                    pixmap->drawable.height,
+                                    stride,
+                                    pixmap->drawable.depth,
+                                    pixmap->drawable.bitsPerPixel)) {
+        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                   "Failed to make import prime FD as pixmap: %d\n", errno);
+        close(fd);
+        return FALSE;
     }
-    glamor_create_texture_from_image(screen, image, &texture);
-    glamor_set_pixmap_type(pixmap, GLAMOR_TEXTURE_DRM);
-    glamor_set_pixmap_texture(pixmap, texture);
-    glamor_egl_set_pixmap_image(pixmap, image);
-    ret = TRUE;
 
- done:
-    return ret;
+    close(fd);
+    return TRUE;
 }
 
 Bool
@@ -739,7 +698,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
 		goto error;  \
 	}
 
-    GLAMOR_CHECK_EGL_EXTENSION(MESA_drm_image);
     GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_texture_2D_image);
 #ifdef GLAMOR_GLES2
     GLAMOR_CHECK_EGL_EXTENSIONS(KHR_surfaceless_context, KHR_surfaceless_gles2);
commit 5d6f17d913bd4de0b4594585c0a8ba4f717a2a78
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:19 2017 -0700

    glamor_egl: Drop dead "cpp" field
    
    It's been unused since the initial import.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index abfdbf2a3..ea047b4c4 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -56,7 +56,6 @@ struct glamor_egl_screen_private {
     CreateScreenResourcesProcPtr CreateScreenResources;
     CloseScreenProcPtr CloseScreen;
     int fd;
-    int cpp;
     struct gbm_device *gbm;
 
     CloseScreenProcPtr saved_close_screen;
commit 37618e810b70c24bb8a97dce844963ed1a99f897
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:18 2017 -0700

    glamor_egl: Drop dead gl_context_depth.
    
    This was replaced in 4afe15d8bfd575c010ed1868697a7922a37ab378, but not
    deleted.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index c59aaa832..abfdbf2a3 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -58,7 +58,6 @@ struct glamor_egl_screen_private {
     int fd;
     int cpp;
     struct gbm_device *gbm;
-    int gl_context_depth;
 
     CloseScreenProcPtr saved_close_screen;
     DestroyPixmapProcPtr saved_destroy_pixmap;
commit a6a751e5d8962b01abc2a92ec35300f68cb38d94
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:17 2017 -0700

    glamor_egl: Drop unnecessary check for KHR_gl_renderbuffer_image.
    
    I couldn't find it being used anywhere in the history of the code.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index 21cf3c801..c59aaa832 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -742,7 +742,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
 	}
 
     GLAMOR_CHECK_EGL_EXTENSION(MESA_drm_image);
-    GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_renderbuffer_image);
     GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_texture_2D_image);
 #ifdef GLAMOR_GLES2
     GLAMOR_CHECK_EGL_EXTENSIONS(KHR_surfaceless_context, KHR_surfaceless_gles2);
commit 40a153ee452390f713f7e5638af320a70defe106
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:16 2017 -0700

    glamor_egl: Always require the gbm-based image import path.
    
    This has been associated with dri3 for now, but we need to use it
    elsewhere in order to avoid flink.  The extensions have been
    implemented for long enough that I couldn't find when it was that we
    turned them on.  Oddly, we already required renderbuffer import
    support, which is basically as hard to implement as texture import.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>
    Acked-by: Daniel Stone <daniels at collabora.com>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index bf23dc8ed..21cf3c801 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -59,7 +59,6 @@ struct glamor_egl_screen_private {
     int cpp;
     struct gbm_device *gbm;
     int gl_context_depth;
-    int dri3_capable;
 
     CloseScreenProcPtr saved_close_screen;
     DestroyPixmapProcPtr saved_destroy_pixmap;
@@ -430,9 +429,6 @@ glamor_back_pixmap_from_fd(PixmapPtr pixmap,
 
     glamor_egl = glamor_egl_get_screen_private(scrn);
 
-    if (!glamor_egl->dri3_capable)
-        return FALSE;
-
     if (bpp != 32 || !(depth == 24 || depth == 32) || width == 0 || height == 0)
         return FALSE;
 
@@ -602,6 +598,9 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
     struct glamor_egl_screen_private *glamor_egl =
         glamor_egl_get_screen_private(scrn);
+#ifdef DRI3
+    glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
+#endif
 
     glamor_egl->saved_close_screen = screen->CloseScreen;
     screen->CloseScreen = glamor_egl_close_screen;
@@ -615,32 +614,29 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
     glamor_ctx->make_current = glamor_egl_make_current;
 
 #ifdef DRI3
-    if (glamor_egl->dri3_capable) {
-    	glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
-        /* Tell the core that we have the interfaces for import/export
-         * of pixmaps.
-         */
-        glamor_enable_dri3(screen);
+    /* Tell the core that we have the interfaces for import/export
+     * of pixmaps.
+     */
+    glamor_enable_dri3(screen);
 
-        /* If the driver wants to do its own auth dance (e.g. Xwayland
-         * on pre-3.15 kernels that don't have render nodes and thus
-         * has the wayland compositor as a master), then it needs us
-         * to stay out of the way and let it init DRI3 on its own.
+    /* If the driver wants to do its own auth dance (e.g. Xwayland
+     * on pre-3.15 kernels that don't have render nodes and thus
+     * has the wayland compositor as a master), then it needs us
+     * to stay out of the way and let it init DRI3 on its own.
+     */
+    if (!(glamor_priv->flags & GLAMOR_NO_DRI3)) {
+        /* To do DRI3 device FD generation, we need to open a new fd
+         * to the same device we were handed in originally.
          */
-        if (!(glamor_priv->flags & GLAMOR_NO_DRI3)) {
-            /* To do DRI3 device FD generation, we need to open a new fd
-             * to the same device we were handed in originally.
-             */
 #ifdef GLAMOR_HAS_DRM_NAME_FROM_FD_2
-            glamor_egl->device_path = drmGetDeviceNameFromFd2(glamor_egl->fd);
+        glamor_egl->device_path = drmGetDeviceNameFromFd2(glamor_egl->fd);
 #else
-            glamor_egl->device_path = drmGetDeviceNameFromFd(glamor_egl->fd);
+        glamor_egl->device_path = drmGetDeviceNameFromFd(glamor_egl->fd);
 #endif
 
-            if (!dri3_screen_init(screen, &glamor_dri3_info)) {
-                xf86DrvMsg(scrn->scrnIndex, X_ERROR,
-                           "Failed to initialize DRI3.\n");
-            }
+        if (!dri3_screen_init(screen, &glamor_dri3_info)) {
+            xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                       "Failed to initialize DRI3.\n");
         }
     }
 #endif
@@ -747,6 +743,7 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
 
     GLAMOR_CHECK_EGL_EXTENSION(MESA_drm_image);
     GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_renderbuffer_image);
+    GLAMOR_CHECK_EGL_EXTENSION(KHR_gl_texture_2D_image);
 #ifdef GLAMOR_GLES2
     GLAMOR_CHECK_EGL_EXTENSIONS(KHR_surfaceless_context, KHR_surfaceless_gles2);
 #else
@@ -782,10 +779,12 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
      * (in case of multiple GPUs using glamor)
      */
     lastGLContext = NULL;
-    if (epoxy_has_egl_extension(glamor_egl->display,
-                                "EGL_KHR_gl_texture_2D_image") &&
-        epoxy_has_gl_extension("GL_OES_EGL_image"))
-        glamor_egl->dri3_capable = TRUE;
+
+    if (!epoxy_has_gl_extension("GL_OES_EGL_image")) {
+        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                   "glamor acceleration requires GL_OES_EGL_image\n");
+        goto error;
+    }
 
     xf86DrvMsg(scrn->scrnIndex, X_INFO, "glamor X acceleration enabled on %s\n",
                glGetString(GL_RENDERER));
commit b1b71b7a8b2d2c5d8f4afa67b75d10d4e7cbaa20
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:15 2017 -0700

    glamor_egl: Drop the has_gem flag.
    
    We're using GBM, so we know we've got GEM.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index f68d15311..bf23dc8ed 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -58,7 +58,6 @@ struct glamor_egl_screen_private {
     int fd;
     int cpp;
     struct gbm_device *gbm;
-    int has_gem;
     int gl_context_depth;
     int dri3_capable;
 
@@ -193,19 +192,6 @@ glamor_egl_create_textured_screen_ext(ScreenPtr screen,
     return glamor_egl_create_textured_screen(screen, handle, stride);
 }
 
-static Bool
-glamor_egl_check_has_gem(int fd)
-{
-    struct drm_gem_flink flink;
-
-    flink.handle = 0;
-
-    ioctl(fd, DRM_IOCTL_GEM_FLINK, &flink);
-    if (errno == ENOENT || errno == EINVAL)
-        return TRUE;
-    return FALSE;
-}
-
 static void
 glamor_egl_set_pixmap_image(PixmapPtr pixmap, EGLImageKHR image)
 {
@@ -240,17 +226,13 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride)
     glamor_egl = glamor_egl_get_screen_private(scrn);
 
     glamor_make_current(glamor_priv);
-    if (glamor_egl->has_gem) {
-        if (!glamor_get_flink_name(glamor_egl->fd, handle, &name)) {
-            xf86DrvMsg(scrn->scrnIndex, X_ERROR,
-                       "Couldn't flink pixmap handle\n");
-            glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY);
-            assert(0);
-            return FALSE;
-        }
+    if (!glamor_get_flink_name(glamor_egl->fd, handle, &name)) {
+        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                   "Couldn't flink pixmap handle\n");
+        glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY);
+        assert(0);
+        return FALSE;
     }
-    else
-        name = handle;
 
     image = _glamor_egl_create_image(glamor_egl,
                                      pixmap->drawable.width,
@@ -419,8 +401,7 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
     pixmap->devKind = gbm_bo_get_stride(bo);
 
     if (want_name) {
-        if (glamor_egl->has_gem)
-            glamor_get_name_from_bo(glamor_egl->fd, bo, &fd);
+        glamor_get_name_from_bo(glamor_egl->fd, bo, &fd);
     }
     else {
         fd = gbm_bo_get_fd(bo);
@@ -738,8 +719,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
         goto error;
     }
 
-    glamor_egl->has_gem = glamor_egl_check_has_gem(fd);
-
     if (!eglInitialize
         (glamor_egl->display, &glamor_egl->major, &glamor_egl->minor)) {
         xf86DrvMsg(scrn->scrnIndex, X_ERROR, "eglInitialize() failed\n");
commit 32957d9faeb8b0e968a23d91ed7391c0465dd1b9
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:14 2017 -0700

    modesetting: Drop code for GLAMOR && !GLAMOR_HAS_GBM.
    
    The glamor_egl module that the GLAMOR paths are using is only built if
    GLAMOR_HAS_GBM is true, and there's no plan for implementing the
    module without GBM.  Simplify modesetting's code as a result.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/hw/xfree86/drivers/modesetting/dri2.c b/hw/xfree86/drivers/modesetting/dri2.c
index 8944ef136..bfaea3b84 100644
--- a/hw/xfree86/drivers/modesetting/dri2.c
+++ b/hw/xfree86/drivers/modesetting/dri2.c
@@ -42,7 +42,7 @@
 #include "driver.h"
 #include "dri2.h"
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
 
 enum ms_dri2_frame_event_type {
     MS_DRI2_QUEUE_SWAP,
@@ -1113,4 +1113,4 @@ ms_dri2_close_screen(ScreenPtr screen)
     DRI2CloseScreen(screen);
 }
 
-#endif /* GLAMOR */
+#endif /* GLAMOR_HAS_GBM */
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index a1451fe47..f371198a9 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -593,7 +593,7 @@ redisplay_dirty(ScreenPtr screen, PixmapDirtyUpdatePtr dirty, int *timeout)
     PixmapSyncDirtyHelper(dirty);
 
     if (!screen->isGPU) {
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
         /*
          * When copying from the master framebuffer to the shared pixmap,
          * we must ensure the copy is complete before the slave starts a
@@ -738,7 +738,7 @@ try_enable_glamor(ScrnInfoPtr pScrn)
 
     ms->drmmode.glamor = FALSE;
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     if (ms->drmmode.force_24_32) {
         xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Cannot use glamor with 24bpp packed fb\n");
         return;
@@ -1410,7 +1410,7 @@ msSharePixmapBacking(PixmapPtr ppix, ScreenPtr screen, void **handle)
 static Bool
 msSetSharedPixmapBacking(PixmapPtr ppix, void *fd_handle)
 {
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     ScreenPtr screen = ppix->drawable.pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
     modesettingPtr ms = modesettingPTR(scrn);
@@ -1599,7 +1599,7 @@ ScreenInit(ScreenPtr pScreen, int argc, char **argv)
 
     fbPictureInit(pScreen, NULL, 0);
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     if (ms->drmmode.glamor) {
         if (!glamor_init(pScreen, GLAMOR_USE_EGL_SCREEN)) {
             xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -1666,7 +1666,7 @@ ScreenInit(ScreenPtr pScreen, int argc, char **argv)
 
     xf86DPMSInit(pScreen, xf86DPMSSet, 0);
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     if (ms->drmmode.glamor) {
         XF86VideoAdaptorPtr     glamor_adaptor;
 
@@ -1688,7 +1688,7 @@ ScreenInit(ScreenPtr pScreen, int argc, char **argv)
         return FALSE;
     }
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     if (ms->drmmode.glamor) {
         if (!ms_dri2_screen_init(pScreen)) {
             xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -1789,7 +1789,7 @@ CloseScreen(ScreenPtr pScreen)
     /* Clear mask of assigned crtc's in this generation */
     ms_ent->assigned_crtcs = 0;
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     if (ms->drmmode.glamor) {
         ms_dri2_close_screen(pScreen);
     }
diff --git a/hw/xfree86/drivers/modesetting/driver.h b/hw/xfree86/drivers/modesetting/driver.h
index 25e3a547d..bfdc66c89 100644
--- a/hw/xfree86/drivers/modesetting/driver.h
+++ b/hw/xfree86/drivers/modesetting/driver.h
@@ -33,13 +33,11 @@
 #include <xf86Crtc.h>
 #include <damage.h>
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
 #define GLAMOR_FOR_XORG 1
 #include "glamor.h"
-#ifdef GLAMOR_HAS_GBM
 #include <gbm.h>
 #endif
-#endif
 
 #include "drmmode_display.h"
 #define DRV_ERROR(msg)	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, msg);
@@ -146,7 +144,7 @@ void ms_vblank_close_screen(ScreenPtr screen);
 
 Bool ms_present_screen_init(ScreenPtr screen);
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
 
 typedef void (*ms_pageflip_handler_proc)(modesettingPtr ms,
                                          uint64_t frame,
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
index bbca8ca70..850888c94 100644
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
@@ -496,7 +496,7 @@ drmmode_crtc_dpms(xf86CrtcPtr crtc, int mode)
     drmmode_crtc->dpms_mode = mode;
 }
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
 static PixmapPtr
 create_pixmap_for_fbcon(drmmode_ptr drmmode, ScrnInfoPtr pScrn, int fbcon_id)
 {
@@ -546,7 +546,7 @@ out_free_fb:
 void
 drmmode_copy_fb(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
 {
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
     ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
     PixmapPtr src, dst;
@@ -1895,27 +1895,16 @@ drmmode_clones_init(ScrnInfoPtr scrn, drmmode_ptr drmmode, drmModeResPtr mode_re
 static Bool
 drmmode_set_pixmap_bo(drmmode_ptr drmmode, PixmapPtr pixmap, drmmode_bo *bo)
 {
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     ScrnInfoPtr scrn = drmmode->scrn;
 
     if (!drmmode->glamor)
         return TRUE;
 
-#ifdef GLAMOR_HAS_GBM
     if (!glamor_egl_create_textured_pixmap_from_gbm_bo(pixmap, bo->gbm)) {
         xf86DrvMsg(scrn->scrnIndex, X_ERROR, "Failed");
         return FALSE;
     }
-#else
-    if (!glamor_egl_create_textured_pixmap(pixmap,
-                                           drmmode_bo_get_handle(&drmmode->front_bo),
-                                           scrn->displayWidth *
-                                           scrn->bitsPerPixel / 8)) {
-        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
-                   "glamor_egl_create_textured_pixmap() failed\n");
-        return FALSE;
-    }
-#endif
 #endif
 
     return TRUE;
@@ -1930,7 +1919,7 @@ drmmode_glamor_handle_new_screen_pixmap(drmmode_ptr drmmode)
     if (!drmmode_set_pixmap_bo(drmmode, screen_pixmap, &drmmode->front_bo))
         return FALSE;
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     if (drmmode->glamor)
         glamor_set_screen_pixmap(screen_pixmap, NULL);
 #endif
diff --git a/hw/xfree86/drivers/modesetting/pageflip.c b/hw/xfree86/drivers/modesetting/pageflip.c
index 4dc05ec81..d5fd0625b 100644
--- a/hw/xfree86/drivers/modesetting/pageflip.c
+++ b/hw/xfree86/drivers/modesetting/pageflip.c
@@ -63,7 +63,7 @@ ms_flush_drm_events(ScreenPtr screen)
     return 1;
 }
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
 
 /*
  * Event data for an in progress flip.
diff --git a/hw/xfree86/drivers/modesetting/present.c b/hw/xfree86/drivers/modesetting/present.c
index 55b622cbc..fcff8ee16 100644
--- a/hw/xfree86/drivers/modesetting/present.c
+++ b/hw/xfree86/drivers/modesetting/present.c
@@ -180,7 +180,7 @@ ms_present_abort_vblank(RRCrtcPtr crtc, uint64_t event_id, uint64_t msc)
 static void
 ms_present_flush(WindowPtr window)
 {
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     ScreenPtr screen = window->drawable.pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
     modesettingPtr ms = modesettingPTR(scrn);
@@ -190,7 +190,7 @@ ms_present_flush(WindowPtr window)
 #endif
 }
 
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
 
 /**
  * Callback for the DRM event queue when a flip has completed on all pipes
@@ -255,10 +255,8 @@ ms_present_check_flip(RRCrtcPtr crtc,
         drmmode_crtc_private_ptr drmmode_crtc = config->crtc[i]->driver_private;
 
         /* Don't do pageflipping if CRTCs are rotated. */
-#ifdef GLAMOR_HAS_GBM
         if (drmmode_crtc->rotate_bo.gbm)
             return FALSE;
-#endif
 
         if (ms_crtc_on(config->crtc[i]))
             num_crtcs_on++;
@@ -387,7 +385,7 @@ static present_screen_info_rec ms_present_screen_info = {
     .flush = ms_present_flush,
 
     .capabilities = PresentCapabilityNone,
-#ifdef GLAMOR
+#ifdef GLAMOR_HAS_GBM
     .check_flip = ms_present_check_flip,
     .flip = ms_present_flip,
     .unflip = ms_present_unflip,
commit 5102ea38eb7331aeb1258cd148fd374cf0cbf8f2
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:13 2017 -0700

    glamor_egl: Unifdef GLAMOR_HAS_GBM.
    
    We only build this code with GBM, and supporting non-GBM well would be
    invasive.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index e5dfe657d..f68d15311 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -38,10 +38,8 @@
 #include <xf86drm.h>
 #define EGL_DISPLAY_NO_X_MESA
 
-#ifdef GLAMOR_HAS_GBM
 #include <gbm.h>
 #include <drm_fourcc.h>
-#endif
 
 #include "glamor_egl.h"
 
@@ -59,9 +57,7 @@ struct glamor_egl_screen_private {
     CloseScreenProcPtr CloseScreen;
     int fd;
     int cpp;
-#ifdef GLAMOR_HAS_GBM
     struct gbm_device *gbm;
-#endif
     int has_gem;
     int gl_context_depth;
     int dri3_capable;
@@ -167,13 +163,9 @@ glamor_create_texture_from_image(ScreenPtr screen,
 struct gbm_device *
 glamor_egl_get_gbm_device(ScreenPtr screen)
 {
-#ifdef GLAMOR_HAS_GBM
     struct glamor_egl_screen_private *glamor_egl =
         glamor_egl_get_screen_private(xf86ScreenToScrn(screen));
     return glamor_egl->gbm;
-#else
-    return NULL;
-#endif
 }
 
 Bool
@@ -314,7 +306,6 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap,
     return ret;
 }
 
-#ifdef GLAMOR_HAS_GBM
 static void
 glamor_get_name_from_bo(int gbm_fd, struct gbm_bo *bo, int *name)
 {
@@ -324,12 +315,10 @@ glamor_get_name_from_bo(int gbm_fd, struct gbm_bo *bo, int *name)
     if (!glamor_get_flink_name(gbm_fd, handle.u32, name))
         *name = -1;
 }
-#endif
 
 static Bool
 glamor_make_pixmap_exportable(PixmapPtr pixmap)
 {
-#ifdef GLAMOR_HAS_GBM
     ScreenPtr screen = pixmap->drawable.pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
     struct glamor_egl_screen_private *glamor_egl =
@@ -394,9 +383,6 @@ glamor_make_pixmap_exportable(PixmapPtr pixmap)
     screen->DestroyPixmap(exported);
 
     return TRUE;
-#else
-    return FALSE;
-#endif
 }
 
 struct gbm_bo *
@@ -420,7 +406,6 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
                                  unsigned int tex,
                                  Bool want_name, CARD16 *stride, CARD32 *size)
 {
-#ifdef GLAMOR_HAS_GBM
     struct glamor_egl_screen_private *glamor_egl;
     struct gbm_bo *bo;
     int fd = -1;
@@ -446,9 +431,6 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
     gbm_bo_destroy(bo);
  failure:
     return fd;
-#else
-    return -1;
-#endif
 }
 
 _X_EXPORT Bool
@@ -458,7 +440,6 @@ glamor_back_pixmap_from_fd(PixmapPtr pixmap,
                            CARD16 height,
                            CARD16 stride, CARD8 depth, CARD8 bpp)
 {
-#ifdef GLAMOR_HAS_GBM
     ScreenPtr screen = pixmap->drawable.pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
     struct glamor_egl_screen_private *glamor_egl;
@@ -488,9 +469,6 @@ glamor_back_pixmap_from_fd(PixmapPtr pixmap,
     ret = glamor_egl_create_textured_pixmap_from_gbm_bo(pixmap, bo);
     gbm_bo_destroy(bo);
     return ret;
-#else
-    return FALSE;
-#endif
 }
 
 _X_EXPORT PixmapPtr
@@ -500,7 +478,6 @@ glamor_pixmap_from_fd(ScreenPtr screen,
                       CARD16 height,
                       CARD16 stride, CARD8 depth, CARD8 bpp)
 {
-#ifdef GLAMOR_HAS_GBM
     PixmapPtr pixmap;
     Bool ret;
 
@@ -512,9 +489,6 @@ glamor_pixmap_from_fd(ScreenPtr screen,
         return NULL;
     }
     return pixmap;
-#else
-    return NULL;
-#endif
 }
 
 static Bool
@@ -703,10 +677,8 @@ static void glamor_egl_cleanup(struct glamor_egl_screen_private *glamor_egl)
         lastGLContext = NULL;
         eglTerminate(glamor_egl->display);
     }
-#ifdef GLAMOR_HAS_GBM
     if (glamor_egl->gbm)
         gbm_device_destroy(glamor_egl->gbm);
-#endif
     free(glamor_egl->device_path);
     free(glamor_egl);
 }
@@ -753,7 +725,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
 
     scrn->privates[xf86GlamorEGLPrivateIndex].ptr = glamor_egl;
     glamor_egl->fd = fd;
-#ifdef GLAMOR_HAS_GBM
     glamor_egl->gbm = gbm_create_device(glamor_egl->fd);
     if (glamor_egl->gbm == NULL) {
         ErrorF("couldn't get display device\n");
@@ -766,9 +737,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
         xf86DrvMsg(scrn->scrnIndex, X_ERROR, "eglGetDisplay() failed\n");
         goto error;
     }
-#else
-    glamor_egl->display = eglGetDisplay((EGLNativeDisplayType) (intptr_t) fd);
-#endif
 
     glamor_egl->has_gem = glamor_egl_check_has_gem(fd);
 
@@ -835,12 +803,10 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
      * (in case of multiple GPUs using glamor)
      */
     lastGLContext = NULL;
-#ifdef GLAMOR_HAS_GBM
     if (epoxy_has_egl_extension(glamor_egl->display,
                                 "EGL_KHR_gl_texture_2D_image") &&
         epoxy_has_gl_extension("GL_OES_EGL_image"))
         glamor_egl->dri3_capable = TRUE;
-#endif
 
     xf86DrvMsg(scrn->scrnIndex, X_INFO, "glamor X acceleration enabled on %s\n",
                glGetString(GL_RENDERER));
commit 5064153c79d8b18767c0ade7635680a2f396f296
Author: Eric Anholt <eric at anholt.net>
Date:   Tue May 16 11:37:12 2017 -0700

    glamor_egl: Print a useful identifying string on initialization.
    
    The EGL version is not used anywhere in the glamor code, so it's not
    interesting.  And when saying that we've started using GL
    acceleration, it's nice to know what GL we're actually using.
    
    Reviewed-by: Adam Jackson <ajax at redhat.com>
    Signed-off-by: Eric Anholt <eric at anholt.net>

diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c
index ca94227cc..e5dfe657d 100644
--- a/glamor/glamor_egl.c
+++ b/glamor/glamor_egl.c
@@ -49,15 +49,6 @@
 #include "glamor_priv.h"
 #include "dri3.h"
 
-static const char glamor_name[] = "glamor";
-
-static void
-glamor_identify(int flags)
-{
-    xf86Msg(X_INFO, "%s: OpenGL accelerated X.org driver based.\n",
-            glamor_name);
-}
-
 struct glamor_egl_screen_private {
     EGLDisplay display;
     EGLContext context;
@@ -737,7 +728,6 @@ Bool
 glamor_egl_init(ScrnInfoPtr scrn, int fd)
 {
     struct glamor_egl_screen_private *glamor_egl;
-    const char *version;
 
     EGLint config_attribs[] = {
 #ifdef GLAMOR_GLES2
@@ -755,7 +745,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
         EGL_NONE
     };
 
-    glamor_identify(0);
     glamor_egl = calloc(sizeof(*glamor_egl), 1);
     if (glamor_egl == NULL)
         return FALSE;
@@ -796,9 +785,6 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
     eglBindAPI(EGL_OPENGL_ES_API);
 #endif
 
-    version = eglQueryString(glamor_egl->display, EGL_VERSION);
-    xf86Msg(X_INFO, "%s: EGL version %s:\n", glamor_name, version);
-
 #define GLAMOR_CHECK_EGL_EXTENSION(EXT)  \
 	if (!epoxy_has_egl_extension(glamor_egl->display, "EGL_" #EXT)) {  \
 		ErrorF("EGL_" #EXT " required.\n");  \
@@ -856,6 +842,9 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
         glamor_egl->dri3_capable = TRUE;
 #endif
 
+    xf86DrvMsg(scrn->scrnIndex, X_INFO, "glamor X acceleration enabled on %s\n",
+               glGetString(GL_RENDERER));
+
     glamor_egl->saved_free_screen = scrn->FreeScreen;
     scrn->FreeScreen = glamor_egl_free_screen;
 #ifdef GLAMOR_GLES2


More information about the xorg-commit mailing list