This required bringing back osmesa code from 25.0.7 which was the last version where it was supported. Seems to work fine though
173 lines
6.0 KiB
Diff
173 lines
6.0 KiB
Diff
diff -ruN mesa-26.1.4/include/c99_alloca.h mesa-26.1.4-banan_os/include/c99_alloca.h
|
|
--- mesa-26.1.4/include/c99_alloca.h 2026-07-01 17:16:13.000000000 +0300
|
|
+++ mesa-26.1.4-banan_os/include/c99_alloca.h 2026-07-05 12:36:39.805616590 +0300
|
|
@@ -35,7 +35,7 @@
|
|
|
|
# define alloca _alloca
|
|
|
|
-#elif defined(__sun) || defined(__CYGWIN__)
|
|
+#elif defined(__sun) || defined(__CYGWIN__) || defined(__banan_os__)
|
|
|
|
# include <alloca.h>
|
|
|
|
diff -ruN mesa-26.1.4/include/drm-uapi/drm.h mesa-26.1.4-banan_os/include/drm-uapi/drm.h
|
|
--- mesa-26.1.4/include/drm-uapi/drm.h 2026-07-01 17:16:13.000000000 +0300
|
|
+++ mesa-26.1.4-banan_os/include/drm-uapi/drm.h 2026-07-05 12:36:39.797829778 +0300
|
|
@@ -47,6 +47,41 @@
|
|
#include <sys/types.h>
|
|
#if defined(__GNU__)
|
|
#include <sys/ioctl.h>
|
|
+#elif defined(__banan_os__)
|
|
+#define _IOC_NRBITS 8
|
|
+#define _IOC_TYPEBITS 8
|
|
+#define _IOC_SIZEBITS 14
|
|
+#define _IOC_DIRBITS 2
|
|
+
|
|
+#define _IOC_NRMASK ((1 << _IOC_NRBITS ) - 1)
|
|
+#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS) - 1)
|
|
+#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS) - 1)
|
|
+#define _IOC_DIRMASK ((1 << _IOC_DIRBITS ) - 1)
|
|
+
|
|
+#define _IOC_NRSHIFT 0
|
|
+#define _IOC_TYPESHIFT (_IOC_NRSHIFT + _IOC_NRBITS )
|
|
+#define _IOC_SIZESHIFT (_IOC_TYPESHIFT + _IOC_TYPEBITS)
|
|
+#define _IOC_DIRSHIFT (_IOC_SIZESHIFT + _IOC_SIZEBITS)
|
|
+
|
|
+#define _IOC_NONE 0U
|
|
+#define _IOC_WRITE 1U
|
|
+#define _IOC_READ 2U
|
|
+
|
|
+#define _IOC(dir, type, nr, size) \
|
|
+ (((dir) << _IOC_DIRSHIFT ) | \
|
|
+ ((size) << _IOC_SIZESHIFT) | \
|
|
+ ((type) << _IOC_TYPESHIFT) | \
|
|
+ ((nr) << _IOC_NRSHIFT ))
|
|
+
|
|
+#define _IO(type, nr) _IOC(_IOC_NONE, (type), (nr), 0)
|
|
+#define _IOR(type, nr, size) _IOC(_IOC_READ, (type), (nr), sizeof(size))
|
|
+#define _IOW(type, nr, size) _IOC(_IOC_WRITE, (type), (nr), sizeof(size))
|
|
+#define _IOWR(type, nr, size) _IOC(_IOC_READ|_IOC_WRITE, (type), (nr), sizeof(size))
|
|
+
|
|
+#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT ) & _IOC_DIRMASK )
|
|
+#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
|
|
+#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT ) & _IOC_NRMASK )
|
|
+#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
|
|
#else
|
|
#include <sys/ioccom.h>
|
|
#endif
|
|
diff -ruN mesa-26.1.4/src/util/detect_os.h mesa-26.1.4-banan_os/src/util/detect_os.h
|
|
--- mesa-26.1.4/src/util/detect_os.h 2026-07-01 17:16:13.000000000 +0300
|
|
+++ mesa-26.1.4-banan_os/src/util/detect_os.h 2026-07-05 12:36:41.342028269 +0300
|
|
@@ -91,6 +91,10 @@
|
|
#define DETECT_OS_POSIX 1
|
|
#endif
|
|
|
|
+#if defined(__banan_os__)
|
|
+#define DETECT_OS_BANANOS 1
|
|
+#define DETECT_OS_POSIX 1
|
|
+#endif
|
|
|
|
/*
|
|
* Make sure DETECT_OS_* are always defined, so that they can be used with #if
|
|
@@ -146,5 +150,8 @@
|
|
#ifndef DETECT_OS_MANAGARM
|
|
#define DETECT_OS_MANAGARM 0
|
|
#endif
|
|
+#ifndef DETECT_OS_BANANOS
|
|
+#define DETECT_OS_BANANOS 0
|
|
+#endif
|
|
|
|
#endif /* DETECT_OS_H */
|
|
diff -ruN mesa-26.1.4/src/util/os_misc.c mesa-26.1.4-banan_os/src/util/os_misc.c
|
|
--- mesa-26.1.4/src/util/os_misc.c 2026-07-01 17:16:13.000000000 +0300
|
|
+++ mesa-26.1.4-banan_os/src/util/os_misc.c 2026-07-05 12:36:41.310790644 +0300
|
|
@@ -58,7 +58,7 @@
|
|
# include <unistd.h>
|
|
# include <log/log.h>
|
|
# include <cutils/properties.h>
|
|
-#elif DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || DETECT_OS_HURD || DETECT_OS_MANAGARM
|
|
+#elif DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || DETECT_OS_HURD || DETECT_OS_MANAGARM || DETECT_OS_BANANOS
|
|
# include <unistd.h>
|
|
#elif DETECT_OS_OPENBSD || DETECT_OS_FREEBSD
|
|
# include <sys/resource.h>
|
|
@@ -470,6 +470,15 @@
|
|
|
|
*size = ((uint64_t)vm_stats.free_count + (uint64_t)vm_stats.inactive_count) * PAGE_SIZE;
|
|
return true;
|
|
+#elif DETECT_OS_BANANOS
|
|
+ const long avphys_pages = sysconf(_SC_AVPHYS_PAGES);
|
|
+ const long page_size = sysconf(_SC_PAGESIZE);
|
|
+
|
|
+ if (avphys_pages <= 0 || page_size <= 0)
|
|
+ return false;
|
|
+
|
|
+ *size = (uint64_t)avphys_pages * (uint64_t)page_size;
|
|
+ return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
diff -ruN mesa-26.1.4/src/util/u_process.c mesa-26.1.4-banan_os/src/util/u_process.c
|
|
--- mesa-26.1.4/src/util/u_process.c 2026-07-01 17:16:13.000000000 +0300
|
|
+++ mesa-26.1.4-banan_os/src/util/u_process.c 2026-07-05 12:36:41.320229357 +0300
|
|
@@ -48,7 +48,7 @@
|
|
#include <sys/sysctl.h>
|
|
#endif
|
|
|
|
-#if DETECT_OS_LINUX
|
|
+#if DETECT_OS_LINUX || DETECT_OS_BANANOS
|
|
#include <fcntl.h>
|
|
#endif
|
|
|
|
@@ -163,6 +163,21 @@
|
|
get_image_info(B_CURRENT_TEAM, &info);
|
|
return strdup(info.name);
|
|
}
|
|
+#elif DETECT_OS_BANANOS
|
|
+static char *
|
|
+__getProgramName()
|
|
+{
|
|
+ char *progname = NULL;
|
|
+ char buf[PATH_MAX];
|
|
+ if (readlink("/proc/self/exe", buf, sizeof(buf)) > 0) {
|
|
+ progname = strrchr(buf, '/');
|
|
+ if (progname)
|
|
+ progname++;
|
|
+ else
|
|
+ progname = buf;
|
|
+ }
|
|
+ return strdup(progname);
|
|
+}
|
|
#else
|
|
#define GET_PROGRAM_NAME_NOT_AVAILABLE
|
|
#endif
|
|
@@ -269,7 +284,7 @@
|
|
cmdline[size - 1] = 0;
|
|
return true;
|
|
}
|
|
-#elif DETECT_OS_LINUX
|
|
+#elif DETECT_OS_LINUX || DETECT_OS_BANANOS
|
|
int f = open("/proc/self/cmdline", O_RDONLY);
|
|
if (f != -1) {
|
|
const int n = read(f, cmdline, size - 1);
|
|
diff -ruN mesa-26.1.4/src/util/u_thread.c mesa-26.1.4-banan_os/src/util/u_thread.c
|
|
--- mesa-26.1.4/src/util/u_thread.c 2026-07-01 17:16:13.000000000 +0300
|
|
+++ mesa-26.1.4-banan_os/src/util/u_thread.c 2026-07-05 12:36:41.338559292 +0300
|
|
@@ -71,7 +71,7 @@
|
|
void u_thread_setname( const char *name )
|
|
{
|
|
#if defined(HAVE_PTHREAD)
|
|
-#if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || defined(__GLIBC__) || DETECT_OS_MANAGARM || DETECT_OS_FUCHSIA
|
|
+#if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || defined(__GLIBC__) || DETECT_OS_MANAGARM || DETECT_OS_FUCHSIA || DETECT_OS_BANANOS
|
|
int ret = pthread_setname_np(pthread_self(), name);
|
|
if (ret == ERANGE) {
|
|
char buf[16];
|
|
@@ -150,7 +150,7 @@
|
|
int64_t
|
|
util_thread_get_time_nano(thrd_t thread)
|
|
{
|
|
-#if defined(HAVE_PTHREAD) && !defined(__APPLE__) && !defined(__HAIKU__) && !defined(__managarm__)
|
|
+#if defined(HAVE_PTHREAD) && !defined(__APPLE__) && !defined(__HAIKU__) && !defined(__managarm__) && !defined(__banan_os__)
|
|
struct timespec ts;
|
|
clockid_t cid;
|
|
|