Download raw body.
Disabling DRI_PRIME use in godot/*
Hi,
Godot has shown stdout messages about trying to set DRI_PRIME for a
while. From my prior discussions and testing, we don't have support for
this (yet), and when I tested it once, the laptop with iGPU and dGPU
just hung.
I'm therefore planning to disable the parts of the godot/* ports that
set DRI_PRIME to avoid errors of the kind until we may have working
DRI_PRIME. I will commit this in the next days unless there are
concerns about this.
Index: pack1/Makefile
===================================================================
RCS file: /cvs/ports/games/godot/pack1/Makefile,v
diff -u -p -r1.2 Makefile
--- pack1/Makefile 5 Mar 2026 08:33:59 -0000 1.2
+++ pack1/Makefile 19 Mar 2026 15:04:47 -0000
@@ -6,6 +6,7 @@ COMMENT-sharp= .NET libs for mono/C# mod
VERSION = 3.6.2
PKGNAME = godot3-${VERSION}
SHARPFILES_V = 3.5.2
+REVISION = 0
MULTI_PACKAGES = -main -sharp
Index: pack1/patches/patch-platform_x11_detect_prime_cpp
===================================================================
RCS file: /cvs/ports/games/godot/pack1/patches/patch-platform_x11_detect_prime_cpp,v
diff -u -p -r1.1.1.1 patch-platform_x11_detect_prime_cpp
--- pack1/patches/patch-platform_x11_detect_prime_cpp 4 Mar 2026 05:35:04 -0000 1.1.1.1
+++ pack1/patches/patch-platform_x11_detect_prime_cpp 19 Mar 2026 15:04:47 -0000
@@ -1,9 +1,23 @@
we don't seem to have quick_exit; no big deal
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
Index: platform/x11/detect_prime.cpp
--- platform/x11/detect_prime.cpp.orig
+++ platform/x11/detect_prime.cpp
-@@ -204,9 +204,8 @@ int detect_prime() {
+@@ -181,9 +181,11 @@ int detect_prime() {
+
+ close(fdset[0]);
+
++ /*
+ if (i) {
+ setenv("DRI_PRIME", "1", 1);
+ }
++ */
+ create_context();
+
+ const char *vendor = (const char *)glGetString(GL_VENDOR);
+@@ -204,9 +206,8 @@ int detect_prime() {
}
close(fdset[1]);
Index: pack1/patches/patch-platform_x11_os_x11_cpp
===================================================================
RCS file: /cvs/ports/games/godot/pack1/patches/patch-platform_x11_os_x11_cpp,v
diff -u -p -r1.1.1.1 patch-platform_x11_os_x11_cpp
--- pack1/patches/patch-platform_x11_os_x11_cpp 4 Mar 2026 05:35:04 -0000 1.1.1.1
+++ pack1/patches/patch-platform_x11_os_x11_cpp 19 Mar 2026 15:04:47 -0000
@@ -1,6 +1,8 @@
fix libXrandr library name and load sndio
use OpenBSD joypad class
suspend X11 screensaver for release builds
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
Index: platform/x11/os_x11.cpp
--- platform/x11/os_x11.cpp.orig
@@ -25,7 +27,23 @@ Index: platform/x11/os_x11.cpp
if (!xrandr_handle) {
err = dlerror();
// For some arcane reason, NetBSD now ships libXrandr.so.3 while the rest of the world has libXrandr.so.2...
-@@ -664,9 +668,13 @@ Error OS_X11::initialize(const VideoMode &p_desired, i
+@@ -336,6 +340,7 @@ Error OS_X11::initialize(const VideoMode &p_desired, i
+ }
+ }
+
++ /*
+ if (use_prime == -1) {
+ print_verbose("Detecting GPUs, set DRI_PRIME in the environment to override GPU detection logic.");
+ use_prime = detect_prime();
+@@ -346,6 +351,7 @@ Error OS_X11::initialize(const VideoMode &p_desired, i
+ print_line("Note: Set DRI_PRIME=0 in the environment to disable Godot from using the discrete GPU.");
+ setenv("DRI_PRIME", "1", 1);
+ }
++ */
+ }
+
+ ContextGL_X11::ContextType opengl_api_type = ContextGL_X11::GLES_3_0_COMPATIBLE;
+@@ -664,9 +670,13 @@ Error OS_X11::initialize(const VideoMode &p_desired, i
window_has_focus = true; // Set focus to true at init
#ifdef JOYDEV_ENABLED
@@ -40,7 +58,7 @@ Index: platform/x11/os_x11.cpp
power_manager = memnew(PowerX11);
if (p_desired.layered) {
-@@ -4474,6 +4482,11 @@ void OS_X11::update_real_mouse_position() {
+@@ -4474,6 +4484,11 @@ void OS_X11::update_real_mouse_position() {
}
OS_X11::OS_X11() {
Index: pack2/Makefile
===================================================================
RCS file: /cvs/ports/games/godot/pack2/Makefile,v
diff -u -p -r1.2 Makefile
--- pack2/Makefile 5 Mar 2026 08:33:59 -0000 1.2
+++ pack2/Makefile 19 Mar 2026 15:04:47 -0000
@@ -7,6 +7,7 @@ COMMENT = 2D and 3D game engine
VERSION = 4.4.1
PKGNAME = godot44-${VERSION}
+REVISION = 0
DIST_TUPLE += codeberg godotsteam godotsteam v4.3 godotsteam
WANTLIB += ${COMPILER_LIBCXX} SPIRV X11 Xcursor Xext Xi Xinerama
Index: pack2/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp
===================================================================
RCS file: pack2/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp
diff -N pack2/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pack2/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp 19 Mar 2026 15:04:47 -0000
@@ -0,0 +1,15 @@
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
+
+Index: platform/linuxbsd/wayland/detect_prime_egl.cpp
+--- platform/linuxbsd/wayland/detect_prime_egl.cpp.orig
++++ platform/linuxbsd/wayland/detect_prime_egl.cpp
+@@ -168,7 +168,7 @@ int DetectPrimeEGL::detect_prime(EGLenum p_platform_en
+
+ close(fdset[0]);
+
+- setenv("DRI_PRIME", itos(i).utf8().ptr(), 1);
++ //setenv("DRI_PRIME", itos(i).utf8().ptr(), 1);
+
+ create_context(p_platform_enum);
+
Index: pack2/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp
===================================================================
RCS file: pack2/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp
diff -N pack2/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pack2/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp 19 Mar 2026 15:04:47 -0000
@@ -0,0 +1,20 @@
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
+
+Index: platform/linuxbsd/wayland/display_server_wayland.cpp
+--- platform/linuxbsd/wayland/display_server_wayland.cpp.orig
++++ platform/linuxbsd/wayland/display_server_wayland.cpp
+@@ -1518,11 +1518,13 @@ DisplayServerWayland::DisplayServerWayland(const Strin
+ prime_idx = DetectPrimeEGL::detect_prime(EGL_PLATFORM_WAYLAND_KHR);
+ }
+
++ /*
+ if (prime_idx) {
+ print_line(vformat("Found discrete GPU, setting DRI_PRIME=%d to use it.", prime_idx));
+ print_line("Note: Set DRI_PRIME=0 in the environment to disable Godot from using the discrete GPU.");
+ setenv("DRI_PRIME", itos(prime_idx).utf8().ptr(), 1);
+ }
++ */
+ }
+
+ if (rendering_driver == "opengl3") {
Index: pack2/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp
===================================================================
RCS file: /cvs/ports/games/godot/pack2/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp,v
diff -u -p -r1.1.1.1 patch-platform_linuxbsd_x11_detect_prime_x11_cpp
--- pack2/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp 4 Mar 2026 05:35:04 -0000 1.1.1.1
+++ pack2/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp 19 Mar 2026 15:04:47 -0000
@@ -1,3 +1,6 @@
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
+
Index: platform/linuxbsd/x11/detect_prime_x11.cpp
--- platform/linuxbsd/x11/detect_prime_x11.cpp.orig
+++ platform/linuxbsd/x11/detect_prime_x11.cpp
@@ -10,3 +13,15 @@ Index: platform/linuxbsd/x11/detect_prim
int silent_error_handler(Display *display, XErrorEvent *error) {
static char message[1024];
XGetErrorText(display, error->error_code, message, sizeof(message));
+@@ -192,9 +194,11 @@ int DetectPrimeX11::detect_prime() {
+
+ close(fdset[0]);
+
++ /*
+ if (i) {
+ setenv("DRI_PRIME", "1", 1);
+ }
++ */
+
+ create_context();
+
Index: pack2/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp
===================================================================
RCS file: /cvs/ports/games/godot/pack2/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp,v
diff -u -p -r1.1.1.1 patch-platform_linuxbsd_x11_display_server_x11_cpp
--- pack2/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp 4 Mar 2026 05:35:04 -0000 1.1.1.1
+++ pack2/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp 19 Mar 2026 15:04:47 -0000
@@ -1,4 +1,6 @@
fix libXrandr (double) loading attempt.
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
Index: platform/linuxbsd/x11/display_server_x11.cpp
--- platform/linuxbsd/x11/display_server_x11.cpp.orig
@@ -20,3 +22,17 @@ Index: platform/linuxbsd/x11/display_ser
}
}
+@@ -6855,11 +6855,13 @@ DisplayServerX11::DisplayServerX11(const String &p_ren
+ use_prime = DetectPrimeX11::detect_prime();
+ }
+
++ /*
+ if (use_prime) {
+ print_line("Found discrete GPU, setting DRI_PRIME=1 to use it.");
+ print_line("Note: Set DRI_PRIME=0 in the environment to disable Godot from using the discrete GPU.");
+ setenv("DRI_PRIME", "1", 1);
+ }
++ */
+ }
+ }
+ if (rendering_driver == "opengl3") {
Index: pack3/Makefile
===================================================================
RCS file: /cvs/ports/games/godot/pack3/Makefile,v
diff -u -p -r1.1.1.1 Makefile
--- pack3/Makefile 4 Mar 2026 05:35:04 -0000 1.1.1.1
+++ pack3/Makefile 19 Mar 2026 15:04:47 -0000
@@ -8,6 +8,7 @@ COMMENT-editor= 2D and 3D game engine (w
VERSION = 4.6.1
PKGNAME = godot-${VERSION}
+REVISION = 0
DIST_TUPLE += codeberg godotsteam godotsteam v4.3 godotsteam
MULTI_PACKAGES = -main -editor
Index: pack3/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp
===================================================================
RCS file: pack3/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp
diff -N pack3/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pack3/patches/patch-platform_linuxbsd_wayland_detect_prime_egl_cpp 19 Mar 2026 15:04:47 -0000
@@ -0,0 +1,15 @@
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
+
+Index: platform/linuxbsd/wayland/detect_prime_egl.cpp
+--- platform/linuxbsd/wayland/detect_prime_egl.cpp.orig
++++ platform/linuxbsd/wayland/detect_prime_egl.cpp
+@@ -165,7 +165,7 @@ int DetectPrimeEGL::detect_prime(EGLenum p_platform_en
+
+ close(fdset[0]);
+
+- setenv("DRI_PRIME", itos(i).utf8().ptr(), 1);
++ //setenv("DRI_PRIME", itos(i).utf8().ptr(), 1);
+
+ create_context(p_platform_enum);
+
Index: pack3/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp
===================================================================
RCS file: pack3/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp
diff -N pack3/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pack3/patches/patch-platform_linuxbsd_wayland_display_server_wayland_cpp 19 Mar 2026 15:04:47 -0000
@@ -0,0 +1,20 @@
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
+
+Index: platform/linuxbsd/wayland/display_server_wayland.cpp
+--- platform/linuxbsd/wayland/display_server_wayland.cpp.orig
++++ platform/linuxbsd/wayland/display_server_wayland.cpp
+@@ -2150,11 +2150,13 @@ DisplayServerWayland::DisplayServerWayland(const Strin
+ prime_idx = DetectPrimeEGL::detect_prime(EGL_PLATFORM_WAYLAND_KHR);
+ }
+
++ /*
+ if (prime_idx) {
+ print_line(vformat("Found discrete GPU, setting DRI_PRIME=%d to use it.", prime_idx));
+ print_line("Note: Set DRI_PRIME=0 in the environment to disable Godot from using the discrete GPU.");
+ setenv("DRI_PRIME", itos(prime_idx).utf8().ptr(), 1);
+ }
++ */
+ }
+
+ if (rendering_driver == "opengl3") {
Index: pack3/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp
===================================================================
RCS file: /cvs/ports/games/godot/pack3/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp,v
diff -u -p -r1.1.1.1 patch-platform_linuxbsd_x11_detect_prime_x11_cpp
--- pack3/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp 4 Mar 2026 05:35:04 -0000 1.1.1.1
+++ pack3/patches/patch-platform_linuxbsd_x11_detect_prime_x11_cpp 19 Mar 2026 15:04:47 -0000
@@ -1,3 +1,6 @@
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
+
Index: platform/linuxbsd/x11/detect_prime_x11.cpp
--- platform/linuxbsd/x11/detect_prime_x11.cpp.orig
+++ platform/linuxbsd/x11/detect_prime_x11.cpp
@@ -10,3 +13,15 @@ Index: platform/linuxbsd/x11/detect_prim
int silent_error_handler(Display *display, XErrorEvent *error) {
static char message[1024];
XGetErrorText(display, error->error_code, message, sizeof(message));
+@@ -191,9 +193,11 @@ int DetectPrimeX11::detect_prime() {
+
+ close(fdset[0]);
+
++ /*
+ if (i) {
+ setenv("DRI_PRIME", "1", 1);
+ }
++ */
+
+ create_context();
+
Index: pack3/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp
===================================================================
RCS file: /cvs/ports/games/godot/pack3/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp,v
diff -u -p -r1.1.1.1 patch-platform_linuxbsd_x11_display_server_x11_cpp
--- pack3/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp 4 Mar 2026 05:35:04 -0000 1.1.1.1
+++ pack3/patches/patch-platform_linuxbsd_x11_display_server_x11_cpp 19 Mar 2026 15:04:47 -0000
@@ -1,4 +1,6 @@
fix libXrandr (double) loading attempt.
+we don't support DRI_PRIME as of March 2026 and setting it can lead to crashes
+ in multi-GPU setups
Index: platform/linuxbsd/x11/display_server_x11.cpp
--- platform/linuxbsd/x11/display_server_x11.cpp.orig
@@ -20,3 +22,17 @@ Index: platform/linuxbsd/x11/display_ser
}
}
+@@ -7106,11 +7106,13 @@ DisplayServerX11::DisplayServerX11(const String &p_ren
+ use_prime = DetectPrimeX11::detect_prime();
+ }
+
++ /*
+ if (use_prime) {
+ print_line("Found discrete GPU, setting DRI_PRIME=1 to use it.");
+ print_line("Note: Set DRI_PRIME=0 in the environment to disable Godot from using the discrete GPU.");
+ setenv("DRI_PRIME", "1", 1);
+ }
++ */
+ }
+ }
+ if (rendering_driver == "opengl3") {
Disabling DRI_PRIME use in godot/*