Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libnvidia-egl-wayland for 
openSUSE:Factory checked in at 2025-12-30 12:01:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libnvidia-egl-wayland (Old)
 and      /work/SRC/openSUSE:Factory/.libnvidia-egl-wayland.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libnvidia-egl-wayland"

Tue Dec 30 12:01:01 2025 rev:22 rq:1324719 version:1.1.21

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/libnvidia-egl-wayland/libnvidia-egl-wayland.changes  
    2025-08-13 16:29:59.851115193 +0200
+++ 
/work/SRC/openSUSE:Factory/.libnvidia-egl-wayland.new.1928/libnvidia-egl-wayland.changes
    2025-12-30 12:01:13.762692068 +0100
@@ -1,0 +2,14 @@
+Mon Dec 22 14:32:14 UTC 2025 - Stefan Dirsch <[email protected]>
+
+- update to version 1.1.21
+  * Fix loading libdrm when wl_drm is not available
+- 0001-egl-wayland-add-FP16-DRM-format.patch
+  * add FP16 DRM format; fixes #174, requires some fixes to the
+    core driver to fully work however.
+
+-------------------------------------------------------------------
+Mon Dec 22 11:41:50 UTC 2025 - Stefan Dirsch <[email protected]>
+
+- fixed build against sle15-sp6/Leap 15.6
+
+-------------------------------------------------------------------

Old:
----
  egl-wayland-1.1.20.tar.gz

New:
----
  0001-egl-wayland-add-FP16-DRM-format.patch
  egl-wayland-1.1.21.tar.gz

----------(New B)----------
  New:  * Fix loading libdrm when wl_drm is not available
- 0001-egl-wayland-add-FP16-DRM-format.patch
  * add FP16 DRM format; fixes #174, requires some fixes to the
----------(New E)----------

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

Other differences:
------------------
++++++ libnvidia-egl-wayland.spec ++++++
--- /var/tmp/diff_new_pack.WaZXvk/_old  2025-12-30 12:01:14.394718021 +0100
+++ /var/tmp/diff_new_pack.WaZXvk/_new  2025-12-30 12:01:14.398718186 +0100
@@ -16,11 +16,16 @@
 #
 
 
+%if 0%{?sle_version} == 150600 && 0%{?is_opensuse}
+%define meson_build /usr/bin/meson compile -C %{_vpath_builddir} 
%{_smp_mflags} --verbose
+%define meson_install /usr/bin/meson install -C %{_vpath_builddir} 
--no-rebuild --destdir=%{buildroot}
+%endif
+
 %define so_ver 1
 %define lname libnvidia-egl-wayland%{so_ver}
 %define rname egl-wayland
 Name:           libnvidia-egl-wayland
-Version:        1.1.20
+Version:        1.1.21
 Release:        0
 Summary:        The EGLStream-based Wayland external platform
 License:        MIT
@@ -28,6 +33,7 @@
 URL:            https://github.com/NVIDIA/egl-wayland
 Source0:        
https://github.com/NVIDIA/egl-wayland/archive/%{version}/%{rname}-%{version}.tar.gz
 Source1:        baselibs.conf
+Patch0:         0001-egl-wayland-add-FP16-DRM-format.patch
 BuildRequires:  gcc-c++
 BuildRequires:  meson >= 0.50
 BuildRequires:  ninja

++++++ 0001-egl-wayland-add-FP16-DRM-format.patch ++++++
>From ad099c694aa2a8f4d68e19dec6ca16092f2081d9 Mon Sep 17 00:00:00 2001
From: Austin Shafer <[email protected]>
Date: Fri, 24 Oct 2025 13:24:12 -0400
Subject: [PATCH] egl-wayland: add FP16 DRM format

Fixes #174, requires some fixes to the core driver to fully work
however.
---
 src/wayland-eglsurface.c | 47 ++++++++++++++++++++++++++++------------
 1 file changed, 33 insertions(+), 14 deletions(-)

