From 0c11b748840fd968c77cf3b8d17c4253db7c239b Mon Sep 17 00:00:00 2001 From: Alexander von Gluck Date: Fri, 2 Jan 2026 13:16:59 -0600 Subject: [PATCH] mesa: Add experimental 25.3.3; #8152 * We'll probably split this apart better * Don't remove the ?all yet --- sys-libs/mesa/mesa-25.3.3.recipe | 186 +++++++++++++++++++++ sys-libs/mesa/patches/mesa-25.3.3.patchset | 51 ++++++ 2 files changed, 237 insertions(+) create mode 100644 sys-libs/mesa/mesa-25.3.3.recipe create mode 100644 sys-libs/mesa/patches/mesa-25.3.3.patchset diff --git a/sys-libs/mesa/mesa-25.3.3.recipe b/sys-libs/mesa/mesa-25.3.3.recipe new file mode 100644 index 000000000..2e6669a86 --- /dev/null +++ b/sys-libs/mesa/mesa-25.3.3.recipe @@ -0,0 +1,186 @@ +SUMMARY="Multi-platform GL implementation" +DESCRIPTION="Mesa is an open-source implementation of the OpenGL \ +specification, which documents a system for rendering interactive \ +3D graphics. Mesa fills the role of the Haiku OpenGL kit, \ +providing 3D rendering to Haiku applications." +HOMEPAGE="https://www.mesa3d.org/" +COPYRIGHT="1999-2023 Brian Paul" +LICENSE="MIT" +REVISION="1" +SOURCE_URI="https://mesa.freedesktop.org/archive/mesa-${portVersion}.tar.xz" +CHECKSUM_SHA256="05328b3891c000e6a110a3e7321d8bfbb21631d132bf86bd3d4a8f45c535ef6b" +PATCHES="mesa-$portVersion.patchset" + +ADDITIONAL_FILES="50_mesa.json" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +libVersion=1.0.0 +libVersionCompat="$libVersion compat >= ${libVersion%%.*}" + +# Mesa is tightly coupled to llvm versions +llvmMajor=21 + +PROVIDES=" + mesa$secondaryArchSuffix = $portVersion + lib:libglapi$secondaryArchSuffix = 0.0.0 + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libz$secondaryArchSuffix + lib:libLLVM$secondaryArchSuffix + lib:libexpat$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + " + +PROVIDES_devel=" + mesa${secondaryArchSuffix}_devel = $portVersion + devel:libglapi$secondaryArchSuffix = 0.0.0 + " +REQUIRES_devel=" + mesa$secondaryArchSuffix == $portVersion base + devel:libGL$secondaryArchSuffix + " + +SUMMARY_eglvnd="The Mesa glvnd rendering drivers for Haiku" +DESCRIPTION_eglvnd="This glvnd rendering driver package provides \ +software pipe rendering (with LLVM-bosted performance)." + +PROVIDES_eglvnd=" + mesa${secondaryArchSuffix}_eglvnd = $portVersion + " +REQUIRES_eglvnd=" + mesa$secondaryArchSuffix == $portVersion base + lib:libLLVM$secondaryArchSuffix + " + +SUMMARY_lavapipe="Vulkan software rasteriser driver" +DESCRIPTION_lavapipe="Lavapipe is Mesa's software-based Vulkan 1.2 \ +implementation akin to LLVMpipe for OpenGL." + +PROVIDES_lavapipe=" + mesa${secondaryArchSuffix}_lavapipe = $portVersion + " +REQUIRES_lavapipe=" + lib:libLLVM$secondaryArchSuffix >= $llvmMajor + " +# We require libglvnd_devel for now for clairity since there is no +# libglvnd.so and mesa 22.x provides our devel:libGL +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + libglvnd${secondaryArchSuffix}_devel + devel:libz$secondaryArchSuffix + devel:libLLVM$secondaryArchSuffix >= $llvmMajor + devel:libexpat$secondaryArchSuffix + devel:libvulkan$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + python3.10$secondaryArchSuffix + mako_python310 + pyyaml_python310 + cmd:ninja + cmd:bison + cmd:find + cmd:flex + cmd:glslangValidator + cmd:meson + cmd:git + cmd:llvm_config >= $llvmMajor + cmd:egrep + cmd:gcc$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:pkg_config$secondaryArchSuffix + cmd:which + " + +defineDebugInfoPackage mesa$secondaryArchSuffix \ + "${addOnsDir/mesa$secondaryArchSuffix/mesa${secondaryArchSuffix}_eglvnd}/opengl/egl_vendor.d/libEGL_mesa.so.0" \ + "${addOnsDir/mesa$secondaryArchSuffix/mesa${secondaryArchSuffix}_lavapipe}/vulkan/icd.d/libvulkan_lvp.so" \ + +BUILD() +{ + if [ -n "$secondaryArchSuffix" ]; then + export HAIKU_SECONDARY_ARCH="$effectiveTargetArchitecture" + fi + + mkdir -p build + + # In the future, all we need to do is enable other gallium + # drivers so libEGL_mesa contains other drivers in addition + # to llvm swpipe. + meson build \ + -Degl=enabled -Dglvnd=enabled -Dglx=disabled -Dplatforms=haiku \ + -Dgallium-rusticl=false \ + -Dgallium-drivers=llvmpipe \ + -Dvulkan-drivers=swrast \ + -Dvulkan-icd-dir=$addOnsDir/vulkan/icd.d \ + --buildtype=debugoptimized \ + --prefix=$prefix \ + --libdir=$libDir \ + --includedir=$includeDir/os/opengl + ninja -C build $jobArgs +} + +INSTALL() +{ + ninja -C build install + + # Do a little cleanup + rm -rf $prefix/share + + # Mesa's EGL render driver + mkdir -p $addOnsDir/opengl/egl_vendor.d + mv $libDir/libEGL_mesa.so* "$addOnsDir/opengl/egl_vendor.d/" + + # Vulkan lavapipe driver + mv $libDir/libvulkan_lvp.so \ + "$addOnsDir/vulkan/icd.d" + + # remove stock glvnd json + rm -rf $dataDir/glvnd + # remove dri stuff + rm -rf $dataDir/drirc.d + + rm -rf $libDir/haiku + + # Configure Mesa EGL Vendor Renderer + cp "$portDir/additional-files/50_mesa.json" "$addOnsDir/opengl/egl_vendor.d/" + # Configure vulkan lavapipe render (Fix path) + sed -i "s/\/packages\/mesa-.*\/.self\/lib\/libvulkan_lvp.so/.\/libvulkan_lvp.so/" $addOnsDir/vulkan/icd.d/lvp_icd.x86_64.json + + # Set some nice version info + appVersion=${portVersion//\./ } + setversion "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0.0.0" -app $appVersion -long \ + "Mesa EGL rendering drivers" + setversion "$addOnsDir/vulkan/icd.d/libvulkan_lvp.so" -app $appVersion -long \ + "Vulkan software rasteriser driver" + fixPkgconfig + + # devel package + packageEntries devel \ + $developDir + + # swpipe renderer package + packageEntries eglvnd \ + "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0.0.0" \ + "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0" \ + "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so" \ + "$addOnsDir/opengl/egl_vendor.d/50_mesa.json" + + # lavapipe renderer package + packageEntries lavapipe \ + "$addOnsDir/vulkan/icd.d/libvulkan_lvp.so" \ + "$addOnsDir/vulkan/icd.d/lvp_icd.x86_64.json" + + # Remove empty directories from mesa package + rmdir "$addOnsDir/vulkan/icd.d" + rmdir "$addOnsDir/vulkan" + rmdir "$addOnsDir/opengl/egl_vendor.d" + rmdir "$addOnsDir/opengl" +} + +TEST() +{ + make check +} diff --git a/sys-libs/mesa/patches/mesa-25.3.3.patchset b/sys-libs/mesa/patches/mesa-25.3.3.patchset new file mode 100644 index 000000000..d744e23d3 --- /dev/null +++ b/sys-libs/mesa/patches/mesa-25.3.3.patchset @@ -0,0 +1,51 @@ +From 290fa2558e94d29f8345f66873f05e5692a76ff1 Mon Sep 17 00:00:00 2001 +From: Augustin Cavalier +Date: Fri, 2 Jan 2026 09:42:13 -0600 +Subject: [PATCH 1/2] renderdoc: Add Haiku platform support + +--- + include/renderdoc_app.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/renderdoc_app.h b/include/renderdoc_app.h +index b2d10c5e2d2..debd0c72fdd 100644 +--- a/include/renderdoc_app.h ++++ b/include/renderdoc_app.h +@@ -35,7 +35,7 @@ + + #if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) + #define RENDERDOC_CC __cdecl +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__HAIKU__) + #define RENDERDOC_CC + #elif defined(__APPLE__) + #define RENDERDOC_CC +-- +2.52.0 + +From 69eacf9476d51b31d6933e04bb5e27ef3d261164 Mon Sep 17 00:00:00 2001 +From: Alexander von Gluck +Date: Fri, 2 Jan 2026 10:35:17 -0600 +Subject: [PATCH 2/2] egl/haiku/meson: Include shared libglapi code for + dispatch functions + +--- + src/egl/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/egl/meson.build b/src/egl/meson.build +index b9baa09122c..f9b0e348ad4 100644 +--- a/src/egl/meson.build ++++ b/src/egl/meson.build +@@ -147,7 +147,7 @@ elif with_platform_haiku + incs_for_egl += [inc_mesa] + incs_for_egl += [include_directories('../gallium/frontends/hgl')] + +- link_for_egl += [libmesa, libgallium, libswhgl, libsthgl] ++ link_for_egl += [libmesa, libgallium, libswhgl, libsthgl, libglapi] + deps_for_egl += [cpp.find_library('be'), driver_swrast] + elif with_platform_windows + c_args_for_egl += [ +-- +2.52.0 +