# TODO: libtizonia >= 0.10.0 as an alternative for bellagio?
-# opencl-spirv? BR: spirv-tools-devel >= 2018.0, pkgconfig(LLVMSPIRVLib) >= 0.2.1
#
# Conditional build:
%bcond_without gallium # gallium drivers
%bcond_with gallium_i915 # gallium i915 driver instead of dri i915 driver
%bcond_without gallium_nouveau # gallium nouveau driver
%bcond_without gallium_radeon # gallium radeon drivers
+%bcond_without gallium_zink # gallium zink driver (based on vulkan)
%bcond_without egl # EGL libraries
%bcond_without gbm # Graphics Buffer Manager
%bcond_without nine # Nine Direct3D 9+ state tracker (for Wine)
%bcond_without opencl # OpenCL support
+%bcond_without opencl_spirv # OpenCL SPIRV support
%bcond_without ocl_icd # OpenCL as ICD (installable client driver)
%bcond_with glvnd # OpenGL vendor neutral dispatcher support
%bcond_without omx # OpenMAX (Bellagio OMXIL) support
Summary: Free OpenGL implementation
Summary(pl.UTF-8): Wolnodostępna implementacja standardu OpenGL
Name: Mesa
-Version: 19.3.3
+Version: 20.0.5
Release: 1
License: MIT (core) and others - see license.html file
Group: X11/Libraries
#Source0: ftp://ftp.freedesktop.org/pub/mesa/mesa-%{version}.tar.xz
## Source0-md5: 7c61a801311fb8d2f7b3cceb7b5cf308
Source0: https://gitlab.freedesktop.org/mesa/mesa/-/archive/mesa-%{version}/mesa-mesa-%{version}.tar.bz2
-# Source0-md5: 56141f1a25ce387139ca9235b47a8b62
+# Source0-md5: 8cead0e352499fbda32f1e6261e9f000
Patch0: nouveau_no_rtti.patch
Patch1: i9x5-tex-ignore-the-diff-between-GL_TEXTURE_2D-and-GL_TEXTURE_RECTANGLE.patch
+Patch2: llvm10.patch
URL: http://www.mesa3d.org/
+%{?with_opencl_spirv:BuildRequires: SPIRV-LLVM-Translator-devel >= 0.2.1}
+%{?with_gallium_zink:BuildRequires: Vulkan-Loader-devel}
%{?with_opencl:BuildRequires: clang-devel >= %{llvm_ver}}
BuildRequires: elfutils-devel
BuildRequires: expat-devel >= 1.95
BuildRequires: gcc >= %{gcc_ver}
BuildRequires: libdrm-devel >= %{libdrm_ver}
-%{?with_glvnd:BuildRequires: libglvnd-devel >= 0.2.0}
+%{?with_glvnd:BuildRequires: libglvnd-devel >= 1.2.0}
BuildRequires: libselinux-devel
BuildRequires: libstdc++-devel >= %{gcc_ver}
BuildRequires: libunwind-devel
BuildRequires: python3-Mako >= 0.8.0
BuildRequires: rpmbuild(macros) >= 1.470
BuildRequires: sed >= 4.0
+%{?with_opencl_spirv:BuildRequires: spirv-tools-devel >= 2018.0}
# wayland-{client,server}
%{?with_wayland:BuildRequires: wayland-devel >= %{wayland_ver}}
%{?with_wayland:BuildRequires: wayland-protocols >= 1.8}
%{?with_lm_sensors:BuildRequires: lm_sensors-devel}
%endif
BuildRequires: zlib-devel >= %{zlib_ver}
+BuildRequires: zstd-devel
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
# libGLESv1_CM, libGLESv2, libGL, libOSMesa:
Requires: xorg-lib-libXxf86vm-devel
Requires: xorg-proto-dri2proto-devel >= %{dri2proto_ver}
Requires: xorg-proto-glproto-devel >= %{glproto_ver}
+%if %{without glvnd}
Provides: EGL-devel = 1.5
+%endif
%description libEGL-devel
Header files for Mesa implementation of EGL library.
Requires: xorg-proto-dri2proto-devel >= %{dri2proto_ver}
Requires: xorg-proto-glproto-devel >= %{glproto_ver}
Suggests: OpenGL-doc-man
+%if %{without glvnd}
Provides: OpenGL-GLX-devel = 1.4
Provides: OpenGL-devel = 4.6
+%endif
Obsoletes: Mesa-devel
Obsoletes: X11-OpenGL-devel < 1:7.0.0
Obsoletes: X11-OpenGL-devel-base < 1:7.0.0
(OpenGL ES) - cross-platform API for full-function 2D and 3D graphics
on embedded systems. OpenGL ES specification can be found on Khronos
Group site: <http://www.khronos.org/opengles/>. Mesa implements OpenGL
-ES 1.1 and 2.0.
+ES 1.1 and 2.0/3.2.
%description libGLES -l pl.UTF-8
Ten pakiet zawiera biblioteki współdzielone implementacji Mesa
funkcjonalnej grafiki 2D i 3D na systemach wbudowanych. Specyfikację
OpenGL ES można znaleźć na stronie Khronos Group:
<http://www.khronos.org/opengles/>. Mesa zawiera implementacją OpenGL
-ES 1.1 i 2.0.
+ES 1.1 i 2.0/3.2.
%package libGLES-devel
Summary: Header files for Mesa GLES libraries
# <EGL/egl.h> for <GLES/egl.h>
Requires: %{name}-libEGL-devel = %{version}-%{release}
Requires: %{name}-libGLES = %{version}-%{release}
+%if %{without glvnd}
Provides: OpenGLES-devel
Provides: OpenGLESv1-devel = 1.1
Provides: OpenGLESv2-devel = 2.0
Provides: OpenGLESv3-devel = 3.2
+%endif
%description libGLES-devel
Header files for Mesa GLES libraries.
%description dri-driver-vmwgfx -l pl.UTF-8
Sterownik X.org DRI Gallium dla VMware.
+%package dri-driver-zink
+Summary: X.org DRI driver based on Vulkan
+Summary(pl.UTF-8): Sterownik X.org DRI oparty na Vulkanie
+License: MIT
+Group: X11/Libraries
+Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
+Requires: xorg-xserver-server >= %{xserver_ver}
+Requires: zlib >= %{zlib_ver}
+
+%description dri-driver-zink
+X.org Gallium DRI driver based on Vulkan.
+
+%description dri-driver-zink -l pl.UTF-8
+Sterownik X.org DRI Gallium oparty na Vulkanie.
+
%package pipe-driver-i915
Summary: i915 driver for Mesa Gallium dynamic pipe loader
Summary(pl.UTF-8): Sterownik i915 dla dynamicznego systemu potoków szkieletu Mesa Gallium
%setup -q -n mesa-mesa-%{version}
%patch0 -p1
%patch1 -p1
+%patch2 -p1
%build
%if %{with opencl}
dri_drivers=$(echo $dri_drivers | xargs | tr ' ' ',')
-gallium_drivers="virgl swrast \
+gallium_drivers="virgl swrast %{?with_gallium_zink:zink} \
%ifarch %{ix86} %{x8664} x32
svga iris %{?with_swr:swr} %{?with_gallium_i915:i915} \
%endif
kmsro \
lima \
panfrost \
-tegra \
+%{?with_gallium_nouveau:tegra} \
v3d \
vc4 \
%endif
-Dglvnd=%{?with_glvnd:true}%{!?with_glvnd:false} \
-Dlibunwind=true \
-Dlmsensors=%{?with_lm_sensors:true}%{!?with_lm_sensors:false} \
+ %{?with_opencl_spirv:-Dopencl-spirv=true} \
-Dosmesa=%{?with_gallium:gallium}%{!?with_gallium:classic} \
-Dselinux=true \
-Dva-libs-path=%{_libdir}/libva/dri \
%attr(755,root,root) %{_libdir}/libEGL_mesa.so
%else
%attr(755,root,root) %{_libdir}/libEGL.so
-%endif
%dir %{_includedir}/EGL
%{_includedir}/EGL/egl.h
%{_includedir}/EGL/eglext.h
-%{_includedir}/EGL/eglextchromium.h
-%{_includedir}/EGL/eglmesaext.h
%{_includedir}/EGL/eglplatform.h
%{_pkgconfigdir}/egl.pc
%endif
+%{_includedir}/EGL/eglextchromium.h
+%{_includedir}/EGL/eglmesaext.h
+%endif
%files libGL
%defattr(644,root,root,755)
%files libGL-devel
%defattr(644,root,root,755)
%doc docs/specs/*
+%if %{without glvnd}
%dir %{_includedir}/GL
%{_includedir}/GL/gl.h
%{_includedir}/GL/glcorearb.h
%{_includedir}/GL/glext.h
%{_includedir}/GL/glx.h
%{_includedir}/GL/glxext.h
+%{_pkgconfigdir}/gl.pc
+%endif
%dir %{_includedir}/GL/internal
%{_includedir}/GL/internal/dri_interface.h
%{_pkgconfigdir}/dri.pc
-%{_pkgconfigdir}/gl.pc
%files libGLES
%defattr(644,root,root,755)
+%if %{without glvnd}
%attr(755,root,root) %{_libdir}/libGLESv1_CM.so.*.*.*
%attr(755,root,root) %ghost %{_libdir}/libGLESv1_CM.so.1
%attr(755,root,root) %{_libdir}/libGLESv2.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libGLESv2.so.2
+%endif
%files libGLES-devel
%defattr(644,root,root,755)
+%if %{without glvnd}
%attr(755,root,root) %{_libdir}/libGLESv1_CM.so
%attr(755,root,root) %{_libdir}/libGLESv2.so
%{_includedir}/GLES
%{_includedir}/GLES3
%{_pkgconfigdir}/glesv1_cm.pc
%{_pkgconfigdir}/glesv2.pc
+%endif
%files libOSMesa
%defattr(644,root,root,755)
%endif
%if %{with egl}
+%if %{without glvnd}
%files khrplatform-devel
%defattr(644,root,root,755)
%dir %{_includedir}/KHR
%{_includedir}/KHR/khrplatform.h
%endif
+%endif
%files dri-driver-ati-radeon-R100
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/panfrost_dri.so
+%if %{with gallium_nouveau}
%files dri-driver-tegra
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/tegra_dri.so
+%endif
%files dri-driver-v3d
%defattr(644,root,root,755)
%files dri-driver-vmwgfx
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/vmwgfx_dri.so
+
+%if %{with gallium_zink}
+%files dri-driver-zink
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/xorg/modules/dri/zink_dri.so
+%endif
%endif
%if %{with gallium}