From ed1e8d1ed0e64258ca5d0f24b4e3a9ccac1aade4 Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Sep 30 2024 22:08:34 +0000 Subject: [PATCH 1/5] Add mesa-fex-emu-overlay-%{_arch} packkage On x86_64 and i686 create an erofs file system image with asahi drivers. These overlays are used by fex-emu to avoid updating the large root fs image on every mesa update. --- diff --git a/mesa.spec b/mesa.spec index f455d23..c7946a1 100644 --- a/mesa.spec +++ b/mesa.spec @@ -44,6 +44,9 @@ %global with_kmsro 1 %if !0%{?rhel} %global with_asahi 1 +%ifarch x86_64 %{ix86} +%global with_asahi_fex_emu_overlay 1 +%endif %global asahi_platform_vulkan %{?with_vulkan_hw:,asahi}%{!?with_vulkan_hw:%{nil}} %global with_lima 1 %global with_vc4 1 @@ -79,7 +82,7 @@ Name: mesa Summary: Mesa graphics libraries Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} -Release: %autorelease +Release: %autorelease -b 2 License: MIT AND BSD-3-Clause AND SGI-B-2.0 URL: http://www.mesa3d.org @@ -389,6 +392,18 @@ Obsoletes: mesa-vulkan-devel < %{?epoch:%{epoch}:}%{version}-%{release} %description vulkan-drivers The drivers with support for the Vulkan API. +%if 0%{?with_asahi_fex_emu_overlay} +%package fex-emu-overlay-%{_arch} +Summary: Mesa driver overlay for FEX-emu +BuildArch: noarch +BuildRequires: erofs-utils +Provides: fex-emu-overlay-%{_arch}(mesa) = %{version}-%{release} +Provides: bundled(mesa) = %{version}-%{release} + +%description fex-emu-overlay-%{_arch} +Mesa EGL/GL libraries and Gallium/OpenCL/Vulkan drivers for FEX-emu roots file system images. +%endif + %prep %autosetup -n %{name}-%{git_tag} -p1 cp %{SOURCE1} docs/ @@ -490,6 +505,57 @@ for i in libOSMesa*.so libGL.so ; do done popd +%if 0%{?with_asahi_fex_emu_overlay} +mkdir -p fexov + +%dnl dri ---------------------------- +install -Dpm0755 -s -t "fexov/%{_libdir}/" \ + %{buildroot}%{_libdir}/libgallium-*.so +install -Dpm0755 -s -t "fexov/%{_libdir}/dri/" \ + %{buildroot}%{_libdir}/dri/libdril_dri.so +ln -s libdril_dri.so "fexov/%{_libdir}/dri/apple_dri.so" +ln -s libdril_dri.so "fexov/%{_libdir}/dri/asahi_dri.so" + +%dnl GL/EGL ---------------------------- +install -Dpm0755 -s -t "fexov/%{_libdir}/" \ + %{buildroot}%{_libdir}/libEGL_mesa.so.0.0.0 \ + %{buildroot}%{_libdir}/libGLX_mesa.so.0.0.0 \ + %{buildroot}%{_libdir}/libglapi.so.0.0.0 +ln -s libEGL_mesa.so.0.0.0 "fexov/%{_libdir}/libEGL_mesa.so.0" +ln -s libGLX_mesa.so.0.0.0 "fexov/%{_libdir}/libGLX_mesa.so.0" +ln -s libglapi.so.0.0.0 "fexov/%{_libdir}/libglapi.so.0" +ln -s libGLX_mesa.so.0 "fexov/%{_libdir}/libGLX_system.so.0" + +%dnl OpenCL ---------------------------- +%if 0%{?with_opencl} +%if 0%{?with_rusticl} +install -Dpm0755 -s -t "fexov/%{_libdir}/" \ + %{buildroot}%{_libdir}/libRusticlOpenCL.so.1.0.0 +ln -s libRusticlOpenCL.so.1.0.0 fexov/%{_libdir}/libRusticlOpenCL.so.1 +install -Dpm0644 -t "fexov/%{_sysconfdir}/OpenCL/vendors/" \ + %{buildroot}%{_sysconfdir}/OpenCL/vendors/rusticl.icd +%endif +%endif + +%dnl vulkan ---------------------------- +%if "%{?asahi_platform_vulkan}" != "" +install -Dpm0755 -s -t "fexov/%{_libdir}/" \ + %{buildroot}%{_libdir}/libvulkan_asahi.so \ + %{buildroot}%{_libdir}/libVkLayer_MESA_device_select.so + +install -Dpm0644 -t "fexov/%{_datadir}/vulkan/icd.d/" \ + %{buildroot}%{_datadir}/vulkan/icd.d/asahi_icd.*.json +install -Dpm0644 -t "fexov/%{_datadir}/vulkan/implicit_layer.d/" \ + %{buildroot}%{_datadir}/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json +%endif + +#dnl erofs ---------------------------- +mkfs.erofs -z lz4 mesa-%{_arch}.erofs fexov + +install -Dpm0644 -t %{buildroot}%{_datadir}/fex-emu/overlays/ mesa-%{_arch}.erofs +%endif + + %files filesystem %doc docs/Mesa-MLAA-License-Clarification-Email.txt %dir %{_libdir}/dri @@ -752,5 +818,11 @@ popd %endif %endif +%if 0%{?with_asahi_fex_emu_overlay} +%files fex-emu-overlay-%{_arch} +%{_datadir}/fex-emu/overlays/mesa-%{_arch}.erofs +%doc docs/Mesa-MLAA-License-Clarification-Email.txt +%endif + %changelog %autochangelog From 516df4da1fa87d40864eb736f45b8fc47136353a Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Sep 30 2024 22:08:34 +0000 Subject: [PATCH 2/5] Only add enabled intel dri drivers to the package --- diff --git a/mesa.spec b/mesa.spec index c7946a1..93dfc36 100644 --- a/mesa.spec +++ b/mesa.spec @@ -675,10 +675,16 @@ install -Dpm0644 -t %{buildroot}%{_datadir}/fex-emu/overlays/ mesa-%{_arch}.erof %endif %endif %ifarch %{ix86} x86_64 +%if 0%{?with_crocus} %{_libdir}/dri/crocus_dri.so +%endif +%if 0%{?with_i915} %{_libdir}/dri/i915_dri.so +%endif +%if 0%{?with_iris} %{_libdir}/dri/iris_dri.so %endif +%endif %ifarch aarch64 x86_64 %{ix86} %{_libdir}/dri/ingenic-drm_dri.so %{_libdir}/dri/imx-drm_dri.so From 246ac621779647677ef2cf875400508147986ec9 Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Sep 30 2024 22:08:34 +0000 Subject: [PATCH 3/5] Only add enabled vulkan drivers to the package --- diff --git a/mesa.spec b/mesa.spec index 93dfc36..acf3026 100644 --- a/mesa.spec +++ b/mesa.spec @@ -17,6 +17,7 @@ %global with_rusticl 1 %endif %endif +%global with_base_vulkan 1 %global base_vulkan %{?with_vulkan_hw:,amd}%{!?with_vulkan_hw:%{nil}} %endif @@ -794,24 +795,29 @@ install -Dpm0644 -t %{buildroot}%{_datadir}/fex-emu/overlays/ mesa-%{_arch}.erof %{_libdir}/libVkLayer_MESA_device_select.so %{_datadir}/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json %if 0%{?with_vulkan_hw} +%if "%{?base_vulkan}" != "" %{_libdir}/libvulkan_radeon.so %{_datadir}/drirc.d/00-radv-defaults.conf %{_datadir}/vulkan/icd.d/radeon_icd.*.json +%endif %if 0%{?with_nvk} %{_libdir}/libvulkan_nouveau.so %{_datadir}/vulkan/icd.d/nouveau_icd.*.json %endif %ifarch %{ix86} x86_64 +%if "%{?intel_platform_vulkan}" != "" %{_libdir}/libvulkan_intel.so %{_datadir}/vulkan/icd.d/intel_icd.*.json %{_libdir}/libvulkan_intel_hasvk.so %{_datadir}/vulkan/icd.d/intel_hasvk_icd.*.json %endif +%endif %ifarch aarch64 x86_64 %{ix86} -%if 0%{?with_asahi} +%if "%{?asahi_platform_vulkan}" != "" %{_libdir}/libvulkan_asahi.so %{_datadir}/vulkan/icd.d/asahi_icd.*.json %endif +%if "%{?extra_platform_vulkan}" != "" %{_libdir}/libvulkan_broadcom.so %{_datadir}/vulkan/icd.d/broadcom_icd.*.json %{_libdir}/libvulkan_freedreno.so @@ -823,6 +829,7 @@ install -Dpm0644 -t %{buildroot}%{_datadir}/fex-emu/overlays/ mesa-%{_arch}.erof %{_datadir}/vulkan/icd.d/powervr_mesa_icd.*.json %endif %endif +%endif %if 0%{?with_asahi_fex_emu_overlay} %files fex-emu-overlay-%{_arch} From c064eed16f5994750e8505ab1a5ef2a2a55f9edc Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Sep 30 2024 22:08:34 +0000 Subject: [PATCH 4/5] Add asahi specific minimal build Drops all HW drivers except asahi. --- diff --git a/mesa.spec b/mesa.spec index acf3026..2e6f0c0 100644 --- a/mesa.spec +++ b/mesa.spec @@ -1,3 +1,37 @@ +%dnl optionally do a minimal asahi specific build +%dnl global with_asahi_minimal 1 + +%if 0%{?with_asahi_minimal} +%global with_hardware 1 +%global with_vulkan_hw 1 +%global with_asahi 1 + +%ifarch x86_64 %{ix86} +%global with_asahi_fex_emu_overlay 1 +%endif +%global asahi_platform_vulkan %{?with_vulkan_hw:,asahi}%{!?with_vulkan_hw:%{nil}} + +%global with_opencl 1 +%if (0%{?fedora} && 0%{?fedora} >= 40) +%global with_rusticl 1 +%endif + +%dnl keep kmsro to package all unconditionally created dri driver symlinks +%global with_kmsro 1 + +%dnl build va/vdpau/xa/teflon/nine to avoid issues with vanished packages +%global with_vdpau 1 +%global with_va 1 +%global with_xa 1 +%global with_nine 1 + +%ifnarch %{ix86} +%global with_teflon 1 +%endif + +%else + +%dnl START upstream fedora %ifnarch s390x %global with_hardware 1 %global with_radeonsi 1 @@ -60,6 +94,8 @@ %global with_xa 1 %global extra_platform_vulkan %{?with_vulkan_hw:,broadcom,freedreno,panfrost,imagination-experimental}%{!?with_vulkan_hw:%{nil}} %endif +%endif +%dnl END upstream fedora %if !0%{?rhel} %global with_libunwind 1 From 8c3d674d6c9ba337dee5120d3676ee3249af06d8 Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Sep 30 2024 22:08:34 +0000 Subject: [PATCH 5/5] Bump to mesa-asahi-20240930 --- diff --git a/mesa.spec b/mesa.spec index 2e6f0c0..01ca43f 100644 --- a/mesa.spec +++ b/mesa.spec @@ -110,7 +110,7 @@ %global vulkan_drivers swrast%{?base_vulkan}%{?asahi_platform_vulkan}%{?intel_platform_vulkan}%{?extra_platform_vulkan}%{?with_nvk:,nouveau} -%global asahi_mesa_ver 20240925 +%global asahi_mesa_ver 20240930 %global git_tag asahi-%{asahi_mesa_ver} %global basever 24.3.0 %global ver %{basever}-asahipre%{asahi_mesa_ver} @@ -119,7 +119,7 @@ Name: mesa Summary: Mesa graphics libraries Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} -Release: %autorelease -b 2 +Release: %autorelease License: MIT AND BSD-3-Clause AND SGI-B-2.0 URL: http://www.mesa3d.org diff --git a/rpkg.conf b/rpkg.conf index 724db42..a0c3906 100644 --- a/rpkg.conf +++ b/rpkg.conf @@ -1,2 +1,2 @@ [lookaside] -download_url = https://gitlab.freedesktop.org/asahi/mesa/-/archive/asahi-20240925/%(filename)s +download_url = https://gitlab.freedesktop.org/asahi/mesa/-/archive/asahi-20240930/%(filename)s diff --git a/sources b/sources index 3422353..4c3959f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (mesa-asahi-20240925.tar.gz) = 093e57ba25d7d35aef176d25680ced893369cc644b307a584db2726b9b3fe62f966543e7c8f5ef7db027f5de6daa3adc521d28cd32913423a03b2366a97ed4e4 +SHA512 (mesa-asahi-20240930.tar.gz) = 303f245cb701fdc7abb16c806a306a90a798bc5ab7b48d3dc69354209650a9fd6e09faa3309746990be3182f9bcf73cbdb91fb4fd327c9848d7a574a2b1a5219