Hello community,

here is the log from the commit of package xorg-x11-server for openSUSE:Factory 
checked in at 2020-06-08 23:46:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-server.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-server"

Mon Jun  8 23:46:46 2020 rev:382 rq:811380 version:1.20.8+0

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes  
2020-05-08 23:04:03.717704171 +0200
+++ 
/work/SRC/openSUSE:Factory/.xorg-x11-server.new.3606/xorg-x11-server.changes    
    2020-06-08 23:47:25.725993151 +0200
@@ -1,0 +2,6 @@
+Thu Jun  4 10:02:58 UTC 2020 - Stefan Dirsch <[email protected]>
+
+- U_glamor_egl-Reject-OpenGL-2.1-early-on.patch
+  * GLAMOR: no longer bail out for OpenGL drivers < 2.1 (boo#1172321)
+
+-------------------------------------------------------------------

New:
----
  U_glamor_egl-Reject-OpenGL-2.1-early-on.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.W7YSi3/_old  2020-06-08 23:47:28.254000949 +0200
+++ /var/tmp/diff_new_pack.W7YSi3/_new  2020-06-08 23:47:28.258000961 +0200
@@ -248,6 +248,8 @@
 
 Patch1505:      U_xwayland-Allow-passing-a-fd.patch
 
+Patch1600:      U_glamor_egl-Reject-OpenGL-2.1-early-on.patch
+
 %description
 This package contains the X.Org Server.
 
@@ -395,6 +397,7 @@
 %patch1502 -p1
 %patch1503 -p1
 %patch1505 -p1
+%patch1600 -p1
 
 %build
 %define _lto_cflags %{nil}

++++++ U_glamor_egl-Reject-OpenGL-2.1-early-on.patch ++++++
>From 26004df63c25061586a967f3586795a75280acc2 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <[email protected]>
Date: Wed, 25 Dec 2019 18:54:03 +0100
Subject: [PATCH] glamor_egl: Reject OpenGL < 2.1 early on

The Etnaviv driver on GC2000 reports desktop OpenGL 1.3 but also OpenGL ES 2.0.
However, with the modesetting driver, GLES2 never gets a chance:

  [ 11233.393] Require OpenGL version 2.1 or later.
  [ 11233.393] (EE) modeset(0): Failed to initialize glamor at ScreenInit() 
time.
  [ 11233.393] (EE)
  Fatal server error:
  [ 11233.395] (EE) AddScreen/ScreenInit failed for driver 0

Let's reject old desktop GL early on, just like XWayland seems to do.

This is perhaps a slightly bit more complicated that one would expect, since we
need to call eglMakeCurrent() before we query the GL version.

Signed-off-by: Lubomir Rintel <[email protected]>
---
 glamor/glamor_egl.c | 39 ++++++++++++++++++++++++++++-----------
 1 file changed, 28 insertions(+), 11 deletions(-)

Index: xserver-1.20.8+0/glamor/glamor_egl.c
===================================================================
--- xserver-1.20.8+0.orig/glamor/glamor_egl.c
+++ xserver-1.20.8+0/glamor/glamor_egl.c
@@ -985,6 +985,22 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd
                                                    config_attribs);
     }
 
+    if (glamor_egl->context != EGL_NO_CONTEXT) {
+        if (!eglMakeCurrent(glamor_egl->display,
+                            EGL_NO_SURFACE, EGL_NO_SURFACE, 
glamor_egl->context)) {
+            xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                       "Failed to make GL context current\n");
+            goto error;
+        }
+
+        if (epoxy_gl_version() < 21) {
+            xf86DrvMsg(scrn->scrnIndex, X_INFO,
+                       "glamor: Ignoring GL < 2.1, falling back to GLES.\n");
+            eglDestroyContext(glamor_egl->display, glamor_egl->context);
+            glamor_egl->context = EGL_NO_CONTEXT;
+        }
+    }
+
     if (glamor_egl->context == EGL_NO_CONTEXT) {
         static const EGLint config_attribs[] = {
             EGL_CONTEXT_CLIENT_VERSION, 2,
@@ -999,18 +1015,19 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd
         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,
-                        EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) {
-        xf86DrvMsg(scrn->scrnIndex, X_ERROR,
-                   "Failed to make EGL context current\n");
-        goto error;
+        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,
+                            EGL_NO_SURFACE, EGL_NO_SURFACE, 
glamor_egl->context)) {
+            xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+                       "Failed to make GLES2 context current\n");
+            goto error;
+        }
     }
 
     renderer = glGetString(GL_RENDERER);

Reply via email to