3 # - update wayland patch so Wayland can be included together with XCB
7 %bcond_with tests # build with tests (require a working Vulkan
9 %bcond_with icd # build experimental Vulkan drivers
10 %bcond_with wayland # enable Wayland support in loader
16 %define api_version 1.0.8
17 %define llvm_version 3.4.2
21 %define tools_commit 0ee123463a4ea5878aea9f6884830baecfd56d24
23 %define lg_commit 0a73713f0d664aa97a7e359f567a16d7c3fce359
25 Summary: LunarG Vulkan SDK
28 Release: 0.s%{snap}.%{rel}
31 Source0: https://github.com/LunarG/VulkanTools/archive/%{tools_commit}/VulkanTools-s%{snap}.tar.gz
32 # Source0-md5: ff6af5dbcc3bb2354a8e336dd03c18bb
33 Source1: https://github.com/LunarG/LunarGLASS/archive/%{lg_commit}/LunarGLASS-%{snap}.tar.gz
34 # Source1-md5: b0fb3253c782e1e539a5884dde8a31f8
35 Source2: http://llvm.org/releases/%{llvm_version}/llvm-%{llvm_version}.src.tar.gz
36 # Source2-md5: a20669f75967440de949ac3b1bad439c
37 Patch0: system_glslang.patch
38 Patch1: LunarGLASS-CMakeLists.patch
39 Patch2: demos_out_of_src.patch
42 URL: http://lunarg.com/vulkan-sdk/
43 %{?with_icd:BuildRequires: Mesa-libGL-devel}
45 %{?with_icd:BuildRequires: clang}
48 BuildRequires: glslang >= 3.0.s20160325
49 BuildRequires: glslang-devel >= 3.0.s20160325
50 BuildRequires: graphviz
51 BuildRequires: ImageMagick-devel
53 BuildRequires: libxcb-devel
54 BuildRequires: python3
55 BuildRequires: python3-modules
56 BuildRequires: spirv-tools-devel >= 1.0_rev3.s20160329
57 BuildRequires: udev-devel
58 %{?with_icd:BuildRequires: xorg-lib-libpciaccess-devel}
59 Requires: glslang >= 3.0.s20160325
60 Requires: spirv-tools >= 1.0_rev3.s20160329
61 Requires: %{name}-debug-layers = %{version}-%{release}
62 Requires: vulkan-devel = %{version}-%{release}
63 Requires: vulkan-loader = %{version}-%{release}
64 Requires: vulkan-sdk-tools = %{version}-%{release}
65 Requires: %{name}-validation-layers = %{version}-%{release}
66 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
69 Vulkan API Software Development Kit
71 %package -n vulkan-loader
72 Summary: Vulkan API loader
75 Provides: vulkan(loader) = %{api_version}
77 %description -n vulkan-loader
78 Common loader for Vulkan API drivers.
80 %package validation-layers
81 Summary: Validation layers for Vulkan
82 Group: Development/Libraries
83 Requires: vulkan-loader = %{version}-%{release}
85 %description validation-layers
86 Validation layers for Vulkan.
89 Summary: Debug layers for Vulkan
90 Group: Development/Libraries
91 Requires: vulkan-loader = %{version}-%{release}
93 %description debug-layers
94 Debug layers for Vulkan.
96 %package -n vulkan-devel
97 Summary: Header files for the Vulkan API
98 Summary(pl.UTF-8): Pliki nagłówkowe API Vulkan
99 Group: Development/Libraries
100 Requires: vulkan-loader = %{version}-%{release}
102 %description -n vulkan-devel
103 Header files for the Vulkan API.
105 %description -n vulkan-devel -l pl.UTF-8
106 Pliki nagłówkowe API Vulkan.
109 Summary: Vulkan demos
110 Group: Development/Libraries
111 Requires: vulkan(icd)
112 Requires: vulkan-loader = %{version}-%{release}
118 Summary: Vulkan tools
120 Suggests: vulkan(icd)
121 Requires: vulkan-loader = %{version}-%{release}
127 Summary: Experimental Vulkan driver for Intel GPUs
129 Suggests: vulkan(loader)
130 Provides: vulkan(icd) = 1.0.5
132 %description icd-intel
133 Experimental Vulkan driver for Intel GPUs.
136 Summary: Dummy Vulkan driver
138 Suggests: vulkan(loader)
139 Provides: vulkan(icd) = 1.0.5
141 %description icd-nulldrv
145 %setup -q -c %{?with_icd:-a1}
147 mv VulkanTools-%{tools_commit} VulkanTools
155 mv LunarGLASS-%{lg_commit} LunarGLASS
156 cd LunarGLASS/Core/LLVM/llvm-3.4
157 tar -x --strip-components=1 --skip-old-files -f %{SOURCE3}
158 cp -R ../../../../VulkanTools/LunarGLASS/* .
167 cd LunarGLASS/Core/LLVM/llvm-3.4
175 REQUIRES_RTTI=1 %{__make}
176 REQUIRES_RTTI=1 %{__make} install prefix=%{_prefix}/local DESTDIR=`pwd`/install
183 -DGLSLANGINCLUDES=%{_includedir}/glslang \
184 -DGLSLANGLIBS=%{_libdir} \
189 %{?with_tests:%{__make} test}
194 install -d VulkanTools/build
198 -DCMAKE_INSTALL_DATADIR=share \
199 -DCMAKE_INSTALL_SYSCONFDIR=etc \
200 -DBUILD_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
201 -DBUILD_WSI_WAYLAND_SUPPORT=%{?with_wayland:ON}%{!?with_wayland:OFF} \
202 -DBUILD_ICD=%{?with_icd:ON}%{!?with_icd:OFF} \
208 LC_ALL=C.utf-8 VK_LAYER_PATH=../layers LD_LIBRARY_PATH=../loader:../layers ./run_all_tests.sh
215 rm -rf $RPM_BUILD_ROOT
216 install -d $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/icd.d \
217 $RPM_BUILD_ROOT{%{_datadir},%{_sysconfdir}}/vulkan/{explicit,implicit}_layer.d \
218 $RPM_BUILD_ROOT{%{_bindir},%{_libdir}/vulkan/layer} \
219 $RPM_BUILD_ROOT%{_includedir}/vulkan \
220 $RPM_BUILD_ROOT%{_datadir}/%{name}-demos \
221 $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
227 cp -p loader/libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}
228 ln -s libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so
229 ln -s libvulkan.so.1.0.5 $RPM_BUILD_ROOT%{_libdir}/libvulkan.so.1
231 cp -p demos/vulkaninfo $RPM_BUILD_ROOT%{_bindir}/vulkaninfo
232 cp -p demos/tri $RPM_BUILD_ROOT%{_bindir}/vulkan-tri
233 cp -p demos/cube $RPM_BUILD_ROOT%{_bindir}/vulkan-cube
234 cp -p demos/smoke/smoke $RPM_BUILD_ROOT%{_bindir}/vulkan-smoke
235 cp -p demos/{lunarg.ppm,*-vert.spv,*-frag.spv} $RPM_BUILD_ROOT%{_datadir}/%{name}-demos
237 cp -p install_staging/*.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
238 for f in layers/*.json ; do
239 sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/$(basename $f)
242 cp -p libs/vkjson/libvkjson.a $RPM_BUILD_ROOT%{_libdir}
243 cp -p libs/vkjson/vkjson_{info,unittest} $RPM_BUILD_ROOT%{_bindir}
245 cp -p ../libs/vkjson/vkjson.h $RPM_BUILD_ROOT%{_includedir}
246 cp -p ../include/vulkan/* $RPM_BUILD_ROOT%{_includedir}/vulkan
248 cp -pr ../demos/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
250 # restore original demo sources in %{_examplesdir}
251 %patch2 -R -p3 -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
252 rm -f $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}/*.orig 2>/dev/null || :
255 cp -p vktrace/libVkLayer_vktrace_layer.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
256 cp -p vktrace/vkreplay $RPM_BUILD_ROOT%{_bindir}
257 cp -p vktrace/vktrace $RPM_BUILD_ROOT%{_bindir}
259 cp -p vktrace/libVkLayer_vktrace_layer32.so $RPM_BUILD_ROOT%{_libdir}/vulkan/layer
260 cp -p vktrace/vkreplay32 $RPM_BUILD_ROOT%{_bindir}
261 cp -p vktrace/vktrace32 $RPM_BUILD_ROOT%{_bindir}
262 rm $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
263 sed -e's@"library_path": "./@"library_path": "%{_libdir}/vulkan/layer/@' \
264 -e's@libVkLayer_vktrace_layer.so@libVkLayer_vktrace_layer32.so@' \
265 layers/VkLayer_vktrace_layer.json > $RPM_BUILD_ROOT%{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
269 cp -p icd/*/libVK_*.so $RPM_BUILD_ROOT%{_libdir}
270 for f in icd/*/*.json ; do
271 sed -e's@"library_path": "./@"library_path": "@' $f > $RPM_BUILD_ROOT%{_datadir}/vulkan/icd.d/%{name}-$(basename $f)
276 cp -p VulkanTools/vktrace/README.md vktrace-README.md
277 cp -p VulkanTools/vktrace/TODO.md vktrace-TODO.md
280 rm -rf $RPM_BUILD_ROOT
282 %post -n vulkan-loader -p /sbin/ldconfig
283 %postun -n vulkan-loader -p /sbin/ldconfig
286 %defattr(644,root,root,755)
288 %files -n vulkan-loader
289 %defattr(644,root,root,755)
290 %doc VulkanTools/LICENSE.txt
291 %doc VulkanTools/loader/{README.md,LoaderAndLayerInterface.md}
292 %dir %{_sysconfdir}/vulkan
293 %dir %{_sysconfdir}/vulkan/icd.d
294 %dir %{_sysconfdir}/vulkan/explicit_layer.d
295 %dir %{_sysconfdir}/vulkan/implicit_layer.d
296 %dir %{_datadir}/vulkan
297 %dir %{_datadir}/vulkan/icd.d
298 %dir %{_datadir}/vulkan/explicit_layer.d
299 %dir %{_datadir}/vulkan/implicit_layer.d
300 %{_libdir}/libvulkan.so.1.*.*
301 %ghost %{_libdir}/libvulkan.so.1
302 %dir %{_libdir}/vulkan
303 %dir %{_libdir}/vulkan/layer
306 %defattr(644,root,root,755)
307 %doc VulkanTools/LICENSE.txt
308 %attr(755,root,root) %{_bindir}/vulkan-cube
309 %attr(755,root,root) %{_bindir}/vulkan-smoke
310 %attr(755,root,root) %{_bindir}/vulkan-tri
311 %{_datadir}/%{name}-demos
314 %defattr(644,root,root,755)
315 %doc VulkanTools/LICENSE.txt
316 %doc vktrace-README.md vktrace-TODO.md
317 %attr(755,root,root) %{_bindir}/vkjson_info
318 %attr(755,root,root) %{_bindir}/vkjson_unittest
319 %attr(755,root,root) %{_bindir}/vulkaninfo
321 %attr(755,root,root) %{_bindir}/vkreplay
322 %attr(755,root,root) %{_bindir}/vktrace
323 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer.so
324 %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json
326 %attr(755,root,root) %{_bindir}/vkreplay32
327 %attr(755,root,root) %{_bindir}/vktrace32
328 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_vktrace_layer32.so
329 %{_datadir}/vulkan/explicit_layer.d/VkLayer_vktrace_layer32.json
332 %files validation-layers
333 %defattr(644,root,root,755)
334 %doc VulkanTools/LICENSE.txt
335 %doc VulkanTools/layers/{README.md,vk_layer_settings.txt}
336 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_device_limits.so
337 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_draw_state.so
338 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_image.so
339 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_mem_tracker.so
340 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_object_tracker.so
341 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_param_checker.so
342 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_swapchain.so
343 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_threading.so
344 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_unique_objects.so
345 %attr(755,root,root) %{_libdir}/vulkan/layer/liblayer_utils.so
346 %{_datadir}/vulkan/explicit_layer.d/VkLayer_device_limits.json
347 %{_datadir}/vulkan/explicit_layer.d/VkLayer_draw_state.json
348 %{_datadir}/vulkan/explicit_layer.d/VkLayer_image.json
349 %{_datadir}/vulkan/explicit_layer.d/VkLayer_mem_tracker.json
350 %{_datadir}/vulkan/explicit_layer.d/VkLayer_object_tracker.json
351 %{_datadir}/vulkan/explicit_layer.d/VkLayer_param_checker.json
352 %{_datadir}/vulkan/explicit_layer.d/VkLayer_swapchain.json
353 %{_datadir}/vulkan/explicit_layer.d/VkLayer_threading.json
354 %{_datadir}/vulkan/explicit_layer.d/VkLayer_unique_objects.json
357 %defattr(644,root,root,755)
358 %doc VulkanTools/LICENSE.txt
359 %doc VulkanTools/layers/{README.md,vk_layer_settings.txt}
360 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_api_dump.so
361 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_basic.so
362 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_generic.so
363 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_multi.so
364 %attr(755,root,root) %{_libdir}/vulkan/layer/libVkLayer_screenshot.so
365 %{_datadir}/vulkan/explicit_layer.d/VkLayer_api_dump.json
366 %{_datadir}/vulkan/explicit_layer.d/VkLayer_basic.json
367 %{_datadir}/vulkan/explicit_layer.d/VkLayer_generic.json
368 %{_datadir}/vulkan/explicit_layer.d/VkLayer_multi.json
369 %{_datadir}/vulkan/explicit_layer.d/VkLayer_screenshot.json
371 %files -n vulkan-devel
372 %defattr(644,root,root,755)
373 %doc VulkanTools/{LICENSE.txt,README.md}
374 %{_libdir}/libvulkan.so
375 %{_libdir}/libvkjson.a
376 %{_includedir}/vulkan
377 %{_includedir}/vkjson.h
378 %{_examplesdir}/%{name}-%{version}
382 %defattr(644,root,root,755)
383 %doc VulkanTools/LICENSE.txt
384 %attr(755,root,root) %{_libdir}/libVK_i965.so
385 %{_datadir}/vulkan/icd.d/%{name}-intel_icd.json
388 %defattr(644,root,root,755)
389 %doc VulkanTools/LICENSE.txt
390 %attr(755,root,root) %{_libdir}/libVK_nulldrv.so
391 %{_datadir}/vulkan/icd.d/%{name}-nulldrv_icd.json