ports: add mesa

This commit is contained in:
Matheus
2024-08-21 21:37:19 -03:00
parent dd3bfcf4bd
commit 794d0cfb79
3 changed files with 155 additions and 0 deletions
+127
View File
@@ -0,0 +1,127 @@
diff --git mesa-clean/include/drm-uapi/drm.h mesa-workdir/include/drm-uapi/drm.h
index 4e4f7c2..2e4d3e2 100644
--- mesa-clean/include/drm-uapi/drm.h
+++ mesa-workdir/include/drm-uapi/drm.h
@@ -44,7 +44,7 @@ typedef unsigned int drm_handle_t;
#else /* One of the BSDs */
#include <stdint.h>
-#include <sys/ioccom.h>
+//#include <sys/ioccom.h>
#include <sys/types.h>
typedef int8_t __s8;
typedef uint8_t __u8;
diff --git mesa-clean/meson.build mesa-workdir/meson.build
index 9fb4160..1a1a827 100644
--- mesa-clean/meson.build
+++ mesa-workdir/meson.build
@@ -1040,7 +1040,7 @@ if cc.has_function('fmemopen')
endif
# TODO: this is very incomplete
-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku', 'android', 'managarm'].contains(host_machine.system())
+if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku', 'android', 'managarm', 'astral'].contains(host_machine.system())
pre_args += '-D_GNU_SOURCE'
elif host_machine.system() == 'sunos'
pre_args += '-D__EXTENSIONS__'
diff --git mesa-clean/src/gallium/drivers/llvmpipe/lp_screen.c mesa-workdir/src/gallium/drivers/llvmpipe/lp_screen.c
index 7daa531..6b6dd7b 100644
--- mesa-clean/src/gallium/drivers/llvmpipe/lp_screen.c
+++ mesa-workdir/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -128,7 +128,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
#endif
switch (param) {
-#ifdef HAVE_LINUX_UDMABUF_H
+#if defined(HAVE_LINUX_UDMABUF_H) && defined(__linux__)
case PIPE_CAP_DMABUF:
if (lscreen->udmabuf_fd != -1)
return DRM_PRIME_CAP_IMPORT | DRM_PRIME_CAP_EXPORT;
@@ -1173,7 +1173,7 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
screen->num_threads);
screen->num_threads = MIN2(screen->num_threads, LP_MAX_THREADS);
-#ifdef HAVE_LINUX_UDMABUF_H
+#if defined(HAVE_LINUX_UDMABUF_H) && defined(__linux__)
screen->udmabuf_fd = open("/dev/udmabuf", O_RDWR);
#endif
diff --git mesa-clean/src/gallium/drivers/llvmpipe/lp_texture.c mesa-workdir/src/gallium/drivers/llvmpipe/lp_texture.c
index 2aab5bf..e8f9d69 100644
--- mesa-clean/src/gallium/drivers/llvmpipe/lp_texture.c
+++ mesa-workdir/src/gallium/drivers/llvmpipe/lp_texture.c
@@ -63,6 +63,10 @@
#include "drm-uapi/drm_fourcc.h"
#endif
+#ifdef __astral__
+#undef HAVE_LINUX_UDMABUF_H
+#endif
+
#ifdef HAVE_LINUX_UDMABUF_H
#include <fcntl.h>
#include <sys/mman.h>
diff --git mesa-clean/src/util/detect_os.h mesa-workdir/src/util/detect_os.h
index 86286df..f3a5106 100644
--- mesa-clean/src/util/detect_os.h
+++ mesa-workdir/src/util/detect_os.h
@@ -91,6 +91,11 @@
#define DETECT_OS_POSIX 1
#endif
+#if defined(__astral__)
+#define DETECT_OS_ASTRAL 1
+#define DETECT_OS_POSIX 1
+#endif
+
/*
* Make sure DETECT_OS_* are always defined, so that they can be used with #if
diff --git mesa-clean/src/util/os_misc.c mesa-workdir/src/util/os_misc.c
index f529318..a61cd93 100644
--- mesa-clean/src/util/os_misc.c
+++ mesa-workdir/src/util/os_misc.c
@@ -57,7 +57,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_ASTRAL
# include <unistd.h>
#elif DETECT_OS_OPENBSD || DETECT_OS_FREEBSD
# include <sys/resource.h>
@@ -274,7 +274,7 @@ exit_mutex:
bool
os_get_total_physical_memory(uint64_t *size)
{
-#if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || DETECT_OS_HURD || DETECT_OS_MANAGARM
+#if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS || DETECT_OS_HURD || DETECT_OS_MANAGARM || DETECT_OS_ASTRAL
const long phys_pages = sysconf(_SC_PHYS_PAGES);
const long page_size = sysconf(_SC_PAGE_SIZE);
diff --git mesa-clean/src/util/os_time.c mesa-workdir/src/util/os_time.c
index da8ad7a..001cc3a 100644
--- mesa-clean/src/util/os_time.c
+++ mesa-workdir/src/util/os_time.c
@@ -65,7 +65,7 @@ os_time_get_nano(void)
void
os_time_sleep(int64_t usecs)
{
-#if DETECT_OS_LINUX || DETECT_OS_MANAGARM || DETECT_OS_FUCHSIA
+#if DETECT_OS_LINUX || DETECT_OS_MANAGARM || DETECT_OS_FUCHSIA || DETECT_OS_ASTRAL
struct timespec time;
time.tv_sec = usecs / 1000000;
time.tv_nsec = (usecs % 1000000) * 1000;
diff --git mesa-clean/src/util/u_thread.c mesa-workdir/src/util/u_thread.c
index 255c5f6..a532705 100644
--- mesa-clean/src/util/u_thread.c
+++ mesa-workdir/src/util/u_thread.c
@@ -75,7 +75,7 @@ int u_thread_create(thrd_t *thrd, int (*routine)(void *), void *param)
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_ASTRAL
int ret = pthread_setname_np(pthread_self(), name);
if (ret == ERANGE) {
char buf[16];
+20
View File
@@ -0,0 +1,20 @@
name=mesa
revision=1
from_source=mesa
imagedeps="gcc meson ninja python-mako python-setuptools python-yaml"
hostdeps="xgcc xbinutils pkgconfig automake autoconf util-macros libtool libstdc++-v3"
deps="mlibc llvm libexpat libxcb libx11 libxext zlib"
build() {
cp -rp ${source_dir}/* .
mkdir -p build
cd build
meson --cross-file ${base_dir}/util/crossfile --prefix=${prefix} --buildtype=release -Dplatforms=x11 -Dglx=xlib -Dgallium-drivers=swrast -Dvulkan-drivers= -Dllvm=enabled -Dvalgrind=disabled -Dlibunwind=disabled ..
ninja -j${parallelism}
}
package() {
cd build
DESTDIR=${dest_dir} ninja install
}
+8
View File
@@ -0,0 +1,8 @@
name=mesa
version=24.2.0
source_method=tarball
tarball_url="https://archive.mesa3d.org/mesa-${version}.tar.xz"
tarball_sha512="a585c788801b5a341d356e44d958b148e6e14f6b3d7224e99a92faa2f004bf0cfc90103c5fdc651afb22f805c6f9dc594f9f3f5ecebcea36f6305b3a6ccb9294"
regenerate() {
true
}