diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..21aca76 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/SPIRV-Headers-*.tar.gz +/glslang-*.tar.gz +/SPIRV-Tools-*.tar.gz +/Vulkan-LoaderAndValidationLayers-sdk-*.tar.gz +/vulkan-*.src.rpm diff --git a/0003-layers-Don-t-set-an-rpath.patch b/0003-layers-Don-t-set-an-rpath.patch new file mode 100644 index 0000000..2dc28b5 --- /dev/null +++ b/0003-layers-Don-t-set-an-rpath.patch @@ -0,0 +1,13 @@ +--- a/tests/layers/CMakeLists.txt ++++ b/tests/layers/CMakeLists.txt +@@ -5,9 +5,6 @@ + VkLayer_device_profile_api + VkLayer_test + ) +- +-set(VK_LAYER_RPATH /usr/lib/x86_64-linux-gnu/vulkan/layer:/usr/lib/i386-linux-gnu/vulkan/layer) +-set(CMAKE_INSTALL_RPATH ${VK_LAYER_RPATH}) + + if (WIN32) + if (NOT (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)) + diff --git a/0008-demos-Don-t-build-tri-or-cube.patch b/0008-demos-Don-t-build-tri-or-cube.patch new file mode 100644 index 0000000..94f292e --- /dev/null +++ b/0008-demos-Don-t-build-tri-or-cube.patch @@ -0,0 +1,98 @@ +--- a/demos/CMakeLists.txt ++++ b/demos/CMakeLists.txt +@@ -94,46 +94,6 @@ + endif() + + if(WIN32) +- # For Windows, since 32-bit and 64-bit items can co-exist, we build each in its own build directory. +- # 32-bit target data goes in build32, and 64-bit target data goes into build. So, include/link the +- # appropriate data at build time. +- if (CMAKE_CL_64) +- set (BUILDTGT_DIR build) +- else () +- set (BUILDTGT_DIR build32) +- endif() +- +- # Use static MSVCRT libraries +- foreach(configuration in CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO +- CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO) +- if(${configuration} MATCHES "/MD") +- string(REGEX REPLACE "/MD" "/MT" ${configuration} "${${configuration}}") +- endif() +- endforeach() +- +- file(COPY cube.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) +- file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos) +-endif() +- +-add_custom_command( +- COMMENT "Compiling cube demo vertex shader" +- OUTPUT cube.vert.inc +- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.vert.inc ${PROJECT_SOURCE_DIR}/demos/cube.vert +- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.vert +- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.vert ${GLSLANG_VALIDATOR} +-) +-add_custom_command( +- COMMENT "Compiling cube demo fragment shader" +- OUTPUT cube.frag.inc +- COMMAND ${GLSLANG_VALIDATOR} -V -x -o ${CMAKE_CURRENT_BINARY_DIR}/cube.frag.inc ${PROJECT_SOURCE_DIR}/demos/cube.frag +- MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/demos/cube.frag +- DEPENDS ${PROJECT_SOURCE_DIR}/demos/cube.frag ${GLSLANG_VALIDATOR} +-) +- +-include_directories(${CMAKE_CURRENT_BINARY_DIR}) +- +- +-if(WIN32) + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES") + endif() +@@ -173,47 +133,6 @@ + endif() + endif() + +-###################################################################################### +-# cube +- +-if(APPLE) +- include(macOS/cube/cube.cmake) +-elseif(NOT WIN32) +- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) +- add_executable(cube cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) +- target_link_libraries(cube ${LIBRARIES}) +- endif() +-else() +- if (CMAKE_CL_64) +- set (LIB_DIR "Win64") +- else() +- set (LIB_DIR "Win32") +- endif() +- +- add_executable(cube WIN32 cube.c ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) +- target_link_libraries(cube ${LIBRARIES}) +-endif() +- +-###################################################################################### +-# cubepp +- +-if(APPLE) +- include(macOS/cubepp/cubepp.cmake) +-elseif(NOT WIN32) +- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) +- add_executable(cubepp cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) +- target_link_libraries(cubepp ${LIBRARIES}) +- endif() +-else() +- if (CMAKE_CL_64) +- set (LIB_DIR "Win64") +- else() +- set (LIB_DIR "Win32") +- endif() +- +- add_executable(cubepp WIN32 cube.cpp ${PROJECT_SOURCE_DIR}/demos/cube.vert ${PROJECT_SOURCE_DIR}/demos/cube.frag cube.vert.inc cube.frag.inc) +- target_link_libraries(cubepp ${LIBRARIES}) +-endif() + + ###################################################################################### + # smoke + diff --git a/cmake_spirv_tools_commit.patch b/cmake_spirv_tools_commit.patch new file mode 100644 index 0000000..047acf3 --- /dev/null +++ b/cmake_spirv_tools_commit.patch @@ -0,0 +1,12 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -380,9 +380,6 @@ + run_vk_xml_generate(helper_file_generator.py vk_object_types.h) + run_vk_xml_generate(helper_file_generator.py vk_extension_helper.h) + run_vk_xml_generate(helper_file_generator.py vk_typemap_helper.h) +-if(BUILD_LAYERS) +- run_external_revision_generate(${EXTERNAL_SOURCE_ROOT}/glslang/External/spirv-tools SPIRV_TOOLS_COMMIT_ID spirv_tools_commit_id.h) +-endif() + + + diff --git a/dead.package b/dead.package deleted file mode 100644 index be7dc56..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Kronos split the source code diff --git a/sources b/sources new file mode 100644 index 0000000..93b49e6 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (Vulkan-LoaderAndValidationLayers-sdk-1.1.73.0.tar.gz) = 609cef72369265dbae467cbd9677416e62715119140e6e0a74a593d7d00a723fe265344e180e099af46fb92204d494fbb975ba1c9490261b676709fb7dce5d09 diff --git a/spirv_tools_commit_id.h b/spirv_tools_commit_id.h new file mode 100644 index 0000000..c4269ad --- /dev/null +++ b/spirv_tools_commit_id.h @@ -0,0 +1,29 @@ +// *** THIS FILE IS GENERATED - DO NOT EDIT *** +// See external_revision_generator.py for modifications + +/*************************************************************************** + * + * Copyright (c) 2015-2017 The Khronos Group Inc. + * Copyright (c) 2015-2017 Valve Corporation + * Copyright (c) 2015-2017 LunarG, Inc. + * Copyright (c) 2015-2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Author: Chris Forbes + * Author: Cort Stratton + * + ****************************************************************************/ +#pragma once + +#define SPIRV_TOOLS_COMMIT_ID "26a698c34788bb69123a1f3789970a16cf4d9641" diff --git a/vulkan.spec b/vulkan.spec new file mode 100644 index 0000000..368e487 --- /dev/null +++ b/vulkan.spec @@ -0,0 +1,320 @@ +%if 0%{?rhel} && 0%{?rhel} <= 7 +%global _wayland OFF +%else +%global _wayland ON +%endif + +%global __requires_exclude ^libVkLayer_utils.so + +%global srcname Vulkan-LoaderAndValidationLayers + +Name: vulkan +Version: 1.1.73.0 +Release: 6%{?dist} +Summary: Vulkan loader and validation layers +License: ASL 2.0 +URL: https://github.com/KhronosGroup +Source0: %url/%{srcname}/archive/sdk-%{version}.tar.gz#/%{srcname}-sdk-%{version}.tar.gz +# Edit spirv_tools_commit_id.h to match spirv-tools commit id +Source1: spirv_tools_commit_id.h +Patch0: cmake_spirv_tools_commit.patch +Patch1: 0003-layers-Don-t-set-an-rpath.patch +Patch2: 0008-demos-Don-t-build-tri-or-cube.patch + +BuildRequires: gcc-c++ +BuildRequires: bison +BuildRequires: cmake3 +BuildRequires: ninja-build +BuildRequires: /usr/bin/chrpath +BuildRequires: python%{python3_pkgversion} +BuildRequires: glslang-devel +BuildRequires: spirv-headers-devel +BuildRequires: pkgconfig(SPIRV-Tools) = 2018.3.0 +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(pciaccess) +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xcb) +BuildRequires: pkgconfig(xrandr) +%if 0%{?fedora} || 0%{?rhel} > 7 +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(wayland-cursor) +BuildRequires: pkgconfig(wayland-server) +BuildRequires: pkgconfig(wayland-egl) +Requires: mesa-vulkan-drivers +%endif +Requires: vulkan-filesystem = %{version}-%{release} +Requires: spirv-tools-libs%{?_isa} = 2018.3.0 + +%description +Vulkan is a new generation graphics and compute API that provides +high-efficiency, cross-platform access to modern GPUs used in a wide variety of +devices from PCs and consoles to mobile phones and embedded platforms. + +This package contains the reference ICD loader and validation layers for +Vulkan. + +%package demos +Summary: Vulkan demo package +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description demos +Vulkan demo package contains vulkaninfo and vulkan-smoketest. + +%package devel +Summary: Vulkan development package +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +Development headers for Vulkan applications. + +%package filesystem +Summary: Vulkan filesystem package +BuildArch: noarch + +%description filesystem +Filesystem for Vulkan. + +%prep +%setup -q -n %{srcname}-sdk-%{version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +cp %{SOURCE1} . + +# fix spurious-executable-perm +chmod 0644 README.md + +# fix wrong-script-end-of-line-encoding +sed -i 's/\r//' README.md + +# sigh inttypes +sed -i 's/inttypes.h/cinttypes/' layers/*.{cpp,h} + +%build +%cmake3 -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH:BOOL=yes \ + -DBUILD_VKJSON=OFF \ + -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_datadir} \ + -DBUILD_WSI_MIR_SUPPORT=OFF \ + -DBUILD_WSI_WAYLAND_SUPPORT=%{_wayland} \ + -DBUILD_TESTS=OFF \ + -GNinja +%ninja_build + +%install +%ninja_install + + +# create the filesystem +mkdir -p %{buildroot}%{_sysconfdir}/vulkan/{explicit,implicit}_layer.d/ \ +%{buildroot}%{_datadir}/vulkan/{explicit,implicit}_layer.d/ \ +%{buildroot}{%{_sysconfdir},%{_datadir}}/vulkan/icd.d + +# rename smoketest +mv %{buildroot}%{_bindir}/smoketest %{buildroot}%{_bindir}/vulkan-smoketest + +# remove RPATH +chrpath -d %{buildroot}%{_bindir}/vulkaninfo + +%ldconfig_scriptlets + +%files +%license LICENSE.txt COPYRIGHT.txt +%doc README.md CONTRIBUTING.md +%{_datadir}/vulkan/explicit_layer.d/*.json +%{_libdir}/libVkLayer_*.so +%{_libdir}/libvulkan.so.* + +%files demos +%{_bindir}/vulkaninfo +%{_bindir}/vulkan-smoketest + +%files devel +%{_includedir}/vulkan/ +%{_libdir}/pkgconfig/vulkan.pc +%{_libdir}/libvulkan.so + +%files filesystem +%dir %{_sysconfdir}/vulkan/ +%dir %{_sysconfdir}/vulkan/explicit_layer.d/ +%dir %{_sysconfdir}/vulkan/icd.d/ +%dir %{_sysconfdir}/vulkan/implicit_layer.d/ +%dir %{_datadir}/vulkan/ +%dir %{_datadir}/vulkan/explicit_layer.d/ +%dir %{_datadir}/vulkan/icd.d/ +%dir %{_datadir}/vulkan/implicit_layer.d/ + +%changelog +* Mon Jun 18 2018 Leigh Scott - 1.1.73.0-6 +- Revert last commit + +* Mon Jun 18 2018 Leigh Scott - 1.1.73.0-5 +- Remove bogus mesa-vulkan-drivers requires, vulkan doesn't require it! + +* Mon Jun 18 2018 Adam Jackson - 1.1.73.0-4 +- Undo previous change. Mesa is wrong to not build radv for more arches, + and there's nothing x86-specific about this package, the Vulkan loader. + +* Sat Jun 16 2018 Leigh Scott - 1.1.73.0-3 +- Make vulkan x86 only to match vulkan drivers + +* Wed Jun 13 2018 Adam Jackson - 1.1.73.0-2 +- Change to Requires: mesa-vulkan-drivers. Too many things still don't agree + what Recommends means, and they're even lighter-weight than the GL drivers + which are already hard Requires. + +* Tue Apr 24 2018 Leigh Scott - 1.1.73.0-1 +- Update to 1.1.73.0 + +* Thu Mar 08 2018 Leigh Scott - 1.1.70.0-1 +- Update to 1.1.70.0 + +* Sat Feb 10 2018 Leigh Scott - 1.0.68.0-2 +- Fix broken isa + +* Fri Feb 09 2018 Leigh Scott - 1.0.68.0-1 +- Update to 1.0.68.0 + +* Thu Feb 08 2018 Leigh Scott - 1.0.65.2-2 +- Use ninja to build + +* Tue Jan 09 2018 Leigh Scott - 1.0.65.2-1 +- Update to 1.0.65.2 + +* Tue Jan 02 2018 Leigh Scott - 1.0.65.1-3 +- Add build require glslang-devel, spirv-tools-devel and spirv-headers-devel + +* Tue Dec 19 2017 Leigh Scott - 1.0.65.1-2 +- Move VkICD_mock to devel + +* Tue Dec 19 2017 Leigh Scott - 1.0.65.1-1 +- Update to 1.0.65.1 + +* Wed Nov 22 2017 Leigh Scott - 1.0.61.1-7 +- Redo conditionals + +* Thu Nov 16 2017 Merlin Mathesius - 1.0.61.1-6 +- Additional spec file conditional fix + +* Tue Oct 31 2017 Leigh Scott - 1.0.61.1-5 +- Add small compile fix + +* Tue Oct 31 2017 Leigh Scott - 1.0.61.1-4 +- Fix vulkan requires +- Move demos to sub-package + +* Tue Oct 31 2017 Leigh Scott - 1.0.61.1-3 +- Remove epel conditionals +- Remove vulkan git conditionals +- Use cmake macro for everything + +* Fri Oct 06 2017 Leigh Scott - 1.0.61.1-2 +- Add upstream fix for 32bit TEXTREL issue (like anyone gives a damn) + +* Thu Sep 21 2017 Leigh Scott - 1.0.61.1-1 +- Update to 1.0.61.1 release (rhbz 1493425) + +* Tue Sep 19 2017 Leigh Scott - 1.0.61.0-1 +- Update to 1.0.61.0 release + +* Mon Aug 14 2017 Leigh Scott - 1.0.57.0-1 +- Update to 1.0.57.0 release + +* Thu Aug 03 2017 Fedora Release Engineering - 1.0.54.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.0.54.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Jul 22 2017 Leigh Scott - 1.0.54.0-2 +- Cleanup cmake commands + +* Sat Jul 22 2017 Leigh Scott - 1.0.54.0-1 +- Update to 1.0.54.0 release +- Use build requires cmake3 for epel build +- Build layers for epel + +* Fri Jun 16 2017 Leigh Scott - 1.0.51.0-1 +- Update to 1.0.51.0 release + +* Mon May 15 2017 Fedora Release Engineering - 1.0.46.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Fri Apr 14 2017 Leigh Scott - 1.0.46.0-2 +- Fix epel build + +* Fri Apr 14 2017 Leigh Scott - 1.0.46.0-1 +- Update to 1.0.46.0 release + +* Sat Apr 01 2017 Leigh Scott - 1.0.42.2-1 +- Update to 1.0.42.2 release + +* Fri Mar 03 2017 Leigh Scott - 1.0.42.0-1 +- Update to 1.0.42.0 release + +* Sat Feb 11 2017 Fedora Release Engineering - 1.0.39.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jan 31 2017 Leigh Scott - 1.0.39.1-1 +- Update to 1.0.39.1 release + +* Tue Jan 24 2017 Leigh Scott - 1.0.39.0-1 +- Update to 1.0.39.0 release +- Add build requires libXrandr-devel + +* Fri Dec 16 2016 leigh scott - 1.0.37.0-1 +- Update to 1.0.37.0 release +- Disable Mir as it's lame ubuntu rubbish + +* Fri Dec 02 2016 leigh scott - 1.0.34.0-0.1.gitd4cd34f +- Update to latest git + +* Thu Dec 01 2016 leigh scott - 1.0.30.0-2 +- Fix VkLayer undefined symbol: util_GetExtensionProperties + +* Sat Oct 15 2016 Leigh Scott - 1.0.30.0-1 +- Update to 1.0.30.0 release + +* Mon Oct 10 2016 Leigh Scott - 1.0.26.0-4 +- Build with wayland support (rhbz 1383115) + +* Tue Sep 27 2016 Leigh Scott - 1.0.26.0-3 +- Move unversioned libraries +- Disable vkjson build +- Fix license tag + +* Sun Sep 11 2016 Leigh Scott - 1.0.26.0-2 +- Make layers conditional. + +* Sun Sep 11 2016 Leigh Scott - 1.0.26.0-1 +- Update to 1.0.26.0 release + +* Thu Sep 08 2016 Leigh Scott - 1.0.26.0-0.3.gitfbb8667 +- Clean up + +* Thu Sep 08 2016 Leigh Scott - 1.0.26.0-0.2.gitfbb8667 +- Change build requires python3 +- Use release for cmake +- Make build verbose + +* Wed Sep 07 2016 Leigh Scott - 1.0.26.0-0.1.gitfbb8667 +- Update to latest git + +* Tue Feb 16 2016 Igor Gnatenko - 1.0.3-0.1.git1affe90 +- Add ldconfig in post/postun +- Use upstream tarball from commit + patches +- Fix versioning. In fact it was never released +- Fixup mixing of spaces/tabs +- Remove rpath from vulkaninfo +- Make filesystem subpkg noarch (it is really noarch) +- BuildRequire gcc and gcc-c++ explicitly +- Require main pkg with isa tag +- Fix perms and perm of README.md +- Use %%license tag + +* Tue Feb 16 2016 Adam Jackson - 1.0.3-0 +- Update loader to not build cube or tri. Drop bundled LunarGLASS and llvm + since they're only needed for those demos. + +* Tue Feb 16 2016 Adam Jackson - 1.0.3-0 +- Initial packaging