diff --git a/.gitignore b/.gitignore index bfac055..9459583 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ x86_64/ results_mesa/ mesa-*/ +/libclc-*.tar.xz +/meson-*.tar.gz +/spirv-llvm-translator-*.tar.gz +/wayland-protocols-*.tar.xz diff --git a/0001-Revert-egl-add-automatic-zink-fallback-loading-betwe.patch b/0001-Revert-egl-add-automatic-zink-fallback-loading-betwe.patch deleted file mode 100644 index e6217ad..0000000 --- a/0001-Revert-egl-add-automatic-zink-fallback-loading-betwe.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b673271710047acb1976002e4b84d06b7cefd3d7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= -Date: Wed, 17 Jan 2024 13:20:49 +0100 -Subject: [PATCH 1/2] Revert "egl: add automatic zink fallback loading between - hw and sw drivers" - -This reverts commit 8cd44b8843877a2f7d559d123eb3694841f16fdc. ---- - src/egl/main/eglapi.c | 15 ++++----------- - 1 file changed, 4 insertions(+), 11 deletions(-) - -diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c -index d50be23e871..b1a48668b76 100644 ---- a/src/egl/main/eglapi.c -+++ b/src/egl/main/eglapi.c -@@ -695,17 +695,10 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) - if (disp->Options.ForceSoftware) - RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE); - else { -- bool success = false; -- if (!disp->Options.Zink && !getenv("GALLIUM_DRIVER")) { -- disp->Options.Zink = EGL_TRUE; -- success = _eglDriver.Initialize(disp); -- } -- if (!success) { -- disp->Options.Zink = EGL_FALSE; -- disp->Options.ForceSoftware = EGL_TRUE; -- if (!_eglDriver.Initialize(disp)) -- RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE); -- } -+ disp->Options.Zink = EGL_FALSE; -+ disp->Options.ForceSoftware = EGL_TRUE; -+ if (!_eglDriver.Initialize(disp)) -+ RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE); - } - } - --- -2.43.0 - diff --git a/0002-Revert-glx-add-automatic-zink-fallback-loading-betwe.patch b/0002-Revert-glx-add-automatic-zink-fallback-loading-betwe.patch deleted file mode 100644 index dc8452d..0000000 --- a/0002-Revert-glx-add-automatic-zink-fallback-loading-betwe.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 9b9d225931b69532aa1b43abdaf29c826bc47b26 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= -Date: Wed, 17 Jan 2024 13:21:08 +0100 -Subject: [PATCH 2/2] Revert "glx: add automatic zink fallback loading between - hw and sw drivers" - -This reverts commit 7d9ea77b4598e23d4415b529924f1cbdca6e33bd. ---- - src/glx/glxext.c | 33 ++++++++------------------------- - 1 file changed, 8 insertions(+), 25 deletions(-) - -diff --git a/src/glx/glxext.c b/src/glx/glxext.c -index 39d5f08bdcf..5036fd137c1 100644 ---- a/src/glx/glxext.c -+++ b/src/glx/glxext.c -@@ -763,11 +763,10 @@ glx_screen_cleanup(struct glx_screen *psc) - ** If that works then fetch the per screen configs data. - */ - static Bool --AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv, Bool zink) -+AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv) - { - struct glx_screen *psc; - GLint i, screens; -- unsigned screen_count = 0; - - /* - ** First allocate memory for the array of per screen configs. -@@ -804,21 +803,17 @@ AllocAndFetchScreenConfigs(Display * dpy, struct glx_display * priv, Bool zink) - if (psc == NULL) - psc = applegl_create_screen(i, priv); - #else -- if (psc == NULL && !zink) -+ if (psc == NULL) - { - psc = indirect_create_screen(i, priv); - indirect = true; - } - #endif - priv->screens[i] = psc; -- if (psc) -- screen_count++; - - if(indirect) /* Load extensions required only for indirect glx */ - glxSendClientInfo(priv, i); - } -- if (zink && !screen_count) -- return GL_FALSE; - SyncHandle(); - return GL_TRUE; - } -@@ -880,9 +875,9 @@ __glXInitialize(Display * dpy) - #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) - Bool glx_direct = !debug_get_bool_option("LIBGL_ALWAYS_INDIRECT", false); - Bool glx_accel = !debug_get_bool_option("LIBGL_ALWAYS_SOFTWARE", false); -+ Bool zink; - const char *env = getenv("MESA_LOADER_DRIVER_OVERRIDE"); -- Bool zink = env && !strcmp(env, "zink"); -- Bool try_zink = False; -+ zink = env && !strcmp(env, "zink"); - - dpyPriv->drawHash = __glxHashCreate(); - -@@ -904,13 +899,10 @@ __glXInitialize(Display * dpy) - #endif /* HAVE_DRI3 */ - if (!debug_get_bool_option("LIBGL_DRI2_DISABLE", false)) - dpyPriv->dri2Display = dri2CreateDisplay(dpy); -- if (!dpyPriv->dri3Display && !dpyPriv->dri2Display) -- try_zink = !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false) && -- !getenv("GALLIUM_DRIVER"); - } - #endif /* GLX_USE_DRM */ - if (glx_direct) -- dpyPriv->driswDisplay = driswCreateDisplay(dpy, zink | try_zink); -+ dpyPriv->driswDisplay = driswCreateDisplay(dpy, zink); - - #ifdef GLX_USE_WINDOWSGL - if (glx_direct && glx_accel) -@@ -925,18 +917,9 @@ __glXInitialize(Display * dpy) - } - #endif - -- if (!AllocAndFetchScreenConfigs(dpy, dpyPriv, zink | try_zink)) { -- Bool fail = True; -- if (try_zink) { -- free(dpyPriv->screens); -- dpyPriv->driswDisplay->destroyDisplay(dpyPriv->driswDisplay); -- dpyPriv->driswDisplay = driswCreateDisplay(dpy, false); -- fail = !AllocAndFetchScreenConfigs(dpy, dpyPriv, False); -- } -- if (fail) { -- free(dpyPriv); -- return NULL; -- } -+ if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) { -+ free(dpyPriv); -+ return NULL; - } - - glxSendClientInfo(dpyPriv, -1); --- -2.43.0 - diff --git a/mesa-meson-c99.patch b/mesa-meson-c99.patch deleted file mode 100644 index 6cbb053..0000000 --- a/mesa-meson-c99.patch +++ /dev/null @@ -1,42 +0,0 @@ -meson: C type error in strtod_l/strtof_l probe - -Future compilers will fail compilation due to the C type error: - -…/testfile.c: In function 'main': -…/testfile.c:12:30: error: passing argument 2 of 'strtod_l' from incompatible pointer type - 12 | double d = strtod_l(s, end, loc); - | ^~~ - | | - | char * -/usr/include/stdlib.h:416:43: note: expected 'char ** restrict' but argument is of type 'char *' - 416 | char **__restrict __endptr, locale_t __loc) - | ~~~~~~~~~~~~~~~~~~^~~~~~~~ -…/testfile.c:13:29: error: passing argument 2 of 'strtof_l' from incompatible pointer type - 13 | float f = strtof_l(s, end, loc); - | ^~~ - | | - | char * -/usr/include/stdlib.h:420:42: note: expected 'char ** restrict' but argument is of type 'char *' - 420 | char **__restrict __endptr, locale_t __loc) - | ~~~~~~~~~~~~~~~~~~^~~~~~~~ - -This means that the probe no longer tests is objective and always -fails. - -Submitted upstream: - -diff --git a/meson.build b/meson.build -index 35cc5f1cd5fd9079..1a5d2ba492be0b31 100644 ---- a/meson.build -+++ b/meson.build -@@ -1425,8 +1425,8 @@ if cc.links(''' - locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL); - const char *s = "1.0"; - char *end; -- double d = strtod_l(s, end, loc); -- float f = strtof_l(s, end, loc); -+ double d = strtod_l(s, &end, loc); -+ float f = strtof_l(s, &end, loc); - freelocale(loc); - return 0; - }''', diff --git a/mesa.spec b/mesa.spec index 0ce4d6d..3b81278 100644 --- a/mesa.spec +++ b/mesa.spec @@ -2,21 +2,32 @@ %global with_hardware 1 %global with_vulkan_hw 1 %global with_vdpau 1 -%global with_vaapi 1 +%global with_va 1 %if !0%{?rhel} %global with_nine 1 +%global with_nvk %{with vulkan_hw} %global with_omx 1 %global with_opencl 1 %endif %global base_vulkan ,amd %endif +%ifnarch %{ix86} +%if !0%{?rhel} +%global with_teflon 1 +%endif +%endif + %ifarch %{ix86} x86_64 %global with_iris 1 %global with_crocus 1 %global with_vmware 1 %global with_xa 1 -%global platform_vulkan ,intel,intel_hasvk +%global with_intel_clc 1 +%global intel_platform_vulkan ,intel,intel_hasvk +%endif +%ifarch x86_64 +%global with_intel_vk_rt 1 %endif %ifarch %{arm} aarch64 @@ -31,7 +42,7 @@ %global with_panfrost 1 %global with_tegra 1 %global with_xa 1 -%global platform_vulkan ,broadcom,freedreno +%global extra_platform_vulkan ,broadcom,freedreno %endif %ifnarch %{arm} s390x @@ -42,39 +53,67 @@ %global with_radeonsi 1 %endif +%if !0%{?rhel} +%global with_libunwind 1 +%global with_lmsensors 1 +%endif + %ifarch %{valgrind_arches} %bcond_without valgrind %else %bcond_with valgrind %endif -%global vulkan_drivers swrast%{?base_vulkan}%{?platform_vulkan} +%global vulkan_drivers swrast%{?base_vulkan}%{?intel_platform_vulkan}%{?extra_platform_vulkan}%{?with_nvk:,nouveau} Name: mesa Summary: Mesa graphics libraries -%global ver 23.3.3 +%global ver 24.1.0 Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} Release: 1%{?dist} -License: MIT +License: MIT AND BSD-3-Clause AND SGI-B-2.0 URL: http://www.mesa3d.org -Source0: https://mesa.freedesktop.org/archive/%{name}-%{ver}.tar.xz +Source0: https://archive.mesa3d.org/mesa-%{ver}.tar.xz # src/gallium/auxiliary/postprocess/pp_mlaa* have an ... interestingly worded license. # Source1 contains email correspondence clarifying the license terms. # Fedora opts to ignore the optional part of clause 2 and treat that code as 2 clause BSD. Source1: Mesa-MLAA-License-Clarification-Email.txt -Patch10: gnome-shell-glthread-disable.patch -Patch12: radeonsi-turn-off-glthread.patch -Patch13: zink-fix-resizable-bar-detection-logic.patch -Patch14: mesa-meson-c99.patch -# Temporary disabling Zink as a fallback between HW and SW drivers due to -# multiple regression caused by this change during the 23.3.X development cycle. -# Remove these 2 patches if updating to 24.X.X: -Patch15: 0001-Revert-egl-add-automatic-zink-fallback-loading-betwe.patch -Patch16: 0002-Revert-glx-add-automatic-zink-fallback-loading-betwe.patch +# meson >= 1.3.0 is required +%global meson_ver 1.3.0 +Source2: https://github.com/mesonbuild/meson/releases/download/%{meson_ver}/meson-%{meson_ver}.tar.gz -BuildRequires: meson >= 0.45 +# libclc is not available in RHEL 9 but it is required for Intel drivers since +# mesa >= 24.1.0 +%global libclc_version 17.0.6 +Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{libclc_version}/libclc-%{libclc_version}.src.tar.xz +BuildRequires: libedit-devel +BuildRequires: clang-devel >= %{libclc_version} +# Build our own version +# BuildRequires: spirv-llvm-translator-tools + +# spirv-llvm-translator is a dependency of libclc +%global spirv_llvm_trans_ver 17.0.0 +%global spirv_llvm_trans_commit 854179a7451d04bd7fcde0ac200271482bfa8cd2 +%global spirv_llvm_trans_shortcommit %(c=%{spirv_llvm_trans_commit}; echo ${c:0:7}) +Source4: https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/%{spirv_llvm_trans_commit}/spirv-llvm-translator-%{spirv_llvm_trans_shortcommit}.tar.gz +BuildRequires: cmake +BuildRequires: ninja-build +BuildRequires: llvm-static +BuildRequires: spirv-headers-devel +BuildRequires: spirv-tools-devel +BuildRequires: zlib-devel + +# wayland-protocols >= 1.34 is required +%global wayland_protocols_ver 1.34 +Source5: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/%{wayland_protocols_ver}/downloads/wayland-protocols-%{wayland_protocols_ver}.tar.xz +BuildRequires: wayland-devel + +Patch10: gnome-shell-glthread-disable.patch + +# Build our own version but keep the dependency for the RPM macros +BuildRequires: meson BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: gettext @@ -84,12 +123,17 @@ BuildRequires: kernel-headers # We only check for the minimum version of pkgconfig(libdrm) needed so that the # SRPMs for each arch still have the same build dependencies. See: # https://bugzilla.redhat.com/show_bug.cgi?id=1859515 -BuildRequires: pkgconfig(libdrm) >= 2.4.97 +BuildRequires: pkgconfig(libdrm) >= 2.4.119 +%if 0%{?with_libunwind} +BuildRequires: pkgconfig(libunwind) +%endif BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(zlib) >= 1.2.3 +BuildRequires: pkgconfig(libzstd) BuildRequires: pkgconfig(libselinux) BuildRequires: pkgconfig(wayland-scanner) -BuildRequires: pkgconfig(wayland-protocols) >= 1.8 +# Build our own version +# BuildRequires: pkgconfig(wayland-protocols) >= 1.34 BuildRequires: pkgconfig(wayland-client) >= 1.11 BuildRequires: pkgconfig(wayland-server) >= 1.11 BuildRequires: pkgconfig(wayland-egl-backend) >= 3 @@ -113,10 +157,13 @@ BuildRequires: pkgconfig(xcb-randr) BuildRequires: pkgconfig(xrandr) >= 1.3 BuildRequires: bison BuildRequires: flex +%if 0%{?with_lmsensors} +BuildRequires: lm_sensors-devel +%endif %if 0%{?with_vdpau} BuildRequires: pkgconfig(vdpau) >= 1.1 %endif -%if 0%{?with_vaapi} +%if 0%{?with_va} BuildRequires: pkgconfig(libva) >= 0.38.0 %endif %if 0%{?with_omx} @@ -124,16 +171,40 @@ BuildRequires: pkgconfig(libomxil-bellagio) %endif BuildRequires: pkgconfig(libelf) BuildRequires: pkgconfig(libglvnd) >= 1.3.2 -BuildRequires: llvm-devel >= 7.0.0 -%if 0%{?with_opencl} +BuildRequires: llvm-devel >= %{libclc_version} +%if 0%{?with_teflon} +BuildRequires: flatbuffers-devel +BuildRequires: flatbuffers-compiler +BuildRequires: xtensor-devel +%endif +%if 0%{?with_opencl} || 0%{?with_nvk} || 0%{?with_intel_clc} BuildRequires: clang-devel -BuildRequires: pkgconfig(libclc) +# Build our own version +# BuildRequires: pkgconfig(libclc) +# BuildRequires: pkgconfig(LLVMSPIRVLib) +BuildRequires: pkgconfig(SPIRV-Tools) +%endif +%if 0%{?with_opencl} || 0%{?with_nvk} +BuildRequires: bindgen +BuildRequires: rust-packaging +%endif +%if 0%{?with_nvk} +BuildRequires: cbindgen +BuildRequires: (crate(paste) >= 1.0.14 with crate(paste) < 2) +BuildRequires: (crate(proc-macro2) >= 1.0.56 with crate(proc-macro2) < 2) +BuildRequires: (crate(quote) >= 1.0.25 with crate(quote) < 2) +BuildRequires: (crate(syn/clone-impls) >= 2.0.15 with crate(syn/clone-impls) < 3) +BuildRequires: (crate(unicode-ident) >= 1.0.6 with crate(unicode-ident) < 2) %endif %if %{with valgrind} BuildRequires: pkgconfig(valgrind) %endif BuildRequires: python3-devel BuildRequires: python3-mako +%if 0%{?with_intel_clc} +BuildRequires: python3-ply +%endif +BuildRequires: python3-pycparser BuildRequires: vulkan-headers BuildRequires: glslang %if 0%{?with_vulkan_hw} @@ -146,7 +217,6 @@ BuildRequires: pkgconfig(vulkan) %package filesystem Summary: Mesa driver filesystem Provides: mesa-dri-filesystem = %{?epoch:%{epoch}:}%{version}-%{release} -Obsoletes: mesa-dri-filesystem < %{?epoch:%{epoch}:}%{version}-%{release} %description filesystem %{summary}. @@ -155,6 +225,7 @@ Obsoletes: mesa-dri-filesystem < %{?epoch:%{epoch}:}%{version}-%{release} Summary: Mesa libGL runtime libraries Requires: %{name}-libglapi%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: libglvnd-glx%{?_isa} >= 1:1.3.2 +Recommends: %{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %description libGL %{summary}. @@ -173,6 +244,9 @@ Recommends: gl-manpages %package libEGL Summary: Mesa libEGL runtime libraries Requires: libglvnd-egl%{?_isa} >= 1:1.3.2 +Requires: %{name}-libgbm%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}-libglapi%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Recommends: %{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} %description libEGL %{summary}. @@ -191,6 +265,10 @@ Provides: libEGL-devel%{?_isa} %package dri-drivers Summary: Mesa-based DRI drivers Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: %{name}-libglapi%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%if 0%{?with_va} +Recommends: %{name}-va-drivers%{?_isa} +%endif %description dri-drivers %{summary}. @@ -204,6 +282,16 @@ Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{rel %{summary}. %endif +%if 0%{?with_va} +%package va-drivers +Summary: Mesa-based VA-API video acceleration drivers +Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: %{name}-vaapi-drivers < 22.2.0-5 + +%description va-drivers +%{summary}. +%endif + %if 0%{?with_vdpau} %package vdpau-drivers Summary: Mesa-based VDPAU drivers @@ -233,6 +321,11 @@ Requires: %{name}-libOSMesa%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{rele Summary: Mesa gbm runtime library Provides: libgbm Provides: libgbm%{?_isa} +Recommends: %{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +# If mesa-dri-drivers are installed, they must match in version. This is here to prevent using +# older mesa-dri-drivers together with a newer mesa-libgbm and its dependants. +# See https://bugzilla.redhat.com/show_bug.cgi?id=2193135 . +Requires: (%{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} if %{name}-dri-drivers%{?_isa}) %description libgbm %{summary}. @@ -269,6 +362,10 @@ Provides: libxatracker-devel%{?_isa} Summary: Mesa shared glapi Provides: libglapi Provides: libglapi%{?_isa} +# If mesa-dri-drivers are installed, they must match in version. This is here to prevent using +# older mesa-dri-drivers together with a newer mesa-libglapi or its dependants. +# See https://bugzilla.redhat.com/show_bug.cgi?id=2193135 . +Requires: (%{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} if %{name}-dri-drivers%{?_isa}) %description libglapi %{summary}. @@ -292,6 +389,14 @@ Requires: %{name}-libOpenCL%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{rele %{summary}. %endif +%if 0%{?with_teflon} +%package libTeflon +Summary: Mesa TensorFlow Lite delegate + +%description libTeflon +%{summary}. +%endif + %if 0%{?with_nine} %package libd3d Summary: Mesa Direct3D9 state tracker @@ -310,6 +415,7 @@ Requires: %{name}-libd3d%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release %package vulkan-drivers Summary: Mesa Vulkan drivers Requires: vulkan%{_isa} +Obsoletes: mesa-vulkan-devel < %{?epoch:%{epoch}:}%{version}-%{release} %description vulkan-drivers The drivers with support for the Vulkan API. @@ -318,7 +424,87 @@ The drivers with support for the Vulkan API. %autosetup -n %{name}-%{ver} -p1 cp %{SOURCE1} docs/ +# Extract meson +tar -xvf %{SOURCE2} + +# Extract libclc +tar -xvf %{SOURCE3} + +# Extract spirv-llvm-translator +tar -xvf %{SOURCE4} + +# Extract wayland-protocols +tar -xvf %{SOURCE5} + %build +# Build meson +cd meson-%{meson_ver} +%py3_build +%py3_install +%global __meson %{buildroot}%{_bindir}/meson +export PYTHONPATH=%{buildroot}%{python3_sitelib}:%{python3_sitelib} +cd - + +# Build spirv-llvm-translator +cd SPIRV-LLVM-Translator-%{spirv_llvm_trans_commit} +%cmake -GNinja \ + -DLLVM_BUILD_TOOLS=ON \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_RPATH:BOOL=";" \ + -DLLVM_DIR="/usr/lib64/cmake/llvm/" \ +%if 0%{?__isa_bits} == 64 + -DLLVM_LIBDIR_SUFFIX=64 \ +%else + -DLLVM_LIBDIR_SUFFIX= \ +%endif + -DLLVM_EXTERNAL_PROJECTS="SPIRV-Headers" \ + -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR="/usr/include/spirv/" +%cmake_build +%cmake_install +cd - + +export LIBRARY_PATH=%{buildroot}%{_libdir}:$LIBRARY_PATH +export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH +export XDG_DATA_DIRS=%{buildroot}%{_datadir}:$XDG_DATA_DIRS +export CPATH=%{buildroot}%{_includedir}:$CPATH +export PKG_CONFIG_PATH=%{buildroot}%{_libdir}/pkgconfig:%{buildroot}%{_datadir}/pkgconfig:$PKG_CONFIG_PATH +export PATH=%{buildroot}%{_bindir}:$PATH + +# Build libclc +cd libclc-%{libclc_version}.src +export CFLAGS="%{build_cflags} -D__extern_always_inline=inline" +%cmake -GNinja \ + -DCMAKE_INSTALL_DATADIR:PATH=%{_lib} \ + -DLIBCLC_TARGETS_TO_BUILD="spirv-mesa3d-;spirv64-mesa3d-" \ + -DLLVM_SPIRV=%{buildroot}%{_bindir}/llvm-spirv +%cmake_build +%cmake_install +cd - +sed -e "s!libexecdir=!libexecdir=\/%{buildroot}!" -i %{buildroot}%{_libdir}/pkgconfig/libclc.pc + +# Build wayland-protocols +cd wayland-protocols-%{wayland_protocols_ver} +%meson --prefix=%{buildroot} +%meson_build +%meson_install +cd - + +# ensure standard Rust compiler flags are set +export RUSTFLAGS="%build_rustflags" + +%if 0%{?with_nvk} +export MESON_PACKAGE_CACHE_DIR="%{cargo_registry}/" +# So... Meson can't actually find them without tweaks +%define inst_crate_nameversion() %(basename %{cargo_registry}/%{1}-*) +%define rewrite_wrap_file() sed -e "/source.*/d" -e "s/%{1}-.*/%{inst_crate_nameversion %{1}}/" -i subprojects/%{1}.wrap + +%rewrite_wrap_file proc-macro2 +%rewrite_wrap_file quote +%rewrite_wrap_file syn +%rewrite_wrap_file unicode-ident +%rewrite_wrap_file paste +%endif + # We've gotten a report that enabling LTO for mesa breaks some games. See # https://bugzilla.redhat.com/show_bug.cgi?id=1862771 for details. # Disable LTO for now @@ -334,12 +520,15 @@ cp %{SOURCE1} docs/ -Dgallium-drivers=swrast,virgl \ %endif -Dgallium-vdpau=%{?with_vdpau:enabled}%{!?with_vdpau:disabled} \ - -Dgallium-xvmc=disabled \ -Dgallium-omx=%{?with_omx:bellagio}%{!?with_omx:disabled} \ - -Dgallium-va=%{?with_vaapi:enabled}%{!?with_vaapi:disabled} \ + -Dgallium-va=%{?with_va:enabled}%{!?with_va:disabled} \ -Dgallium-xa=%{?with_xa:enabled}%{!?with_xa:disabled} \ -Dgallium-nine=%{?with_nine:true}%{!?with_nine:false} \ + -Dteflon=%{?with_teflon:true}%{!?with_teflon:false} \ -Dgallium-opencl=%{?with_opencl:icd}%{!?with_opencl:disabled} \ +%if 0%{?with_opencl} + -Dgallium-rusticl=true \ +%endif -Dvulkan-drivers=%{?vulkan_drivers} \ -Dvulkan-layers=device-select \ -Dshared-glapi=enabled \ @@ -349,15 +538,23 @@ cp %{SOURCE1} docs/ -Dgbm=enabled \ -Dglx=dri \ -Degl=enabled \ - -Dglvnd=true \ + -Dglvnd=enabled \ +%if 0%{?with_intel_clc} + -Dintel-clc=enabled \ +%endif + -Dintel-rt=%{?with_intel_vk_rt:enabled}%{!?with_intel_vk_rt:disabled} \ -Dmicrosoft-clc=disabled \ -Dllvm=enabled \ -Dshared-llvm=enabled \ -Dvalgrind=%{?with_valgrind:enabled}%{!?with_valgrind:disabled} \ -Dbuild-tests=false \ -Dselinux=true \ +%if !0%{?with_libunwind} -Dlibunwind=disabled \ +%endif +%if !0%{?with_lmsensors} -Dlmsensors=disabled \ +%endif -Dandroid-libbacktrace=disabled \ %ifarch %{ix86} -Dglx-read-only-text=true \ @@ -366,8 +563,37 @@ cp %{SOURCE1} docs/ %meson_build %install +cd meson-%{meson_ver} +%py3_install +%global __meson %{buildroot}%{_bindir}/meson +export PYTHONPATH=%{buildroot}%{python3_sitelib}:%{python3_sitelib} +cd - + %meson_install +# Delete files installed by meson +rm -f %{buildroot}%{_bindir}/meson +rm -rf %{buildroot}%{_mandir}/man1/meson.1* +rm -f %{buildroot}%{_datadir}/polkit-1/actions/com.mesonbuild.install.policy +rm -f %{buildroot}%{_datadir}/bash-completion/completions/meson +rm -f %{buildroot}%{_datadir}/zsh/site-functions/_meson +rm -rf %{buildroot}%{python3_sitelib} + +# Delete files installed by libclc +rm -fr %{buildroot}%{_libdir}/clc +rm -f %{buildroot}%{_libdir}/pkgconfig/libclc.pc + +# Delete files installed by spirv-llvm-translator +rm -f %{buildroot}%{_bindir}/llvm-spirv +rm -fr %{buildroot}%{_includedir}/LLVMSPIRVLib +rm -f %{buildroot}%{_libdir}/libLLVMSPIRVLib.so +rm -f %{buildroot}%{_libdir}/libLLVMSPIRVLib.so.* +rm -f %{buildroot}%{_libdir}/pkgconfig/LLVMSPIRVLib.pc + +# Delete files installed by wayland-protocols +rm -f %{buildroot}%{_datadir}/pkgconfig/wayland-protocols.pc +rm -fr %{buildroot}%{_datadir}/wayland-protocols/ + # libvdpau opens the versioned name, don't bother including the unversioned rm -vf %{buildroot}%{_libdir}/vdpau/*.so # likewise glvnd @@ -410,15 +636,13 @@ popd %{_libdir}/libEGL_mesa.so.0* %files libEGL-devel %dir %{_includedir}/EGL -%{_includedir}/EGL/eglmesaext.h %{_includedir}/EGL/eglext_angle.h +%{_includedir}/EGL/eglmesaext.h -%ldconfig_scriptlets libglapi %files libglapi %{_libdir}/libglapi.so.0 %{_libdir}/libglapi.so.0.* -%ldconfig_scriptlets libOSMesa %files libOSMesa %{_libdir}/libOSMesa.so.8* %files libOSMesa-devel @@ -427,7 +651,6 @@ popd %{_libdir}/libOSMesa.so %{_libdir}/pkgconfig/osmesa.pc -%ldconfig_scriptlets libgbm %files libgbm %{_libdir}/libgbm.so.1 %{_libdir}/libgbm.so.1.* @@ -437,7 +660,6 @@ popd %{_libdir}/pkgconfig/gbm.pc %if 0%{?with_xa} -%ldconfig_scriptlets libxatracker %files libxatracker %if 0%{?with_hardware} %{_libdir}/libxatracker.so.2 @@ -454,13 +676,21 @@ popd %endif %endif +%if 0%{?with_teflon} +%files libTeflon +%{_libdir}/libteflon.so +%endif + %if 0%{?with_opencl} -%ldconfig_scriptlets libOpenCL %files libOpenCL %{_libdir}/libMesaOpenCL.so.* +%{_libdir}/libRusticlOpenCL.so.* %{_sysconfdir}/OpenCL/vendors/mesa.icd +%{_sysconfdir}/OpenCL/vendors/rusticl.icd + %files libOpenCL-devel %{_libdir}/libMesaOpenCL.so +%{_libdir}/libRusticlOpenCL.so %endif %if 0%{?with_nine} @@ -482,11 +712,6 @@ popd %{_libdir}/dri/virtio_gpu_dri.so %if 0%{?with_hardware} -%if !0%{?rhel} -%{_libdir}/dri/radeon_dri.so -%{_libdir}/dri/r200_dri.so -%{_libdir}/dri/nouveau_vieux_dri.so -%endif %if 0%{?with_r300} %{_libdir}/dri/r300_dri.so %endif @@ -504,8 +729,12 @@ popd %{_libdir}/dri/ingenic-drm_dri.so %{_libdir}/dri/imx-drm_dri.so %{_libdir}/dri/imx-lcdif_dri.so +%{_libdir}/dri/kirin_dri.so +%{_libdir}/dri/komeda_dri.so +%{_libdir}/dri/mali-dp_dri.so %{_libdir}/dri/mcde_dri.so %{_libdir}/dri/mxsfb-drm_dri.so +%{_libdir}/dri/rcar-du_dri.so %{_libdir}/dri/stm_dri.so %endif %if 0%{?with_vc4} @@ -529,19 +758,12 @@ popd %endif %if 0%{?with_panfrost} %{_libdir}/dri/panfrost_dri.so +%{_libdir}/dri/panthor_dri.so %endif %{_libdir}/dri/nouveau_dri.so %if 0%{?with_vmware} %{_libdir}/dri/vmwgfx_dri.so %endif -%{_libdir}/dri/nouveau_drv_video.so -%if 0%{?with_r600} -%{_libdir}/dri/r600_drv_video.so -%endif -%if 0%{?with_radeonsi} -%{_libdir}/dri/radeonsi_drv_video.so -%endif -%{_libdir}/dri/virtio_gpu_drv_video.so %endif %if 0%{?with_opencl} %dir %{_libdir}/gallium-pipe @@ -550,24 +772,29 @@ popd %if 0%{?with_kmsro} %{_libdir}/dri/armada-drm_dri.so %{_libdir}/dri/exynos_dri.so +%{_libdir}/dri/gm12u320_dri.so %{_libdir}/dri/hdlcd_dri.so %{_libdir}/dri/hx8357d_dri.so +%{_libdir}/dri/ili9163_dri.so %{_libdir}/dri/ili9225_dri.so %{_libdir}/dri/ili9341_dri.so +%{_libdir}/dri/ili9486_dri.so %{_libdir}/dri/imx-dcss_dri.so -%{_libdir}/dri/kirin_dri.so -%{_libdir}/dri/komeda_dri.so -%{_libdir}/dri/mali-dp_dri.so %{_libdir}/dri/mediatek_dri.so %{_libdir}/dri/meson_dri.so %{_libdir}/dri/mi0283qt_dri.so +%{_libdir}/dri/panel-mipi-dbi_dri.so %{_libdir}/dri/pl111_dri.so -%{_libdir}/dri/rcar-du_dri.so %{_libdir}/dri/repaper_dri.so %{_libdir}/dri/rockchip_dri.so +%{_libdir}/dri/rzg2l-du_dri.so +%{_libdir}/dri/ssd130x_dri.so %{_libdir}/dri/st7586_dri.so %{_libdir}/dri/st7735r_dri.so +%{_libdir}/dri/sti_dri.so %{_libdir}/dri/sun4i-drm_dri.so +%{_libdir}/dri/udl_dri.so +%{_libdir}/dri/zynqmp-dpsub_dri.so %endif %if 0%{?with_vulkan_hw} %{_libdir}/dri/zink_dri.so @@ -577,19 +804,29 @@ popd %files omx-drivers %{_libdir}/bellagio/libomx_mesa.so %endif + +%if 0%{?with_va} +%files va-drivers +%{_libdir}/dri/nouveau_drv_video.so +%if 0%{?with_r600} +%{_libdir}/dri/r600_drv_video.so +%endif +%if 0%{?with_radeonsi} +%{_libdir}/dri/radeonsi_drv_video.so +%endif +%{_libdir}/dri/virtio_gpu_drv_video.so +%endif + %if 0%{?with_vdpau} %files vdpau-drivers %{_libdir}/vdpau/libvdpau_nouveau.so.1* -%{_libdir}/vdpau/libvdpau_virtio_gpu.so.1* -%if 0%{?with_r300} -%{_libdir}/vdpau/libvdpau_r300.so.1* -%endif %if 0%{?with_r600} %{_libdir}/vdpau/libvdpau_r600.so.1* %endif %if 0%{?with_radeonsi} %{_libdir}/vdpau/libvdpau_radeonsi.so.1* %endif +%{_libdir}/vdpau/libvdpau_virtio_gpu.so.1* %endif %files vulkan-drivers @@ -598,9 +835,13 @@ popd %{_libdir}/libVkLayer_MESA_device_select.so %{_datadir}/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json %if 0%{?with_vulkan_hw} -%{_datadir}/drirc.d/00-radv-defaults.conf %{_libdir}/libvulkan_radeon.so +%{_datadir}/drirc.d/00-radv-defaults.conf %{_datadir}/vulkan/icd.d/radeon_icd.*.json +%if 0%{?with_nvk} +%{_libdir}/libvulkan_nouveau.so +%{_datadir}/vulkan/icd.d/nouveau_icd.*.json +%endif %ifarch %{ix86} x86_64 %{_libdir}/libvulkan_intel.so %{_datadir}/vulkan/icd.d/intel_icd.*.json @@ -616,6 +857,9 @@ popd %endif %changelog +* Thu May 30 2024 José Expósito - 24.1.0-1 +- Update to mesa 24.1.0 + * Wed Jan 17 2024 José Expósito - 23.3.3-1 - Update to mesa 23.3.3 diff --git a/radeonsi-turn-off-glthread.patch b/radeonsi-turn-off-glthread.patch deleted file mode 100644 index 94f8a34..0000000 --- a/radeonsi-turn-off-glthread.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up mesa-22.3.3/src/gallium/drivers/radeonsi/driinfo_radeonsi.h.dma mesa-22.3.3/src/gallium/drivers/radeonsi/driinfo_radeonsi.h ---- mesa-22.3.3/src/gallium/drivers/radeonsi/driinfo_radeonsi.h.dma 2023-01-25 06:17:54.993167334 +1000 -+++ mesa-22.3.3/src/gallium/drivers/radeonsi/driinfo_radeonsi.h 2023-01-25 06:17:57.363203425 +1000 -@@ -1,7 +1,6 @@ - // DriConf options specific to radeonsi - DRI_CONF_SECTION_PERFORMANCE - DRI_CONF_ADAPTIVE_SYNC(true) --DRI_CONF_MESA_GLTHREAD_DRIVER(true) - DRI_CONF_SECTION_END - - DRI_CONF_SECTION_DEBUG diff --git a/sources b/sources index 8e37cea..44001bc 100644 --- a/sources +++ b/sources @@ -1 +1,5 @@ -SHA512 (mesa-23.3.3.tar.xz) = bed23e8324b026edd5d2b16a381ec563cf2fa9be9c8fbe8d9fb907cab9d87eef91f493fb9d4e3973d4b679e271d2a85ce48af491585638ab97f087532fc63c30 +SHA512 (libclc-17.0.6.src.tar.xz) = 6165bfa0112fb42756cd0e83a0d3d4406985b1d6db6eed8abb3bee9a74fcc451cc88928b24231493694035c35d9bcd367aa6a4a67da631cb4ee5e7a98037fee3 +SHA512 (mesa-24.1.0.tar.xz) = 4b7ed1940fc812ef4efb55978d3ffe3d0e2ae53d5b57a3baca10a52db2ba5852c5ee7e75c3739bd8d384c80bf1cba970a384250050f01f03bba98f255e12cec5 +SHA512 (meson-1.3.0.tar.gz) = fbcbdd9551ad12b7be84411b96357e01c7c0c38a8e9933093d2e71ed7e12bd4278245798684d389c332eb75dd50c99310affc9acb01cf8bedd45265335083a32 +SHA512 (spirv-llvm-translator-854179a.tar.gz) = 7b8b1f974e10bfe8b9680b5b769fa60fa438b0070d0aee7795597c79999942e44a0629035b7f5bdd0b86e742fa200f8cb9596b60f0f61c9eea919ea8b21d3d6a +SHA512 (wayland-protocols-1.34.tar.xz) = d180eaaf87281dc7adade19070ee8308a5cb3dc2f60cff077960436ad647d3d207eb63fa0b079b7b315109654ad6e6b5e2588bfe859900e67edf8c67b1c3ad20 diff --git a/zink-fix-resizable-bar-detection-logic.patch b/zink-fix-resizable-bar-detection-logic.patch deleted file mode 100644 index 4a5e916..0000000 --- a/zink-fix-resizable-bar-detection-logic.patch +++ /dev/null @@ -1,39 +0,0 @@ -From a077c14f150f1c4f670dce381ac2eb548f1a4ac2 Mon Sep 17 00:00:00 2001 -From: Alessandro Astone -Date: Wed, 10 Jan 2024 17:24:30 +0100 -Subject: [PATCH] zink: Fix resizable BAR detection logic - -This was broken in two ways: -* When looking for the MAX biggest_ram it was actually comparing - a candidate against biggest_vis_ram - -* mem_props.memoryTypes[] should be accessed with the memory type - index as found in heap_map - -Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10341 -Cc: 23.3 -Part-of: ---- - src/gallium/drivers/zink/zink_screen.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c -index 5a6d17cb4fa3..6697d7ab938c 100644 ---- a/src/gallium/drivers/zink/zink_screen.c -+++ b/src/gallium/drivers/zink/zink_screen.c -@@ -3258,10 +3258,10 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev - { - uint64_t biggest_vis_vram = 0; - for (unsigned i = 0; i < screen->heap_count[ZINK_HEAP_DEVICE_LOCAL_VISIBLE]; i++) -- biggest_vis_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[i].heapIndex].size); -+ biggest_vis_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[screen->heap_map[ZINK_HEAP_DEVICE_LOCAL_VISIBLE][i]].heapIndex].size); - uint64_t biggest_vram = 0; - for (unsigned i = 0; i < screen->heap_count[ZINK_HEAP_DEVICE_LOCAL]; i++) -- biggest_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[i].heapIndex].size); -+ biggest_vram = MAX2(biggest_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[screen->heap_map[ZINK_HEAP_DEVICE_LOCAL][i]].heapIndex].size); - /* determine if vis vram is roughly equal to total vram */ - if (biggest_vis_vram > biggest_vram * 0.9) - screen->resizable_bar = true; --- -GitLab -