diff --git a/src/wayland-eglsurface.c b/src/wayland-eglsurface.c
index e1da47a..c944b62 100644
--- a/src/wayland-eglsurface.c
+++ b/src/wayland-eglsurface.c
@@ -1663,7 +1663,7 @@ WlEglGetFormatSetForDev(WlEglDmaBufFeedback *feedback, 
dev_t dev, uint32_t forma
 static uint32_t ConfigToDrmFourCC(WlEglDisplay* display, EGLConfig config)
 {
     EGLDisplay dpy = display->devDpy->eglDisplay;
-    EGLint r, g, b, a;
+    EGLint r, g, b, a, componentType;
     EGLBoolean ret = EGL_TRUE;
 
     ret &= display->data->egl.getConfigAttrib(dpy,
@@ -1682,6 +1682,10 @@ static uint32_t ConfigToDrmFourCC(WlEglDisplay* display, 
EGLConfig config)
                                               config,
                                               EGL_ALPHA_SIZE,
                                               &a);
+    ret &= display->data->egl.getConfigAttrib(dpy,
+                                              config,
+                                              EGL_COLOR_COMPONENT_TYPE_EXT,
+                                              &componentType);
 
     if (!ret) {
         /*
@@ -1699,19 +1703,34 @@ static uint32_t ConfigToDrmFourCC(WlEglDisplay* 
display, EGLConfig config)
 #define PACK_CONFIG(r_, g_, b_, a_) \
     (((r_) << 24ULL) | ((g_) << 16ULL) | ((b_) << 8ULL) | (a_))
 
-    switch (PACK_CONFIG(r, g, b, a)) {
-    case PACK_CONFIG(8, 8, 8, 0):
-        return DRM_FORMAT_XRGB8888;
-    case PACK_CONFIG(8, 8, 8, 8):
-        return DRM_FORMAT_ARGB8888;
-    case PACK_CONFIG(5, 6, 5, 0):
-        return DRM_FORMAT_RGB565;
-    case PACK_CONFIG(10, 10, 10, 0):
-        return DRM_FORMAT_XRGB2101010;
-    case PACK_CONFIG(10, 10, 10, 2):
-        return DRM_FORMAT_ARGB2101010;
-    default:
-        return 0; /* DRM_FORMAT_INVALID */
+    if (componentType == EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT) {
+        switch (PACK_CONFIG(r, g, b, a)) {
+        case PACK_CONFIG(16, 16, 16, 0):
+            return DRM_FORMAT_XBGR16161616F;
+        case PACK_CONFIG(16, 16, 16, 16):
+            return DRM_FORMAT_ABGR16161616F;
+        default:
+            return 0; /* DRM_FORMAT_INVALID */
+        }
+    } else {
+        switch (PACK_CONFIG(r, g, b, a)) {
+        case PACK_CONFIG(8, 8, 8, 0):
+            return DRM_FORMAT_XRGB8888;
+        case PACK_CONFIG(8, 8, 8, 8):
+            return DRM_FORMAT_ARGB8888;
+        case PACK_CONFIG(5, 6, 5, 0):
+            return DRM_FORMAT_RGB565;
+        case PACK_CONFIG(10, 10, 10, 0):
+            return DRM_FORMAT_XRGB2101010;
+        case PACK_CONFIG(10, 10, 10, 2):
+            return DRM_FORMAT_ARGB2101010;
+        case PACK_CONFIG(16, 16, 16, 0):
+            return DRM_FORMAT_XBGR16161616;
+        case PACK_CONFIG(16, 16, 16, 16):
+            return DRM_FORMAT_ABGR16161616;
+        default:
+            return 0; /* DRM_FORMAT_INVALID */
+        }
     }
 }
 
-- 
2.51.0


++++++ egl-wayland-1.1.20.tar.gz -> egl-wayland-1.1.21.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/egl-wayland-1.1.20/configure.ac 
new/egl-wayland-1.1.21/configure.ac
--- old/egl-wayland-1.1.20/configure.ac 2025-07-07 17:46:55.000000000 +0200
+++ new/egl-wayland-1.1.21/configure.ac 2025-09-22 19:28:45.000000000 +0200
@@ -2,7 +2,7 @@
 
 m4_define([wayland_eglstream_major_version], [1])
 m4_define([wayland_eglstream_minor_version], [1])
-m4_define([wayland_eglstream_micro_version], [20])
+m4_define([wayland_eglstream_micro_version], [21])
 m4_define([wayland_eglstream_version],
           
[wayland_eglstream_major_version.wayland_eglstream_minor_version.wayland_eglstream_micro_version])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/egl-wayland-1.1.20/include/wayland-eglhandle.h 
new/egl-wayland-1.1.21/include/wayland-eglhandle.h
--- old/egl-wayland-1.1.20/include/wayland-eglhandle.h  2025-07-07 
17:46:55.000000000 +0200
+++ new/egl-wayland-1.1.21/include/wayland-eglhandle.h  2025-09-22 
19:28:45.000000000 +0200
@@ -28,6 +28,7 @@
 #include "wayland-external-exports.h"
 #include "wayland-egl-ext.h"
 #include <pthread.h>
+#include <xf86drm.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -137,6 +138,10 @@
 
     /* pthread key for TLS */
     pthread_key_t tlsKey;
+
+    /* libdrm Handle */
+    void *libdrmDlHandle;
+    int (*getDeviceFromDevId)(dev_t dev_id, uint32_t flags, drmDevice 
**device);
 } WlEglPlatformData;
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/egl-wayland-1.1.20/include/wayland-external-exports.h 
new/egl-wayland-1.1.21/include/wayland-external-exports.h
--- old/egl-wayland-1.1.20/include/wayland-external-exports.h   2025-07-07 
17:46:55.000000000 +0200
+++ new/egl-wayland-1.1.21/include/wayland-external-exports.h   2025-09-22 
19:28:45.000000000 +0200
@@ -53,7 +53,7 @@
  #define WAYLAND_EXTERNAL_VERSION_MINOR                      0
 #endif
 
-#define WAYLAND_EXTERNAL_VERSION_MICRO                       20
+#define WAYLAND_EXTERNAL_VERSION_MICRO                       21
 
 
 #define EGL_EXTERNAL_PLATFORM_VERSION_MAJOR WAYLAND_EXTERNAL_VERSION_MAJOR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/egl-wayland-1.1.20/meson.build 
new/egl-wayland-1.1.21/meson.build
--- old/egl-wayland-1.1.20/meson.build  2025-07-07 17:46:55.000000000 +0200
+++ new/egl-wayland-1.1.21/meson.build  2025-09-22 19:28:45.000000000 +0200
@@ -1,5 +1,5 @@
 project('wayland-eglstream', 'c',
-        version : '1.1.20',
+        version : '1.1.21',
         default_options : [
           'buildtype=debugoptimized',
           'c_std=gnu99',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/egl-wayland-1.1.20/src/wayland-egldisplay.c 
new/egl-wayland-1.1.21/src/wayland-egldisplay.c
--- old/egl-wayland-1.1.20/src/wayland-egldisplay.c     2025-07-07 
17:46:55.000000000 +0200
+++ new/egl-wayland-1.1.21/src/wayland-egldisplay.c     2025-09-22 
19:28:45.000000000 +0200
@@ -48,6 +48,8 @@
     struct zwp_linux_dmabuf_v1 *wlDmaBuf;
     dev_t devId;
 
+    WlEglPlatformData *pData;
+
     struct wl_drm *wlDrm;
     char *drm_name;
 } WlServerProtocols;
@@ -55,9 +57,6 @@
 /* TODO: Make global display lists hang off platform data */
 static struct wl_list wlEglDisplayList = 
WL_LIST_INITIALIZER(&wlEglDisplayList);
 
-static bool getDeviceFromDevIdInitialised = false;
-static int (*getDeviceFromDevId)(dev_t dev_id, uint32_t flags, drmDevice 
**device) = NULL;
-
 EGLBoolean wlEglIsWaylandDisplay(void *nativeDpy)
 {
     if (!wlEglMemoryIsReadable(nativeDpy, sizeof (void *))) {
@@ -573,8 +572,8 @@
 
     (void) dmabuf_feedback;
 
-    assert(getDeviceFromDevId);
-    if (getDeviceFromDevId(protocols->devId, 0, &drm_device) == 0) {
+    assert(protocols->pData->getDeviceFromDevId);
+    if (protocols->pData->getDeviceFromDevId(protocols->devId, 0, &drm_device) 
== 0) {
         if (drm_device->available_nodes & (1 << DRM_NODE_RENDER)) {
             free(protocols->drm_name);
             protocols->drm_name = strdup(drm_device->nodes[DRM_NODE_RENDER]);
@@ -826,17 +825,12 @@
         /* use a second roundtrip to handle any wl_drm events triggered by 
binding the protocol */
         wl_display_roundtrip_queue(nativeDpy, queue);
 
-        if (!getDeviceFromDevIdInitialised) {
-            getDeviceFromDevId = dlsym(RTLD_DEFAULT, "drmGetDeviceFromDevId");
-            getDeviceFromDevIdInitialised = true;
-        }
-
         /*
          * if dmabuf feedback is available then use that. This will potentially
          * replace the drm_name provided by wl_drm, assuming the feedback 
provides
          * a valid dev_t.
          */
-        if (protocols->wlDmaBuf && getDeviceFromDevId) {
+        if (protocols->wlDmaBuf && protocols->pData->getDeviceFromDevId) {
             struct zwp_linux_dmabuf_feedback_v1 *default_feedback
                     = 
zwp_linux_dmabuf_v1_get_default_feedback(protocols->wlDmaBuf);
             if (default_feedback) {
@@ -942,7 +936,7 @@
 {
     WlEglPlatformData     *pData           = (WlEglPlatformData *)data;
     WlEglDisplay          *display         = NULL;
-    WlServerProtocols      protocols       = {};
+    WlServerProtocols      protocols       = {.pData = pData};
     EGLint                 numDevices      = 0;
     int                    i               = 0;
     EGLDeviceEXT          *eglDeviceList   = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/egl-wayland-1.1.20/src/wayland-eglhandle.c 
new/egl-wayland-1.1.21/src/wayland-eglhandle.c
--- old/egl-wayland-1.1.20/src/wayland-eglhandle.c      2025-07-07 
17:46:55.000000000 +0200
+++ new/egl-wayland-1.1.21/src/wayland-eglhandle.c      2025-09-22 
19:28:45.000000000 +0200
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <errno.h>
 #include <assert.h>
+#include <dlfcn.h>
 
 WlEglPlatformData*
 wlEglCreatePlatformData(int apiMajor, int apiMinor, const EGLExtDriver *driver)
@@ -151,6 +152,18 @@
     res->callbacks.setError           = driver->setError;
     res->callbacks.streamSwapInterval = driver->streamSwapInterval;
 
+    /*
+     * try to find drmGetDeviceFromDevId. First try the default search method,
+     * but certain application tricks may interfere with this. Most notably
+     * steam's overlay. If we can't find it through default methods fall back
+     * to directly opening libdrm.
+     */
+    res->getDeviceFromDevId = dlsym(RTLD_DEFAULT, "drmGetDeviceFromDevId");
+    if (!res->getDeviceFromDevId) {
+        res->libdrmDlHandle = dlopen("libdrm.so.2", RTLD_LAZY);
+        res->getDeviceFromDevId = dlsym(res->libdrmDlHandle, 
"drmGetDeviceFromDevId");
+    }
+
     return res;
 
 fail:
@@ -160,6 +173,9 @@
 
 void wlEglDestroyPlatformData(WlEglPlatformData *data)
 {
+    if (data->libdrmDlHandle) {
+        dlclose(data->libdrmDlHandle);
+    }
     free(data);
 }
 

Reply via email to