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);
}