# - consider:
# - subpackage with non-dri libGL for use with X-servers with missing GLX extension?
# - resurrect static if it's useful (using plain xorg target? DRI doesn't support static)
+# - libglvnd?
#
# Conditional build:
%bcond_without gallium # gallium drivers
%bcond_without gallium_nouveau # gallium nouveau driver
%bcond_without gallium_radeon # gallium radeon drivers
%bcond_without egl # EGL libraries
-%bcond_with openvg # OpenVG library [not builind since 10.4, dropped in 10.6]
+%bcond_with openvg # OpenVG library [not building since 10.4, dropped in 10.6]
%bcond_without gbm # Graphics Buffer Manager
%bcond_without nine # Nine Direct3D 9+ state tracker (for Wine)
%bcond_without opencl # OpenCL 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
%bcond_without va # VA library
%bcond_without wayland # Wayland EGL
%bcond_without xa # XA state tracker (for vmwgfx xorg driver)
+%bcond_with hud_extra # HUD block/NIC I/O HUD stats support
+%bcond_with lm_sensors # HUD lm_sensors support
%bcond_with texture_float # floating-point textures and renderbuffers (SGI patent in US)
%bcond_with static_libs # static libraries [not supported for DRI, thus broken currently]
%bcond_with tests # tests
+%bcond_without shared_llvm # disable use of the shared LLVM libs
+%bcond_without radv # disable build of the radeon Vulkan driver
#
# glapi version (glapi tables in dri drivers and libglx must be in sync);
# set to current Mesa version on ABI break, when xserver tables get regenerated
# minimal supported xserver version
%define xserver_ver 1.5.0
# other packages
-%define libdrm_ver 2.4.63
+%define libdrm_ver 2.4.71
%define dri2proto_ver 2.6
%define dri3proto_ver 1.0
%define glproto_ver 1.4.14
Summary: Free OpenGL implementation
Summary(pl.UTF-8): Wolnodostępna implementacja standardu OpenGL
Name: Mesa
-Version: 11.1.2
+Version: 13.0.4
Release: 1
License: MIT (core) and others - see license.html file
Group: X11/Libraries
Source0: ftp://ftp.freedesktop.org/pub/mesa/%{version}/mesa-%{version}.tar.xz
-# Source0-md5: 0a1e9b0419b7cda01203eedaedfd37b5
-Patch0: missing-type.patch
-Patch1: x32.patch
+# Source0-md5: d088a921e935218833a8071cb672a574
URL: http://www.mesa3d.org/
BuildRequires: autoconf >= 2.60
BuildRequires: automake
BuildRequires: elfutils-devel
BuildRequires: expat-devel
BuildRequires: gcc >= 6:4.2.0
+%{?with_nine:BuildRequires: gcc-c++ >= 6:4.6}
%{?with_opencl:BuildRequires: gcc-c++ >= 6:4.7}
BuildRequires: libdrm-devel >= %{libdrm_ver}
+%{?with_glvnd:BuildRequires: libglvnd-devel >= 0.1.0}
BuildRequires: libselinux-devel
BuildRequires: libstdc++-devel >= 6:4.2.0
BuildRequires: libtalloc-devel >= 2:2.0.1
BuildRequires: libtool >= 2:2.2
-%{?with_va:BuildRequires: libva-devel >= 1.3.0}
-%{?with_va:BuildRequires: pkgconfig(libva) >= 0.35.0}
+%{?with_va:BuildRequires: libva-devel >= 1.6.0}
+%{?with_va:BuildRequires: pkgconfig(libva) >= 0.38.0}
BuildRequires: libvdpau-devel >= 1.1
BuildRequires: libxcb-devel >= 1.10
-%{?with_gallium_radeon:BuildRequires: llvm-devel >= 3.4.2}
+%{?with_gallium_radeon:BuildRequires: llvm-devel >= 3.8}
+%{?with_radv:BuildRequires: llvm-devel >= 3.9}
%{?with_opencl:BuildRequires: llvm-libclc}
# for SHA1 (could use also libmd/libsha1/libgcrypt/openssl instead)
BuildRequires: nettle-devel
BuildRequires: pkgconfig(xcb-dri3)
BuildRequires: pkgconfig(xcb-present)
BuildRequires: python >= 2
-BuildRequires: python-Mako >= 0.3.4
+BuildRequires: python-Mako >= 0.8.0
BuildRequires: python-modules >= 2
BuildRequires: rpmbuild(macros) >= 1.470
BuildRequires: sed >= 4.0
-%{?with_egl:BuildRequires: udev-devel >= 1:151}
# wayland-{client,server}
%{?with_wayland:BuildRequires: wayland-devel >= 1.2.0}
BuildRequires: xorg-lib-libXdamage-devel
BuildRequires: xorg-proto-presentproto-devel >= %{presentproto_ver}
BuildRequires: xorg-util-makedepend
%if %{with gallium}
+%{?with_lm_sensors:BuildRequires: lm_sensors-devel >= 3.4}
BuildRequires: xorg-proto-xextproto-devel >= 7.0.99.1
BuildRequires: xorg-xserver-server-devel >= %{xserver_ver}
%endif
Requires: libdrm >= %{libdrm_ver}
Requires: libxcb >= 1.9
%{?with_wayland:Requires: wayland >= 1.2.0}
-%if %{with gallium}
-Requires: udev-libs >= 1:151
-%endif
%if %{with gbm}
Requires: %{name}-libgbm = %{version}-%{release}
%endif
Group: X11/Libraries
Requires: %{name}-libglapi = %{version}-%{release}
Requires: libdrm >= %{libdrm_ver}
-Provides: OpenGL = 4.1
+Provides: OpenGL = 4.5
Provides: OpenGL-GLX = 1.4
Obsoletes: Mesa
Obsoletes: Mesa-dri
license from SGI, and makes no claim that Mesa is in any way a
compatible replacement for OpenGL or associated with SGI.
-This package contains libGL which implements OpenGL 1.5 and GLX 1.4
+This package contains libGL which implements OpenGL 4.5 and GLX 1.4
specifications. It uses DRI for rendering.
%description libGL -l pl.UTF-8
OpenGL od SGI i nie twierdzi, że Mesa jest kompatybilnym zamiennikiem
OpenGL ani powiązana z SGI.
-Ten pakiet zawiera libGL implementującą specyfikacje OpenGL 1.5 oraz
+Ten pakiet zawiera libGL implementującą specyfikacje OpenGL 4.5 oraz
GLX 1.4. Używa DRI do renderowania.
%package libGL-devel
Requires: xorg-proto-glproto-devel >= %{glproto_ver}
Suggests: OpenGL-doc-man
Provides: OpenGL-GLX-devel = 1.4
-Provides: OpenGL-devel = 4.1
+Provides: OpenGL-devel = 4.5
Obsoletes: Mesa-devel
Obsoletes: X11-OpenGL-devel < 1:7.0.0
Obsoletes: X11-OpenGL-devel-base < 1:7.0.0
License: MIT
Group: X11/Development/Libraries
Requires: %{name}-libGL-devel = %{version}-%{release}
-Provides: OpenGL-static = 4.1
+Provides: OpenGL-static = 4.5
Obsoletes: Mesa-static
Obsoletes: X11-OpenGL-static < 1:7.0.0
Obsoletes: XFree86-OpenGL-static < 1:7.0.0
Provides: OpenGLES
Provides: OpenGLESv1 = 1.1
Provides: OpenGLESv2 = 2.0
-Provides: OpenGLESv3 = 3.1
+Provides: OpenGLESv3 = 3.2
%description libGLES
This package contains shared libraries of Mesa implementation of GLES
Provides: OpenGLES-devel
Provides: OpenGLESv1-devel = 1.1
Provides: OpenGLESv2-devel = 2.0
-Provides: OpenGLESv3-devel = 3.1
+Provides: OpenGLESv3-devel = 3.2
%description libGLES-devel
Header files for Mesa GLES libraries.
Requires: filesystem >= 4.0-29
Requires: libdrm >= %{libdrm_ver}
Requires: llvm-libclc
-Requires: udev-libs >= 1:151
Provides: OpenCL = 1.1
Provides: ocl-icd-driver
Group: Libraries
Requires: libdrm >= %{libdrm_ver}
Requires: llvm-libclc
-Requires: udev-libs >= 1:151
Provides: OpenCL = 1.1
%description libOpenCL
%package -n libva-driver-gallium
Summary: VA driver for Gallium State Tracker
-Summary(pl.UTF-8): Sterownik VA do Gallium
+Summary(pl.UTF-8): Sterowniki VA do Gallium
Group: Libraries
-Requires: libva >= 1.3.0
+%if %{with gallium_radeon}
+Requires: libva-driver-r600
+Requires: libva-driver-radeonsi
+%endif
+%if %{with gallium_nouveau}
+Requires: libva-driver-nouveau
+%endif
%description -n libva-driver-gallium
-VA driver for Gallium State Tracker.
+VA drivers for Gallium State Tracker (r600, radeonsi & nouveau).
%description -n libva-driver-gallium -l pl.UTF-8
-Sterownik VA do Gallium.
+Sterowniki VA do Gallium (r600, radeonsi & nouveau).
+
+%package -n libva-driver-r600
+Summary: VA driver for ATI Radeon R600 series adapters
+Summary(pl.UTF-8): Sterownik VA dla kart ATI Radeon z serii R600
+Group: Libraries
+Requires: libva >= 1.6.0
+
+%description -n libva-driver-r600
+VA driver for ATI Radeon R600 series adapters.
+
+%description -n libva-driver-r600 -l pl.UTF-8
+Sterownik VA dla kart ATI Radeon z serii R600.
+
+%package -n libva-driver-radeonsi
+Summary: VA driver for ATI Radeon SI adapters
+Summary(pl.UTF-8): Sterownik VA dla kart ATI Radeon SI
+Group: Libraries
+Requires: libva >= 1.6.0
+
+%description -n libva-driver-radeonsi
+VA driver for ATI Radeon adapters based on Southern Islands chips.
+
+%description -n libva-driver-radeonsi -l pl.UTF-8
+Sterownik VA dla kart ATI Radeon opartych na układach Southern Islands.
+
+%package -n libva-driver-nouveau
+Summary: VA driver for NVidia adapters
+Summary(pl.UTF-8): Sterownik VA dla kart NVidia
+Group: Libraries
+Requires: libva >= 1.6.0
+
+%description -n libva-driver-nouveau
+VA driver for NVidia adapters.
+
+%description -n libva-driver-nouveau -l pl.UTF-8
+Sterownik VA dla kart NVidia.
%package libgbm
Summary: Mesa Graphics Buffer Manager library
Summary(pl.UTF-8): Biblioteka Mesa Graphics Buffer Manager
Group: Libraries
Requires: %{name}-libglapi = %{version}-%{release}
-Requires: udev-libs >= 1:151
Conflicts: Mesa-libEGL < 8.0.1-2
%description libgbm
Summary(pl.UTF-8): Plik nagłówkowy biblioteki Mesa Graphics Buffer Manager
Group: Development/Libraries
Requires: %{name}-libgbm = %{version}-%{release}
-Requires: udev-devel >= 1:151
%description libgbm-devel
Header file for Mesa Graphics Buffer Manager library.
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart Intel i915
License: MIT
Group: X11/Libraries
-Requires: xorg-driver-video-intel
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
Obsoletes: Mesa-dri-driver-intel-i830
Summary(pl.UTF-8): Sterownik X.org DRI dla rodziny kart Intel i965
License: MIT
Group: X11/Libraries
-Requires: xorg-driver-video-intel
Requires: xorg-xserver-libglx(glapi) = %{glapi_ver}
Requires: xorg-xserver-server >= %{xserver_ver}
Obsoletes: Mesa-dri-driver-intel-i830
Sterownik Mesa radeonsi dla API Bellagio OpenMAX IL. Obsługuje karty
ATI Radeon oparte na układach Southern Islands.
+%package vulkan-icd-intel
+Summary: Mesa Vulkan driver for Intel GPUs
+Summary(pl.UTF-8): Sterownik Vulkan dla GPU firmy Intel
+License: MIT
+Group: Libraries
+Suggests: vulkan(loader)
+Requires: libdrm >= %{libdrm_ver}
+Provides: vulkan(icd) = 1.0.3
+
+%description vulkan-icd-intel
+Mesa Vulkan driver for Intel GPUs.
+
+%description vulkan-icd-intel -l pl.UTF-8
+Sterownik Vulkan dla GPU Intela.
+
+%package vulkan-icd-intel-devel
+Summary: Header files for Mesa Intel GPU Vulkan driver
+Summary(pl.UTF-8): Pliki nagłówkowe sterownika Vulkan dla GPU Intela
+License: MIT
+Group: Development/Libraries
+Requires: %{name}-vulkan-icd-intel = %{version}-%{release}
+
+%description vulkan-icd-intel-devel
+eader files for Mesa Intel GPU Vulkan driver.
+
+%description vulkan-icd-intel-devel -l pl.UTF-8
+Pliki nagłówkowe sterownika Vulkan dla GPU Intel.
+
+%package vulkan-icd-radeon
+Summary: radv - experimental Mesa Vulkan driver for AMD Radeon GPUs
+Summary(pl.UTF-8): radv - eksperymentalny sterownik Vulkan dla GPU firmy AMD
+License: MIT
+Group: Libraries
+Suggests: vulkan(loader)
+Provides: vulkan(icd) = 1.0.3
+
+%description vulkan-icd-radeon
+radv - experimental Mesa Vulkan driver for AMD Radeon GPUs.
+
+%description vulkan-icd-radeon -l pl.UTF-8
+radv - eksperymentalny sterownik Vulkan dla GPU firmy AMD.
+
%prep
%setup -q -n mesa-%{version}
-%patch0 -p1
-%patch1 -p1
%build
%{__libtoolize}
%endif
ilo \
virgl \
-%ifarch arm
+%ifarch %{arm}
freedreno \
vc4 \
%endif
gallium_drivers=$(echo $gallium_drivers | xargs | tr ' ' ',')
+vulkan_drivers="intel%{?with_radv:,radeon}"
+
%configure \
--disable-silent-rules \
%{__enable gbm} \
--enable-glx-tls \
+ %{?with_glvnd:--enable-libglvnd} \
--enable-osmesa \
--enable-selinux \
--enable-shared \
--with-egl-platforms=x11%{?with_gbm:,drm}%{?with_wayland:,wayland} \
%endif
%if %{with gallium}
+ %{?with_hud_extra:--enable-gallium-extra-hud} \
--enable-gallium-llvm \
- --enable-llvm-shared-libs \
- %{__enable egl gallium-egl} \
- %{__enable gbm gallium-gbm} \
+ %{__enable_disable shared_llvm llvm-shared-libs} \
%{__enable ocl_icd opencl-icd} \
+ %{?with_lm_sensors:--enable-lmsensors} \
%{?with_nine:--enable-nine} \
%{__enable opencl} \
+ %{__enable va} \
--enable-vdpau \
%{?with_omx:--enable-omx} \
%{?with_xa:--enable-xa} \
%endif
--with-dri-drivers=${dri_drivers} \
--with-dri-driverdir=%{_libdir}/xorg/modules/dri \
+ --with-vulkan-drivers=${vulkan_drivers} \
+ --with-vulkan-icddir=/usr/share/vulkan/icd.d \
--with-sha1=libnettle \
--with-va-libdir=%{_libdir}/libva/dri
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-# strip out undesirable headers
-%{__rm} $RPM_BUILD_ROOT%{_includedir}/GL/wglext.h
# dlopened by soname
%{?with_gallium:%{__rm} $RPM_BUILD_ROOT%{_libdir}/libXvMC*.so}
%{?with_gallium:%{__rm} $RPM_BUILD_ROOT%{_libdir}/libXvMC*.so.1.0}
%{?with_gallium:%{__rm} $RPM_BUILD_ROOT%{_libdir}/gallium-pipe/pipe_*.la}
# not defined by standards; and not needed, there is pkg-config support
%{__rm} $RPM_BUILD_ROOT%{_libdir}/lib*.la
-%{?with_gallium:%{__rm} $RPM_BUILD_ROOT%{_libdir}/libva/dri/gallium_drv_video.la}
+# these are provided by vulkan-devel
+%{__rm} -r $RPM_BUILD_ROOT%{_includedir}/vulkan/{vk_platform.h,vulkan.h}
+
+%if %{without glvnd}
# remove "OS ABI: Linux 2.4.20" tag, so private copies (nvidia or fglrx),
# set up via /etc/ld.so.conf.d/*.conf will be preferred over this
strip -R .note.ABI-tag $RPM_BUILD_ROOT%{_libdir}/libGL.so.*.*
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%files libGL
%defattr(644,root,root,755)
%doc docs/{*.html,README.UVD,patents.txt,relnotes/*.html}
+%if %{with glvnd}
+%attr(755,root,root) %{_libdir}/libGLX_mesa.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/libGLX_mesa.so.0
+%attr(755,root,root) %{_libdir}/libGLX_mesa.so
+%else
%attr(755,root,root) %{_libdir}/libGL.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libGL.so.1
# symlink for binary apps which fail to conform Linux OpenGL ABI
# (and dlopen libGL.so instead of libGL.so.1; the same does Mesa libEGL)
%attr(755,root,root) %{_libdir}/libGL.so
+%endif
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/drirc
%files libGL-devel
%if %{with va}
%files -n libva-driver-gallium
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libva/dri/gallium_drv_video.so
+
+%if %{with gallium_radeon}
+%files -n libva-driver-r600
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libva/dri/r600_drv_video.so
+
+%files -n libva-driver-radeonsi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libva/dri/radeonsi_drv_video.so
+%endif
+
+%if %{with gallium_nouveau}
+%files -n libva-driver-nouveau
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libva/dri/nouveau_drv_video.so
+%endif
%endif
%endif
%attr(755,root,root) %{_libdir}/xorg/modules/dri/swrast_dri.so
%if %{with gallium}
-%ifarch arm
+%ifarch %{arm}
%files dri-driver-vc4
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/dri/vc4_dri.so
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/gallium-pipe/pipe_i965.so
-%ifarch arm
+%ifarch %{arm}
%files pipe-driver-msm
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/gallium-pipe/pipe_msm.so
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/bellagio/libomx_mesa.so
%endif
+
+%files vulkan-icd-intel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libvulkan_intel.so
+%{_datadir}/vulkan/icd.d/intel_icd.*.json
+
+%files vulkan-icd-intel-devel
+%defattr(644,root,root,755)
+%{_includedir}/vulkan/vulkan_intel.h
+
+%if %{with radv}
+%files vulkan-icd-radeon
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libvulkan_radeon.so
+%{_datadir}/vulkan/icd.d/radeon_icd.*.json
+%endif