diff options
Diffstat (limited to 'gnu/packages/vulkan.scm')
-rw-r--r-- | gnu/packages/vulkan.scm | 190 |
1 files changed, 90 insertions, 100 deletions
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm index 6a2c219aac..d5f5be6816 100644 --- a/gnu/packages/vulkan.scm +++ b/gnu/packages/vulkan.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,7 +43,7 @@ (define-public spirv-headers (package (name "spirv-headers") - (version "1.3.7") + (version "1.5.3") (source (origin (method git-fetch) @@ -51,18 +52,11 @@ (commit version))) (sha256 (base32 - "0m56smanfcczjfif4yfcqhjj4d4sc088kwg6dgia8fwdsjavdm4d")) - (file-name (git-file-name name version)))) + "069sivqajp7z4p44lmrz23lvf237xpkjxd4lzrg27836pwqcz9bj")) + (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments - `(#:tests? #f ;; No tests - #:phases (modify-phases %standard-phases - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (invoke "cmake" "-E" "copy_directory" - "../source/include/spirv" - (string-append (assoc-ref outputs "out") - "/include/spirv"))))))) + `(#:tests? #f)) ;no tests (home-page "https://github.com/KhronosGroup/SPIRV-Headers") (synopsis "Machine-readable files from the SPIR-V Registry") (description @@ -81,7 +75,7 @@ and for the GLSL.std.450 extended instruction set. (define-public spirv-tools (package (name "spirv-tools") - (version "2019.2") + (version "2020.2") (source (origin (method git-fetch) @@ -89,13 +83,14 @@ and for the GLSL.std.450 extended instruction set. (url "https://github.com/KhronosGroup/SPIRV-Tools") (commit (string-append "v" version)))) (sha256 - (base32 "0zwz6qg8g8165h7cw52agryjrdb29gbmsbziw3pwiddfkyma8vvg")) + (base32 "00b7xgyrcb2qq63pp3cnw5q1xqx2d9rfn65lai6n6r89s1vh3vg6")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; FIXME: Tests fail. - #:configure-flags (list (string-append "-DSPIRV-Headers_SOURCE_DIR=" - (assoc-ref %build-inputs "spirv-headers"))))) + `(#:configure-flags (list "-DBUILD_SHARED_LIBS=ON" + (string-append + "-DSPIRV-Headers_SOURCE_DIR=" + (assoc-ref %build-inputs "spirv-headers"))))) (inputs `(("spirv-headers" ,spirv-headers))) (native-inputs `(("pkg-config" ,pkg-config) ("python" ,python))) @@ -110,7 +105,7 @@ parser,disassembler, validator, and optimizer for SPIR-V.") (define-public glslang (package (name "glslang") - (version "7.11.3214") + (version "8.13.3743") (source (origin (method git-fetch) @@ -119,21 +114,15 @@ parser,disassembler, validator, and optimizer for SPIR-V.") (commit version))) (sha256 (base32 - "0dqjga0lcza006fhac26zp2plbq4gx8a6nsmrwkqlzji6lw1jins")) + "0d20wfpp2fmbnz1hnsjr9xc62lxpj86ik2qyviqbni0pqj212cry")) (file-name (string-append name "-" version "-checkout")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ;; No tests - ;; glslang tries to set CMAKE_INSTALL_PREFIX manually. Remove the - ;; offending line. - #:phases (modify-phases %standard-phases - (add-after 'patch-source-shebangs 'fix-cmakelists - (lambda _ - (substitute* "CMakeLists.txt" - (("set.*CMAKE_INSTALL_PREFIX.*") "")) - #t))))) - (native-inputs `(("bison" ,bison) - ("pkg-config" ,pkg-config))) + '(#:tests? #f ;FIXME: requires bundled SPIRV-Tools + #:configure-flags '("-DBUILD_SHARED_LIBS=ON"))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python" ,python))) (home-page "https://github.com/KhronosGroup/glslang") (synopsis "OpenGL and OpenGL ES shader front end and validator") (description @@ -149,7 +138,7 @@ interpretation of the specifications for these languages.") (define-public vulkan-headers (package (name "vulkan-headers") - (version "1.1.121") + (version "1.2.141") (source (origin (method git-fetch) @@ -159,7 +148,7 @@ interpretation of the specifications for these languages.") (file-name (git-file-name name version)) (sha256 (base32 - "0hbgbdxj7lrm37phb0pkq5zgss3h21znj3mivnyva5f60i2wgr73")))) + "10nmx6y4llllfcczyfz76amd0vkqv09dj952d19zkzmmgcval7zq")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; No tests. @@ -173,7 +162,7 @@ interpretation of the specifications for these languages.") (define-public vulkan-loader (package (name "vulkan-loader") - (version (package-version vulkan-headers)) + (version "1.2.140") (source (origin (method git-fetch) @@ -183,26 +172,32 @@ interpretation of the specifications for these languages.") (file-name (git-file-name name version)) (sha256 (base32 - "1gbrppfxrncvva30fikgzm7f15xs527sb4lf1sswdyxj3h5cw741")))) + "0rhyz0qgp0i7pcx6wlvgwy7j33d4cs0xx39f0b6igpfk0vk70r1w")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ;FIXME: 23/39 tests fail. Try "tests/run_all_tests.sh". - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-spirv-tools-commit-id - (lambda* (#:key inputs #:allow-other-keys) - ;; Remove lines trying to build in a git commit id. - (substitute* "CMakeLists.txt" ((".*spirv_tools_commit_id.h.*") "")) - #t))) - #:configure-flags (list - "-DBUILD_TESTS=OFF" ; FIXME: Needs 'googletest' submodule. - (string-append "-DCMAKE_INSTALL_LIBDIR=" - (assoc-ref %outputs "out") "/lib")))) - (native-inputs `(("libxrandr" ,libxrandr) - ("pkg-config" ,pkg-config) - ("python" ,python) - ("vulkan-headers" ,vulkan-headers) - ("wayland" ,wayland))) + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'unpack-googletest + (lambda* (#:key inputs #:allow-other-keys) + (let ((gtest (assoc-ref inputs "googletest:source"))) + (when gtest + (copy-recursively gtest "external/googletest")) + #t))) + (add-after 'unpack 'disable-loader-tests + (lambda _ + ;; Many tests require a Vulkan driver. Skip those. + (substitute* "tests/loader_validation_tests.cpp" + ((".*= vkCreateInstance.*" all) + (string-append "GTEST_SKIP();\n" all)) + (("TEST_F.*InstanceExtensionEnumerated.*" all) + (string-append all "\nGTEST_SKIP();\n"))) + #t))))) + (native-inputs + `(("googletest:source" ,(package-source googletest)) + ("libxrandr" ,libxrandr) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("vulkan-headers" ,vulkan-headers) + ("wayland" ,wayland))) (home-page "https://github.com/KhronosGroup/Vulkan-Loader") (synopsis "Khronos official ICD loader and validation layers for Vulkan") @@ -221,7 +216,7 @@ and the ICD.") (define-public vulkan-tools (package (name "vulkan-tools") - (version (package-version vulkan-headers)) + (version "1.2.140") (source (origin (method git-fetch) @@ -231,7 +226,7 @@ and the ICD.") (file-name (git-file-name name version)) (sha256 (base32 - "1jndlz3n35zlz44p1b4cgl2alvsmgrqnkxdn5mpahg0zb8dgwmm8")))) + "08dk0q77kpycn4vv19jh3ig73gbq3psan246a7fss0nfxpiddg0j")))) (build-system cmake-build-system) (inputs `(("glslang" ,glslang) @@ -243,7 +238,7 @@ and the ICD.") ("python" ,python) ("vulkan-headers" ,vulkan-headers))) (arguments - `(#:tests? #f ; No tests. + `(#:tests? #f ;no tests #:configure-flags (list (string-append "-DGLSLANG_INSTALL_DIR=" (assoc-ref %build-inputs "glslang"))))) (home-page @@ -258,7 +253,7 @@ API.") (define-public shaderc (package (name "shaderc") - (version "2019.0") + (version "2020.0") (source (origin (method git-fetch) @@ -268,56 +263,42 @@ API.") (file-name (git-file-name name version)) (sha256 (base32 - "1l5mmyxhzsbp0a6y2d86i8jmf46c6bjgjkdgkr5l8hmhflmm7gi2")))) - (build-system meson-build-system) + "1kqqvsvib01bsmfbdy3fbwwpvkcdlfb6k71kjvzb3crql7w0rxff")))) + (build-system cmake-build-system) (arguments - `(#:tests? #f ; FIXME: Tests fail. + `(;; FIXME: Skip most of the tests, because enabling system gtest breaks + ;; the build: <https://github.com/google/shaderc/issues/470>. + #:configure-flags '("-DSHADERC_SKIP_TESTS=ON") #:phases (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; Remove various lines and touch build-version.inc or - ;; configuring won't work. - (invoke "touch" "glslc/src/build-version.inc") - (substitute* "CMakeLists.txt" (("..PYTHON_EXE..*") "")) - (substitute* "CMakeLists.txt" - ((".*update_build_version.py..*") "")) - (substitute* "CMakeLists.txt" - ((".*add_custom_target.build-version.*") "")) - (substitute* "CMakeLists.txt" - ((".*spirv-tools_SOURCE_DIR.*glslang_SOURCE_DIR.*") - "")) - (substitute* "CMakeLists.txt" - ((".*Update build-version.inc.*") "")) - (substitute* "CMakeLists.txt" ((".*--check.*") "")) - (substitute* "glslc/src/main.cc" ((".*build-version.inc.*") - "\"1\"")) - (invoke "cmake" "-GNinja" "-DCMAKE_BUILD_TYPE=Release" - "-DSHADERC_SKIP_TESTS=ON" - "-DCMAKE_INSTALL_LIBDIR=lib" - (string-append "-DCMAKE_INSTALL_PREFIX=" - out))))) - (add-after 'unpack 'unpack-sources - (lambda* (#:key inputs #:allow-other-keys) - (let ((spirv-tools-source (assoc-ref inputs "spirv-tools-source")) - (spirv-headers-source (assoc-ref inputs "spirv-headers-source")) - (glslang-source (assoc-ref inputs "glslang-source"))) - (copy-recursively spirv-tools-source "third_party/spirv-tools") - (copy-recursively spirv-headers-source - (string-append "third_party/spirv-tools" - "/external/spirv-headers")) - (copy-recursively glslang-source "third_party/glslang") - #t)))))) + (add-after 'unpack 'do-not-look-for-bundled-sources + (lambda _ + (substitute* "CMakeLists.txt" + (("add_subdirectory\\(third_party\\)") + "")) + + (substitute* "glslc/test/CMakeLists.txt" + (("\\$<TARGET_FILE:spirv-dis>") + (which "spirv-dis"))) + + ;; Do not attempt to use git to encode version information. + (substitute* "glslc/CMakeLists.txt" + (("add_dependencies\\(glslc_exe build-version\\)") + "")) + (call-with-output-file "glslc/src/build-version.inc" + (lambda (port) + (format port "\"~a\"\n\"~a\"\n\"~a\"~%" + ,version + ,(package-version spirv-tools) + ,(package-version glslang)))) + #t))))) (inputs - `(("googletest" ,googletest) - ("python" ,python))) + `(("glslang" ,glslang) + ("python" ,python) + ("spirv-headers" ,spirv-headers) + ("spirv-tools" ,spirv-tools))) (native-inputs - `(("cmake" ,cmake-minimal) - ("glslang-source" ,(package-source glslang)) - ("pkg-config" ,pkg-config) - ("spirv-headers-source" ,(package-source spirv-headers)) - ("spirv-tools-source" ,(package-source spirv-tools)))) + `(("pkg-config" ,pkg-config))) (home-page "https://github.com/google/shaderc") (synopsis "Tools for shader compilation") (description "Shaderc is a collection of tools, libraries, and tests for @@ -341,7 +322,16 @@ shader compilation.") (file-name (string-append name "-" version "-checkout")))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--with-spirv-tools"))) + `(#:configure-flags '("--with-spirv-tools") + #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-for-new-vulkan + (lambda _ + ;; Mimic upstream commit 8e7bf8a5c3e0047 for + ;; compatibility with newer vulkan-headers. + (substitute* "libs/vkd3d/vkd3d_private.h" + (("VK_PIPELINE_BIND_POINT_RANGE_SIZE") + "2u")) + #t))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) |