#
-# TODO:
-# - update wayland patch so Wayland can be included together with XCB
-# again
-#
# Conditional build:
%bcond_with tests # build with tests (require a working Vulkan
# driver (ICD))
-%bcond_with icd # build experimental Vulkan drivers
-%bcond_with wayland # enable Wayland support in loader
-
-%ifnarch %{x8664}
-%undefine with_icd
-%endif
+%bcond_without wayland # enable Wayland support in loader
+%bcond_without xlib # enable XLib support in loader
-%define api_version 1.0.5
-%define llvm_version 3.4.2
+%define api_version 1.0.32
-%define snap 20160312
-# sdk-1.0.5 branch
-%define tools_commit f69ba448ea3a56f5104535636e27b8b8ab543455
-# master branch
-%define lg_commit 0a73713f0d664aa97a7e359f567a16d7c3fce359
-%define rel 7
Summary: LunarG Vulkan SDK
Name: vulkan-sdk
-Version: 1.0.5.0
-Release: 0.s%{snap}.%{rel}
+Version: 1.0.32.0
+Release: 1
License: MIT-like
Group: Development
-Source0: https://github.com/LunarG/VulkanTools/archive/%{tools_commit}/VulkanTools-s%{snap}.tar.gz
-# Source0-md5: dab7bc3a32918a3e124a379b338f9ed2
-Source1: https://github.com/LunarG/LunarGLASS/archive/%{lg_commit}/LunarGLASS-%{snap}.tar.gz
-# Source1-md5: b0fb3253c782e1e539a5884dde8a31f8
-Source2: http://llvm.org/releases/%{llvm_version}/llvm-%{llvm_version}.src.tar.gz
-# Source2-md5: a20669f75967440de949ac3b1bad439c
-Patch0: system_glslang.patch
-Patch1: LunarGLASS-CMakeLists.patch
-Patch2: demos_out_of_src.patch
-Patch3: rpath.patch
-Patch4: wayland.patch
+Source0: https://github.com/LunarG/VulkanTools/archive/sdk-%{version}/VulkanTools-%{version}.tar.gz
+# Source0-md5: 83679b56e7782b1f61b4b86de98fb81b
+Patch0: system_glslang_and_spirv-tools.patch
+Patch1: demos_out_of_src.patch
+Patch2: rpath.patch
+Patch3: always_xcb.patch
+Patch4: vktrace_wayland.patch
URL: http://lunarg.com/vulkan-sdk/
-%{?with_icd:BuildRequires: Mesa-libGL-devel}
BuildRequires: bison
-%{?with_icd:BuildRequires: clang}
BuildRequires: cmake
BuildRequires: GLM
-BuildRequires: glslang >= 3.0.s20160307
-BuildRequires: glslang-devel >= 3.0.s20160307
+BuildRequires: glslang >= 3.0.s20161029
+BuildRequires: glslang-devel >= 3.0.s20161029
BuildRequires: graphviz
BuildRequires: ImageMagick-devel
BuildRequires: libpng
BuildRequires: libxcb-devel
BuildRequires: python3
+BuildRequires: python3-lxml
BuildRequires: python3-modules
-BuildRequires: spirv-tools-devel >= 1.0_rev3.s20160312
+BuildRequires: spirv-tools-devel >= v2016.6.s20161027
BuildRequires: udev-devel
-%{?with_icd:BuildRequires: xorg-lib-libpciaccess-devel}
-Requires: glslang >= 3.0.s20160307
-Requires: spirv-tools >= 1.0_rev3.s20160312
+Requires: glslang >= 3.0.s20161029
+Requires: spirv-tools >= v2016.6.s20161027
Requires: %{name}-debug-layers = %{version}-%{release}
Requires: vulkan-devel = %{version}-%{release}
Requires: vulkan-loader = %{version}-%{release}
%description tools
Vulkan tools.
-%package icd-intel
-Summary: Experimental Vulkan driver for Intel GPUs
-Group: X11/Libraries
-Suggests: vulkan(loader)
-Provides: vulkan(icd) = 1.0.5
-
-%description icd-intel
-Experimental Vulkan driver for Intel GPUs.
-
-%package icd-nulldrv
-Summary: Dummy Vulkan driver
-Group: X11/Libraries
-Suggests: vulkan(loader)
-Provides: vulkan(icd) = 1.0.5
-
-%description icd-nulldrv
-Dummy Vulkan driver.
-
%prep
-%setup -q -c %{?with_icd:-a1}
-
-mv VulkanTools-%{tools_commit} VulkanTools
+%setup -qn VulkanTools-sdk-%{version}
%patch0 -p1
+%patch1 -p1
%patch2 -p1
%patch3 -p1
-#%patch4 -p1
-
-%if %{with icd}
-mv LunarGLASS-%{lg_commit} LunarGLASS
-cd LunarGLASS/Core/LLVM/llvm-3.4
-tar -x --strip-components=1 --skip-old-files -f %{SOURCE3}
-cp -R ../../../../VulkanTools/LunarGLASS/* .
-cd ../../../..
-
-%patch1 -p1
-%endif
+%patch4 -p1
%build
-
-%if %{with icd}
-cd LunarGLASS/Core/LLVM/llvm-3.4
install -d build
cd build
-../%configure \
- --disable-bindings \
- --disable-curses \
- --disable-terminfo
-
-REQUIRES_RTTI=1 %{__make}
-REQUIRES_RTTI=1 %{__make} install prefix=%{_prefix}/local DESTDIR=`pwd`/install
-
-cd ../../../..
-
-install -d build
-cd build
-%cmake \
- -DGLSLANGINCLUDES=%{_includedir}/glslang \
- -DGLSLANGLIBS=%{_libdir} \
- ../
-%{__make}
-%{__make} install
-
-%{?with_tests:%{__make} test}
-
-cd ../..
-%endif
-
-install -d VulkanTools/build
-cd VulkanTools/build
%cmake \
-DCMAKE_INSTALL_DATADIR=share \
-DCMAKE_INSTALL_SYSCONFDIR=etc \
-DBUILD_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
-DBUILD_WSI_WAYLAND_SUPPORT=%{?with_wayland:ON}%{!?with_wayland:OFF} \
- -DBUILD_ICD=%{?with_icd:ON}%{!?with_icd:OFF} \
+ -DBUILD_WSI_XLIB_SUPPORT=%{?with_xlib:ON}%{!?with_xlib:OFF} \
+ -DBUILD_ICD=OFF \
../
%{__make}
cd ..
%endif
-cd ../..
+cd ..
%install
rm -rf $RPM_BUILD_ROOT
$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
-cd VulkanTools/build
-%{__make} install
+# hack for 'make install' tryin to install in relative paths when DESTDIR is set
+install -d "$RPM_BUILD_ROOT$PWD"
+ln -s "$PWD/build" "$RPM_BUILD_ROOT$PWD"
+
+cd build
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT
-cp -p loader/libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}
-ln -s libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so
-ln -s libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so.1
+rm "$RPM_BUILD_ROOT$PWD"
cp -p demos/vulkaninfo $RPM_BUILD_ROOT%{_bindir}/vulkaninfo
-cp -p demos/tri $RPM_BUILD_ROOT%{_bindir}/vulkan-tri
cp -p demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube
-cp -p demos/smoke/smoke $RPM_BUILD_ROOT%{_bindir}/vulkan-smoke
+cp -p demos/smoketest $RPM_BUILD_ROOT%{_bindir}/vulkan-smoketest
cp -p demos/{lunarg.ppm,*-vert.spv,*-frag.spv} $RPM_BUILD_ROOT%{_datadir}/%{name}-demos
-cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
-for f in layers/*.json ; do
-sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f)
-done
+mv $RPM_BUILD_ROOT/usr/etc/vulkan/explicit_layer.d/* $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d
cp -p libs/vkjson/libvkjson.a $RPM_BUILD_ROOT%{_libdir}
cp -p libs/vkjson/vkjson_{info,unittest} $RPM_BUILD_ROOT%{_bindir}
cp -p ../libs/vkjson/vkjson.h $RPM_BUILD_ROOT%{_includedir}
-cp -p ../include/vulkan/* $RPM_BUILD_ROOT%{_includedir}/vulkan
+
+cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}
+for f in layersvt/*.json ; do
+sed -e's@"library_path": "./@"library_path": "%{_libdir}/@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f)
+done
cp -pr ../demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
# restore original demo sources in %{_examplesdir}
-%patch2 -R -p3 -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+%patch1 -R -p2 -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/*.orig 2>/dev/null || :
%ifarch %x8664
-cp -p vktrace/libVkLayer_vktrace_layer.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
+cp -p vktrace/libVkLayer_vktrace_layer.so $RPM_BUILD_ROOT%{_libdir}
cp -p vktrace/vkreplay $RPM_BUILD_ROOT%{_bindir}
cp -p vktrace/vktrace $RPM_BUILD_ROOT%{_bindir}
+sed -e's@"library_path": "../vktrace/@"library_path": "%{_libdir}/@' \
+ layersvt/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
%else
-cp -p vktrace/libVkLayer_vktrace_layer32.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
+cp -p vktrace/libVkLayer_vktrace_layer32.so $RPM_BUILD_ROOT%{_libdir}
cp -p vktrace/vkreplay32 $RPM_BUILD_ROOT%{_bindir}
cp -p vktrace/vktrace32 $RPM_BUILD_ROOT%{_bindir}
rm $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
-sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' \
+sed -e's@"library_path": "../vktrace/@"library_path": "%{_libdir}/@' \
-e's@libVkLayer_vktrace_layer.so@libVkLayer_vktrace_layer32.so@' \
- layers/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
+ layersvt/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
%endif
-%if %{with icd}
-cp -p icd/*/libVK_*.so $RPM_BUILD_ROOT%{_libdir}
-for f in icd/*/*.json ; do
-sed -e's@"library_path": "./@"library_path": "@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/icd.d/%{name}-$(basename $f)
-done
-%endif
-cd ../..
+cd ..
-cp -p VulkanTools/vktrace/README.md vktrace-README.md
-cp -p VulkanTools/vktrace/TODO.md vktrace-TODO.md
+cp -p vktrace/README.md vktrace-README.md
+cp -p vktrace/TODO.md vktrace-TODO.md
%clean
rm -rf $RPM_BUILD_ROOT
%files -n vulkan-loader
%defattr(644,root,root,755)
-%doc VulkanTools/LICENSE.txt
-%doc VulkanTools/loader/{README.md,LoaderAndLayerInterface.md}
+%doc COPYRIGHT.txt LICENSE.txt
+%doc loader/{README.md,LoaderAndLayerInterface.md}
%dir %{_sysconfdir}/vulkan
%dir %{_sysconfdir}/vulkan/icd.d
%dir %{_sysconfdir}/vulkan/explicit_layer.d
%files demos
%defattr(644,root,root,755)
-%doc VulkanTools/LICENSE.txt
+%doc COPYRIGHT.txt LICENSE.txt
%attr(755,root,root) %{_bindir}/vulkan-cube
-%attr(755,root,root) %{_bindir}/vulkan-smoke
-%attr(755,root,root) %{_bindir}/vulkan-tri
+%attr(755,root,root) %{_bindir}/vulkan-smoketest
%{_datadir}/%{name}-demos
%files tools
%defattr(644,root,root,755)
-%doc VulkanTools/LICENSE.txt
+%doc COPYRIGHT.txt LICENSE.txt
%doc vktrace-README.md vktrace-TODO.md
%attr(755,root,root) %{_bindir}/vkjson_info
%attr(755,root,root) %{_bindir}/vkjson_unittest
%ifarch %x8664
%attr(755,root,root) %{_bindir}/vkreplay
%attr(755,root,root) %{_bindir}/vktrace
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer.so
+%attr(755,root,root) %{_libdir}/libVkLayer_vktrace_layer.so
%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
%else
%attr(755,root,root) %{_bindir}/vkreplay32
%attr(755,root,root) %{_bindir}/vktrace32
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer32.so
+%attr(755,root,root) %{_libdir}/libVkLayer_vktrace_layer32.so
%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
%endif
%files validation-layers
%defattr(644,root,root,755)
-%doc VulkanTools/LICENSE.txt
-%doc VulkanTools/layers/{README.md,vk_layer_settings.txt}
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_device_limits.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_draw_state.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_image.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_mem_tracker.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_object_tracker.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_param_checker.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_swapchain.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_threading.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_unique_objects.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/liblayer_utils.so
-%{_datadir}/vulkan/explicit_layer.d/VkLayer_device_limits.json
-%{_datadir}/vulkan/explicit_layer.d/VkLayer_draw_state.json
+%doc COPYRIGHT.txt LICENSE.txt
+%doc layers/{README.md,vk_layer_settings.txt}
+%attr(755,root,root) %{_libdir}/libVkLayer_core_validation.so
+%attr(755,root,root) %{_libdir}/libVkLayer_image.so
+%attr(755,root,root) %{_libdir}/libVkLayer_object_tracker.so
+%attr(755,root,root) %{_libdir}/libVkLayer_parameter_validation.so
+%attr(755,root,root) %{_libdir}/libVkLayer_swapchain.so
+%attr(755,root,root) %{_libdir}/libVkLayer_threading.so
+%attr(755,root,root) %{_libdir}/libVkLayer_unique_objects.so
+%attr(755,root,root) %{_libdir}/libVkLayer_utils.so
+%{_datadir}/vulkan/explicit_layer.d/VkLayer_core_validation.json
%{_datadir}/vulkan/explicit_layer.d/VkLayer_image.json
-%{_datadir}/vulkan/explicit_layer.d/VkLayer_mem_tracker.json
%{_datadir}/vulkan/explicit_layer.d/VkLayer_object_tracker.json
-%{_datadir}/vulkan/explicit_layer.d/VkLayer_param_checker.json
+%{_datadir}/vulkan/explicit_layer.d/VkLayer_parameter_validation.json
%{_datadir}/vulkan/explicit_layer.d/VkLayer_swapchain.json
%{_datadir}/vulkan/explicit_layer.d/VkLayer_threading.json
%{_datadir}/vulkan/explicit_layer.d/VkLayer_unique_objects.json
%files debug-layers
%defattr(644,root,root,755)
-%doc VulkanTools/LICENSE.txt
-%doc VulkanTools/layers/{README.md,vk_layer_settings.txt}
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_api_dump.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_basic.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_generic.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_multi.so
-%attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_screenshot.so
+%doc COPYRIGHT.txt LICENSE.txt
+%doc layersvt/{README.md,vk_layer_settings.txt}
+%attr(755,root,root) %{_libdir}/libVkLayer_api_dump.so
+%attr(755,root,root) %{_libdir}/libVkLayer_basic.so
+%attr(755,root,root) %{_libdir}/libVkLayer_generic.so
+%attr(755,root,root) %{_libdir}/libVkLayer_multi.so
+%attr(755,root,root) %{_libdir}/libVkLayer_screenshot.so
+%attr(755,root,root) %{_libdir}/libVkLayer_utilsvt.so
%{_datadir}/vulkan/explicit_layer.d/VkLayer_api_dump.json
%{_datadir}/vulkan/explicit_layer.d/VkLayer_basic.json
%{_datadir}/vulkan/explicit_layer.d/VkLayer_generic.json
%files -n vulkan-devel
%defattr(644,root,root,755)
-%doc VulkanTools/{LICENSE.txt,README.md}
+%doc COPYRIGHT.txt LICENSE.txt README.md
%{_libdir}/libvulkan.so
%{_libdir}/libvkjson.a
%{_includedir}/vulkan
%{_includedir}/vkjson.h
%{_examplesdir}/%{name}-%{version}
-
-%if %{with icd}
-%files icd-intel
-%defattr(644,root,root,755)
-%doc VulkanTools/LICENSE.txt
-%attr(755,root,root) %{_libdir}/libVK_i965.so
-%{_datadir}/vulkan/icd.d/%{name}-intel_icd.json
-
-%files icd-nulldrv
-%defattr(644,root,root,755)
-%doc VulkanTools/LICENSE.txt
-%attr(755,root,root) %{_libdir}/libVK_nulldrv.so
-%{_datadir}/vulkan/icd.d/%{name}-nulldrv_icd.json
-%endif