$ git diff --patch-with-stat --summary 0e715b8000835fe8ea72d4a6847f8aae39aa2d38..7c5cecab75e53ad6a3d0ea98d0fa78190df05656
.abf.yml | 2 +-
mesa-19.2.0-rc3-32bit-buildfix.patch | 77 ++++++++++++++++++
mesa-19.2.0-rc3-meson-radeon-arm-riscv.patch | 40 +++++++++
mesa.spec | 116 +++++++++++++++++++++------
4 files changed, 209 insertions(+), 26 deletions(-)
create mode 100644 mesa-19.2.0-rc3-32bit-buildfix.patch
create mode 100644 mesa-19.2.0-rc3-meson-radeon-arm-riscv.patch
diff --git a/.abf.yml b/.abf.yml
index 35870cb..fa8ec2c 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
sources:
- mesa-19.1.3.tar.xz: ee3b1b4f9dac391d17b5f5325e41c1d3fcd1e730
+ mesa-19.2.1.tar.xz: 8ba7cb66799d5372923651f193f84d498b35c9a5
diff --git a/mesa-19.2.0-rc3-32bit-buildfix.patch b/mesa-19.2.0-rc3-32bit-buildfix.patch
new file mode 100644
index 0000000..45fff02
--- /dev/null
+++ b/mesa-19.2.0-rc3-32bit-buildfix.patch
@@ -0,0 +1,77 @@
+diff -up mesa-19.2.0-rc3/src/drm-shim/drm_shim.c.1~ mesa-19.2.0-rc3/src/drm-shim/drm_shim.c
+--- mesa-19.2.0-rc3/src/drm-shim/drm_shim.c.1~ 2019-09-11 18:23:36.000000000 +0200
++++ mesa-19.2.0-rc3/src/drm-shim/drm_shim.c 2019-09-13 02:06:52.695041445 +0200
+@@ -528,5 +528,7 @@ mmap(void *addr, size_t length, int prot
+
+ return real_mmap(addr, length, prot, flags, fd, offset);
+ }
++#if __BITS_PER_LONG > 32 /* on 32bit, we get a slightly different version of mmap64 from sys/mman.h */
+ PUBLIC void *mmap64(void*, size_t, int, int, int, off_t)
+ __attribute__((alias("mmap")));
++#endif
+diff -up mesa-19.2.0-rc3/src/intel/tools/aubinator_viewer.cpp.1~ mesa-19.2.0-rc3/src/intel/tools/aubinator_viewer.cpp
+--- mesa-19.2.0-rc3/src/intel/tools/aubinator_viewer.cpp.1~ 2019-09-11 18:23:36.000000000 +0200
++++ mesa-19.2.0-rc3/src/intel/tools/aubinator_viewer.cpp 2019-09-13 02:07:10.640791175 +0200
+@@ -380,7 +380,7 @@ new_shader_window(struct aub_mem *mem, u
+ struct shader_window *window = xtzalloc(*window);
+
+ snprintf(window->base.name, sizeof(window->base.name),
+- "%s (0x%lx)##%p", desc, address, window);
++ "%s (0x%llx)##%p", desc, address, window);
+
+ list_inithead(&window->base.parent_link);
+ window->base.position = ImVec2(-1, -1);
+@@ -443,7 +443,7 @@ new_urb_window(struct aub_viewer_decode_
+ struct urb_window *window = xtzalloc(*window);
+
+ snprintf(window->base.name, sizeof(window->base.name),
+- "URB view (0x%lx)##%p", address, window);
++ "URB view (0x%llx)##%p", address, window);
+
+ list_inithead(&window->base.parent_link);
+ window->base.position = ImVec2(-1, -1);
+@@ -495,7 +495,7 @@ display_edit_window(struct window *win)
+ window->address);
+ ImGui::EndChild();
+ } else {
+- ImGui::Text("Memory view at 0x%lx not available", window->address);
++ ImGui::Text("Memory view at 0x%llx not available", window->address);
+ }
+ }
+
+@@ -515,7 +515,7 @@ new_edit_window(struct aub_mem *mem, uin
+ struct edit_window *window = xtzalloc(*window);
+
+ snprintf(window->base.name, sizeof(window->base.name),
+- "Editing aub at 0x%lx##%p", address, window);
++ "Editing aub at 0x%llx##%p", address, window);
+
+ list_inithead(&window->base.parent_link);
+ window->base.position = ImVec2(-1, -1);
+@@ -577,7 +577,7 @@ display_pml4_level(struct aub_mem *mem,
+ uint64_t entry_virt_addr = table_virt_addr + e * addr_increment;
+ if (!available)
+ continue;
+- ImGui::Text("Entry%03i - phys_addr=0x%lx - virt_addr=0x%lx",
++ ImGui::Text("Entry%03i - phys_addr=0x%llx - virt_addr=0x%llx",
+ e, table[e], entry_virt_addr);
+ }
+ } else {
+@@ -587,7 +587,7 @@ display_pml4_level(struct aub_mem *mem,
+ if (available &&
+ ImGui::TreeNodeEx(&table[e],
+ available ? ImGuiTreeNodeFlags_Framed : 0,
+- "Entry%03i - phys_addr=0x%lx - virt_addr=0x%lx",
++ "Entry%03i - phys_addr=0x%llx - virt_addr=0x%llx",
+ e, table[e], entry_virt_addr)) {
+ display_pml4_level(mem, table[e] & ~0xffful, entry_virt_addr, level -1);
+ ImGui::TreePop();
+@@ -601,7 +601,7 @@ display_pml4_window(struct window *win)
+ {
+ struct pml4_window *window = (struct pml4_window *) win;
+
+- ImGui::Text("pml4: %lx", window->mem->pml4);
++ ImGui::Text("pml4: %llx", window->mem->pml4);
+ ImGui::BeginChild(ImGui::GetID("##block"));
+ display_pml4_level(window->mem, window->mem->pml4, 0, 4);
+ ImGui::EndChild();
diff --git a/mesa-19.2.0-rc3-meson-radeon-arm-riscv.patch b/mesa-19.2.0-rc3-meson-radeon-arm-riscv.patch
new file mode 100644
index 0000000..7a7bf12
--- /dev/null
+++ b/mesa-19.2.0-rc3-meson-radeon-arm-riscv.patch
@@ -0,0 +1,40 @@
+diff -up mesa-19.2.0-rc3/meson.build.2~ mesa-19.2.0-rc3/meson.build
+--- mesa-19.2.0-rc3/meson.build.2~ 2019-09-11 18:23:35.000000000 +0200
++++ mesa-19.2.0-rc3/meson.build 2019-09-13 01:42:07.786526054 +0200
+@@ -125,8 +125,8 @@ if dri_drivers.contains('auto')
+ # TODO: PPC, Sparc
+ if ['x86', 'x86_64'].contains(host_machine.cpu_family())
+ dri_drivers = ['i915', 'i965', 'r100', 'r200', 'nouveau']
+- elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
+- dri_drivers = []
++ elif ['arm', 'aarch64', 'riscv64'].contains(host_machine.cpu_family())
++ dri_drivers = ['r100', 'r200', 'nouveau']
+ else
+ error('Unknown architecture @0@. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.'.format(
+ host_machine.cpu_family()))
+@@ -160,7 +160,13 @@ if gallium_drivers.contains('auto')
+ elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
+ gallium_drivers = [
+ 'kmsro', 'v3d', 'vc4', 'freedreno', 'etnaviv', 'nouveau',
+- 'tegra', 'virgl', 'lima', 'panfrost', 'swrast'
++ 'tegra', 'virgl', 'lima', 'panfrost', 'swrast',
++ 'r300', 'r600', 'radeonsi'
++ ]
++ elif ['riscv64'].contains(host_machine.cpu_family())
++ gallium_drivers = [
++ 'nouveau', 'swrast',
++ 'r300', 'r600', 'radeonsi'
+ ]
+ else
+ error('Unknown architecture @0@. Please pass -Dgallium-drivers to set driver options. Patches gladly accepted to fix this.'.format(
+@@ -215,8 +221,8 @@ if _vulkan_drivers.contains('auto')
+ if system_has_kms_drm
+ if host_machine.cpu_family().startswith('x86')
+ _vulkan_drivers = ['amd', 'intel']
+- elif ['arm', 'aarch64'].contains(host_machine.cpu_family())
+- _vulkan_drivers = []
++ elif ['arm', 'aarch64', 'riscv64'].contains(host_machine.cpu_family())
++ _vulkan_drivers = ['amd']
+ else
+ error('Unknown architecture @0@. Please pass -Dvulkan-drivers to set driver options. Patches gladly accepted to fix this.'.format(
+ host_machine.cpu_family()))
diff --git a/mesa.spec b/mesa.spec
index 3567f56..034ec6a 100644
--- a/mesa.spec
+++ b/mesa.spec
@@ -4,10 +4,12 @@
# (aco) Needed for the dri drivers
%define _disable_ld_no_undefined 1
-# LLD fails because of https://bugs.llvm.org/show_bug.cgi?id=42447
-# BFD fails because it can't handle clang LTO bitcode in static libraries
-%global optflags %{optflags} -O3 -fuse-ld=gold
-%global ldflags %{ldflags} -fuse-ld=gold
+# We disable LTO because of a compile error in the Intel Vulkan driver
+# last seen with Mesa 19.2.0-rc1 and (interestingly) both gcc 9.2 and clang 9.0-rc2
+# -fno-strict-aliasing is added because of numerous warnings, strict
+# aliasing might generate broekn code.
+%global optflags %{optflags} -O3 -fno-lto -fno-strict-aliasing
+%global ldflags %{ldflags} -fno-strict-aliasing
%define git %{nil}
%define git_branch %(echo %{version} |cut -d. -f1-2)
@@ -17,14 +19,11 @@
%define relc %{nil}
-%ifarch %{ix86}
-%define _disable_lto 1
-%endif
%ifarch %{riscv}
%bcond_without gcc
%bcond_with opencl
%else
-%bcond_with gcc
+%bcond_without gcc
%bcond_without opencl
%endif
%bcond_with bootstrap
@@ -118,7 +117,7 @@
Summary: OpenGL %{opengl_ver} compatible 3D graphics library
Name: mesa
-Version: 19.1.3
+Version: 19.2.1
%if "%{relc}%{git}" == ""
Release: 1
%else
@@ -156,11 +155,16 @@ Obsoletes: %{name}-xorg-drivers-radeon < %{EVRD}
Obsoletes: %{name}-xorg-drivers-nouveau < %{EVRD}
# https://bugs.freedesktop.org/show_bug.cgi?id=74098
-Patch1: mesa-10.2-clang-compilefix.patch
-Patch3: mesa-19.0.0-rc2-more-ARM-drivers.patch
-
+#Patch1: mesa-10.2-clang-compilefix.patch
+#Patch3: mesa-19.0.0-rc2-more-ARM-drivers.patch
+%ifarch %{ix86}
+Patch4: mesa-19.2.0-rc3-32bit-buildfix.patch
+%endif
+%ifarch %{armx} riscv64
+Patch5: mesa-19.2.0-rc3-meson-radeon-arm-riscv.patch
+%endif
# fedora patches
-Patch15: mesa-9.2-hardware-float.patch
+#Patch15: mesa-9.2-hardware-float.patch
# Instructions to setup your repository clone
# git://git.freedesktop.org/git/mesa/mesa
@@ -180,8 +184,8 @@ Patch15: mesa-9.2-hardware-float.patch
# Mandriva & Mageia patches
# git format-patch --start-number 100 mesa_7_5_1..mesa_7_5_branch | sed 's/^0\([0-9]\+\)-/Patch\1: 0\1-/'
-Patch201: 0201-revert-fix-glxinitializevisualconfigfromtags-handling.patch
-Patch202: riscv64.patch
+#Patch201: 0201-revert-fix-glxinitializevisualconfigfromtags-handling.patch
+#Patch202: riscv64.patch
# https://bugs.freedesktop.org/show_bug.cgi?id=110783
# https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1084
#Patch203: https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1084.diff
@@ -217,6 +221,7 @@ BuildRequires: pkgconfig(libudev) >= 186
%if %{with glvnd}
BuildRequires: pkgconfig(libglvnd)
%endif
+BuildRequires: pkgconfig(epoxy)
BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(x11) >= 1.3.3
BuildRequires: pkgconfig(xdamage) >= 1.1.1
@@ -231,6 +236,10 @@ BuildRequires: pkgconfig(xshmfence) >= 1.1
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xcb-dri3)
BuildRequires: pkgconfig(xcb-present)
+BuildRequires: pkgconfig(xv)
+BuildRequires: pkgconfig(xvmc)
+#BuildRequires: pkgconfig(valgrind)
+BuildRequires: pkgconfig(gtk+-3.0)
# for libsupc++.a
BuildRequires: stdc++-static-devel
# (tpg) with openssl a steam crashes
@@ -265,7 +274,9 @@ Mesa is an OpenGL %{opengl_ver} compatible 3D graphics library.
Summary: Mesa DRI drivers
Group: System/Libraries
Requires: %{dridrivers}-swrast = %{EVRD}
+%ifnarch %{riscv}
Requires: %{dridrivers}-virtio = %{EVRD}
+%endif
%ifnarch %{armx} %{riscv}
%if %{with r600}
Requires: %{dridrivers}-radeon = %{EVRD}
@@ -275,7 +286,7 @@ Requires: %{dridrivers}-intel = %{EVRD}
%endif
Requires: %{dridrivers}-nouveau = %{EVRD}
%endif
-%ifarch %{armx} %{riscv}
+%ifarch %{armx}
Requires: %{dridrivers}-freedreno = %{EVRD}
Requires: %{dridrivers}-vc4 = %{EVRD}
Requires: %{dridrivers}-v3d = %{EVRD}
@@ -501,6 +512,7 @@ EGL parts.
%package -n %{devegl}
Summary: Development files for Mesa (EGL libs)
Group: Development/C
+Provides: egl-devel = %{version}-%{release}
Requires: %{libegl} = %{version}-%{release}
Obsoletes: %{_lib}mesaegl1-devel < 8.0
Obsoletes: %{_lib}egl1-devel < %{version}-%{release}
@@ -766,11 +778,15 @@ Requires: pkgconfig(glut)
Requires: %{devgl} = %{version}-%{release}
Requires: %{devegl} = %{version}-%{release}
Requires: %{devglapi} = %{version}-%{release}
+%if ! %{with glvnd}
Requires: %{devglesv1} = %{version}-%{release}
Requires: %{devglesv2} = %{version}-%{release}
+%endif
Suggests: %{devd3d} = %{version}-%{release}
%if %{with glvnd}
Requires: pkgconfig(libglvnd)
+Requires: pkgconfig(glesv1_cm)
+Requires: pkgconfig(glesv2)
%endif
%description common-devel
@@ -781,7 +797,7 @@ Summary: Tools for debugging Mesa drivers
Group: Development/Tools
%description tools
-Tools for debugging Mesa drivers
+Tools for debugging Mesa drivers.
%prep
%if "%{git}" != ""
@@ -805,7 +821,6 @@ if ! %meson \
-Db_ndebug=true \
-Dc_std=c11 \
-Dcpp_std=c++17 \
- -Dasm=true \
-Ddri-drivers=auto \
-Dgallium-drivers=auto \
%if %{with opencl}
@@ -839,6 +854,8 @@ if ! %meson \
-Dshared-glapi=true \
-Dshared-llvm=true \
-Dswr-arches=avx,avx2,knl,skx \
+ -Dselinux=false \
+ -Dbuild-tests=false \
-Dtools=all; then
cat build/meson-logs/meson-log.txt >/dev/stderr
@@ -849,6 +866,23 @@ fi
%install
%ninja_install -C build/
+%if %{with glvnd}
+rm -rf %{buildroot}%{_includedir}/GL/gl.h \
+ %{buildroot}%{_includedir}/GL/glcorearb.h \
+ %{buildroot}%{_includedir}/GL/glext.h \
+ %{buildroot}%{_includedir}/GL/glx.h \
+ %{buildroot}%{_includedir}/GL/glxext.h \
+ %{buildroot}%{_includedir}/EGL/eglext.h \
+ %{buildroot}%{_includedir}/EGL/egl.h \
+ %{buildroot}%{_includedir}/EGL/eglplatform.h \
+ %{buildroot}%{_includedir}/KHR \
+ %{buildroot}%{_includedir}/GLES \
+ %{buildroot}%{_includedir}/GLES2 \
+ %{buildroot}%{_includedir}/GLES3 \
+ %{buildroot}%{_libdir}/pkgconfig/egl.pc \
+ %{buildroot}%{_libdir}/pkgconfig/gl.pc
+%endif
+
%ifarch %{x86_64}
mkdir -p %{buildroot}%{_prefix}/lib/dri
%endif
@@ -868,13 +902,13 @@ rm -f %{buildroot}%{_libdir}/vdpau/libvdpau_*.so
%if %{with glvnd}
# We get those from libglvnd
-rm -f %{buildroot}%{_libdir}/libGLESv1_CM.so* \
- %{buildroot}%{_libdir}/libGLESv2.so*
+rm -f %{buildroot}%{_libdir}/libGLESv1_CM.so* %{buildroot}%{_libdir}/libGLESv2.so*
%endif
# .la files are not needed by mesa
find %{buildroot} -name '*.la' |xargs rm -f
+%if ! %{with glvnd}
# Used to be present in 19.0.x, and some packages rely on it
cat >%{buildroot}%{_libdir}/pkgconfig/glesv1_cm.pc <<'EOF'
Name: glesv1_cm
@@ -891,10 +925,25 @@ Libs: -lGLESv2
Libs.private: -lpthread -pthread -lm -ldl
EOF
+# Used to be present in 19.1.x, and some packages rely on it
+cat >%{buildroot}%{_libdir}/pkgconfig/egl.pc <<'EOF'
+prefix=%{_prefix}
+libdir=${prefix}/%{_libdir}
+includedir=${prefix}/include
+Name: egl
+Description: Mesa EGL Library
+Version: %{version}
+Requires.private: x11, xext, xdamage >= 1.1, xfixes, x11-xcb, xcb, xcb-glx >= 1.8.1, xcb-dri2 >= 1.8, xxf86vm, libdrm >= 2.4.75
+Libs: -L${libdir} -lEGL
+Libs.private: -lpthread -pthread -lm -ldl
+Cflags: -I${includedir}
+EOF
+%endif
+
# use swrastg if built (Anssi 12/2011)
[ -e %{buildroot}%{_libdir}/dri/swrastg_dri.so ] && mv %{buildroot}%{_libdir}/dri/swrast{g,}_dri.so
-# (tpg) remove wayland files as they are not part of wayland package
+# (tpg) remove wayland files as they are now part of wayland package
rm -rf %{buildroot}%{_libdir}/libwayland-egl.so*
rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
@@ -957,13 +1006,16 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%{_libdir}/gallium-pipe/pipe_swrast.so
%endif
+%ifnarch %{riscv}
%files -n %{dridrivers}-virtio
%{_libdir}/dri/virtio_gpu_dri.so
+%endif
%ifarch %{armx}
%files -n %{dridrivers}-freedreno
%{_libdir}/dri/kgsl_dri.so
%{_libdir}/dri/msm_dri.so
+%{_libdir}/libfreedreno_noop_drm_shim.so
%if %{with opencl}
%{_libdir}/gallium-pipe/pipe_msm.so
%endif
@@ -973,6 +1025,7 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%files -n %{dridrivers}-v3d
%{_libdir}/dri/v3d_dri.so
+%{_libdir}/libv3d_noop_drm_shim.so
%files -n %{dridrivers}-etnaviv
%{_libdir}/dri/etnaviv_dri.so
@@ -981,6 +1034,7 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%{_libdir}/dri/tegra_dri.so
%files -n %{dridrivers}-lima
+%{_bindir}/lima_compiler
%{_libdir}/dri/lima_dri.so
%files -n %{dridrivers}-panfrost
@@ -994,11 +1048,13 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%{_libdir}/dri/imx-drm_dri.so
%{_libdir}/dri/meson_dri.so
%{_libdir}/dri/mi0283qt_dri.so
+%{_libdir}/dri/mxsfb-drm_dri.so
%{_libdir}/dri/pl111_dri.so
%{_libdir}/dri/repaper_dri.so
%{_libdir}/dri/rockchip_dri.so
%{_libdir}/dri/st7586_dri.so
%{_libdir}/dri/st7735r_dri.so
+%{_libdir}/dri/stm_dri.so
%{_libdir}/dri/sun4i-drm_dri.so
%endif
@@ -1006,7 +1062,6 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%{_libdir}/libOSMesa.so.%{osmesamajor}*
%files -n %{devosmesa}
-%dir %{_includedir}/GL
%{_includedir}/GL/osmesa.h
%{_libdir}/libOSMesa.so
%{_libdir}/pkgconfig/osmesa.pc
@@ -1058,16 +1113,18 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%endif
%files -n %{devgl}
+%if ! %{with glvnd}
%dir %{_includedir}/GL
%{_includedir}/GL/gl.h
%{_includedir}/GL/glcorearb.h
%{_includedir}/GL/glext.h
-%{_includedir}/GL/gl_mangle.h
%{_includedir}/GL/glx.h
%{_includedir}/GL/glxext.h
+%{_libdir}/pkgconfig/gl.pc
+%endif
+%{_includedir}/GL/gl_mangle.h
%{_includedir}/GL/glx_mangle.h
%{_libdir}/libGLX_mesa.so
-%{_libdir}/pkgconfig/gl.pc
%{_libdir}/pkgconfig/dri.pc
#FIXME: check those headers
@@ -1079,10 +1136,15 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%if %{with egl}
%files -n %{devegl}
+%if ! %{with glvnd}
%{_includedir}/EGL
%{_includedir}/KHR
-%{_libdir}/libEGL_mesa.so
%{_libdir}/pkgconfig/egl.pc
+%else
+%{_includedir}/EGL/eglextchromium.h
+%{_includedir}/EGL/eglmesaext.h
+%endif
+%{_libdir}/libEGL_mesa.so
%endif
%files -n %{devglapi}
@@ -1116,6 +1178,7 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%{_libdir}/pkgconfig/xatracker.pc
%endif
+%if ! %{with glvnd}
%files -n %{devglesv1}
%{_includedir}/GLES
%{_libdir}/pkgconfig/glesv1_cm.pc
@@ -1126,6 +1189,7 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%files -n %{devglesv3}
%{_includedir}/GLES3
+%endif
%files -n %{devd3d}
%{_includedir}/d3dadapter
@@ -1154,6 +1218,8 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig/wayland-egl.pc
%ifarch %{ix86} %{x86_64}
%{_bindir}/aubinator
%{_bindir}/aubinator_error_decode
+%{_bindir}/aubinator_viewer
+%{_bindir}/i965_asm
%{_bindir}/i965_disasm
%{_bindir}/intel_dump_gpu
%{_bindir}/intel_error2aub