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

Author: Robert Foss <rf...@kernel.org>
Date:   Thu Nov  9 15:16:46 2023 +0100

egl/surfaceless: Fix EGL_DEVICE_EXT implementation

The native_display checks are incorrect and partially never
executed due to native_display always being NULL.

Fixes: 1efaa858890 ("egl: Fix attrib_list[0] == EGL_NONE check")
Signed-off-by: Robert Foss <rf...@kernel.org>
Reviewed-by: Adam Jackson <a...@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26131>

---

 src/egl/main/egldisplay.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c
index dd4926ce2ab..4eadb8f10aa 100644
--- a/src/egl/main/egldisplay.c
+++ b/src/egl/main/egldisplay.c
@@ -642,6 +642,7 @@ _EGLDisplay *
 _eglGetSurfacelessDisplay(void *native_display, const EGLAttrib *attrib_list)
 {
    _EGLDisplay *dpy;
+   _EGLDevice *dev = NULL;
 
    /* Any native display must be an EGLDeviceEXT we know about */
    if (native_display != NULL) {
@@ -657,8 +658,8 @@ _eglGetSurfacelessDisplay(void *native_display, const 
EGLAttrib *attrib_list)
 
          switch (attrib) {
          case EGL_DEVICE_EXT:
-            if ((native_display && native_display != (void *)value) ||
-                (native_display != _eglLookupDevice(native_display))) {
+            dev = _eglLookupDevice((void *)value);
+            if (!dev) {
                _eglError(EGL_BAD_DEVICE_EXT, "eglGetPlatformDisplay");
                return NULL;
             }
@@ -671,10 +672,9 @@ _eglGetSurfacelessDisplay(void *native_display, const 
EGLAttrib *attrib_list)
       }
    }
 
-   dpy =
-      _eglFindDisplay(_EGL_PLATFORM_SURFACELESS, native_display, attrib_list);
+   dpy = _eglFindDisplay(_EGL_PLATFORM_SURFACELESS, NULL, attrib_list);
    if (dpy) {
-      dpy->Device = native_display;
+      dpy->Device = dev;
    }
 
    return dpy;

Reply via email to