From c85e53cb2a6db308e8827c3c36fdb0d90e85a481 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Fri, 31 May 2024 21:24:21 +0200 Subject: [PATCH] mesa/libdrm: move fd's out of libc's range Move hard coded fd's out of the libc range in order to avoid possible hard to find conflicts. issue #5224 --- repos/libports/lib/mk/mesa.inc | 2 +- repos/libports/ports/mesa.hash | 2 +- repos/libports/src/lib/libdrm/ioctl_iris.cc | 7 +++-- .../src/lib/mesa/etnaviv/platform_etnaviv.c | 2 +- .../libports/src/lib/mesa/include/platform.h | 30 ++++++++++--------- .../src/lib/mesa/iris/platform_iris.c | 2 +- .../src/lib/mesa/lima/platform_lima.c | 2 +- .../src/lib/mesa/patches/loader_fds.patch | 6 ++-- 8 files changed, 28 insertions(+), 25 deletions(-) diff --git a/repos/libports/lib/mk/mesa.inc b/repos/libports/lib/mk/mesa.inc index 7bcf0127e8..33211dcad7 100644 --- a/repos/libports/lib/mk/mesa.inc +++ b/repos/libports/lib/mk/mesa.inc @@ -770,7 +770,7 @@ CC_OPT += -DMAPI_ABI_HEADER=\"glapi/gen/glapi_mapi_tmp.h\" \ -DMAPI_MODE_BRIDGE CC_OPT += -Wno-unused-function -CC_OPT_loader/loader = -DDEFAULT_DRIVER_DIR='"/drivers"' +CC_OPT_loader/loader = -DDEFAULT_DRIVER_DIR='"/drivers"' -include platform.h CC_OPT_compiler/glsl/glsl_lexer = -include "stdint.h" CC_OPT_gallium/auxiliary/pipe-loader/pipe_loader_sw = -DPIPE_SEARCH_DIR='"/pipe"' -DGALLIUM_STATIC_TARGETS=1 CC_OPT_gallium/auxiliary/pipe-loader/pipe_loader = -DGALLIUM_STATIC_TARGETS=1 diff --git a/repos/libports/ports/mesa.hash b/repos/libports/ports/mesa.hash index fff057f156..19666da459 100644 --- a/repos/libports/ports/mesa.hash +++ b/repos/libports/ports/mesa.hash @@ -1 +1 @@ -aa79191d2f974902ddcf8f081ca84955037f33c9 +3aef4a625536591a08a8579caec868abe0115106 diff --git a/repos/libports/src/lib/libdrm/ioctl_iris.cc b/repos/libports/src/lib/libdrm/ioctl_iris.cc index d4f58ae494..be73aa32c6 100644 --- a/repos/libports/src/lib/libdrm/ioctl_iris.cc +++ b/repos/libports/src/lib/libdrm/ioctl_iris.cc @@ -1613,9 +1613,10 @@ extern "C" int genode_drmGetPciDevice(int fd, uint32_t flags, drmDevicePtr devi { if (_call.constructed() == false) { errno = EIO; return -1; } - /* TODO create constant */ - if (fd != 43) { - Genode::error(__func__, " fd is not Genode Iris (43)"); + enum { IRIS_FD = 10043 }; + + if (fd != IRIS_FD) { + Genode::error(__func__, " fd is not Genode Iris (", unsigned(IRIS_FD), ")"); return -ENODEV; } diff --git a/repos/libports/src/lib/mesa/etnaviv/platform_etnaviv.c b/repos/libports/src/lib/mesa/etnaviv/platform_etnaviv.c index d9a8e82121..958e44e475 100644 --- a/repos/libports/src/lib/mesa/etnaviv/platform_etnaviv.c +++ b/repos/libports/src/lib/mesa/etnaviv/platform_etnaviv.c @@ -204,7 +204,7 @@ static EGLBoolean dri2_initialize_genode_etnaviv(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd_render_gpu = 42; + dri2_dpy->fd_render_gpu = ETNAVIV_FD; dri2_dpy->fd_display_gpu = dri2_dpy->fd_render_gpu; dri2_dpy->driver_name = strdup("etnaviv"); diff --git a/repos/libports/src/lib/mesa/include/platform.h b/repos/libports/src/lib/mesa/include/platform.h index 6e61016809..a460778d2d 100644 --- a/repos/libports/src/lib/mesa/include/platform.h +++ b/repos/libports/src/lib/mesa/include/platform.h @@ -21,29 +21,31 @@ extern Genode::Env *genode_env; #include +enum { + ETNAVIV_FD = 10042, + IRIS_FD = 10043, + LIMA_FD = 10044 +}; + struct Genode_egl_window; void genode_blit(void const *src, unsigned src_w, void *dst, unsigned dst_w, int w, int h); void genode_drm_init(); void genode_drm_complete(); -struct _EGLSurface; -struct _EGLConfig; -struct _EGLDisplay; - -_EGLSurface * -dri2_genode_create_window_surface(_EGLDisplay *disp, - _EGLConfig *conf, void *native_window, +EGLSurface * +dri2_genode_create_window_surface(EGLDisplay *disp, + EGLConfig *conf, void *native_window, const EGLint *attrib_list); EGLBoolean -dri2_genode_destroy_surface(_EGLDisplay *disp, _EGLSurface *surf); +dri2_genode_destroy_surface(EGLDisplay *disp, EGLSurface *surf); -_EGLSurface * -dri2_genode_create_pixmap_surface(_EGLDisplay *disp, - _EGLConfig *conf, void *native_window, - const EGLint *attrib_list); +EGLSurface * +dri2_genode_create_pixmap_surface(EGLDisplay *disp, + EGLConfig *conf, void *native_window, + const EGLint *attrib_list); EGLBoolean -dri2_genode_swap_interval(_EGLDisplay *disp, - _EGLSurface *surf, EGLint interval); +dri2_genode_swap_interval(EGLDisplay *disp, + EGLSurface *surf, EGLint interval); #endif diff --git a/repos/libports/src/lib/mesa/iris/platform_iris.c b/repos/libports/src/lib/mesa/iris/platform_iris.c index 79144ba77f..29808c1411 100644 --- a/repos/libports/src/lib/mesa/iris/platform_iris.c +++ b/repos/libports/src/lib/mesa/iris/platform_iris.c @@ -213,7 +213,7 @@ EGLBoolean dri2_initialize_genode_backend(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd_render_gpu = 43; + dri2_dpy->fd_render_gpu = IRIS_FD; dri2_dpy->fd_display_gpu = dri2_dpy->fd_render_gpu; dri2_dpy->driver_name = strdup("iris"); diff --git a/repos/libports/src/lib/mesa/lima/platform_lima.c b/repos/libports/src/lib/mesa/lima/platform_lima.c index 0136171ba9..823074752f 100644 --- a/repos/libports/src/lib/mesa/lima/platform_lima.c +++ b/repos/libports/src/lib/mesa/lima/platform_lima.c @@ -205,7 +205,7 @@ static EGLBoolean dri2_initialize_genode_lima(_EGLDisplay *disp) if (!dri2_dpy) return _eglError(EGL_BAD_ALLOC, "eglInitialize"); - dri2_dpy->fd_render_gpu = 44; + dri2_dpy->fd_render_gpu = LIMA_FD; dri2_dpy->fd_display_gpu = dri2_dpy->fd_render_gpu; dri2_dpy->driver_name = strdup("lima"); diff --git a/repos/libports/src/lib/mesa/patches/loader_fds.patch b/repos/libports/src/lib/mesa/patches/loader_fds.patch index b7c4dcfddd..6a1ba61284 100644 --- a/repos/libports/src/lib/mesa/patches/loader_fds.patch +++ b/repos/libports/src/lib/mesa/patches/loader_fds.patch @@ -6,13 +6,13 @@ index bf90afe..3cce4ce 100644 { char *driver; -+ if (fd == 42) { ++ if (fd == ETNAVIV_FD) { + return strdup("etnaviv"); + } -+ if (fd == 43) { ++ if (fd == IRIS_FD) { + return strdup("iris"); + } -+ if (fd == 44) { ++ if (fd == LIMA_FD) { + return strdup("lima"); + } +