Hey Marius,
thanks for the feedback! I've changed the patches and made sure they work on the latest core-updates commit.
On 2017-12-13 19:30, Marius Bakke wrote:
Hi Rutger, Rutger Helling < address@hidden> writes:
Hey Guix, this patch series adds Vulkan support for mesa on x86_64-linux and adds a few new packages. Since a rebuild of mesa is necessary I'm sending it in for core-updates.
That is excellent, thank you!
Here's a short explanation of all the patches: #1: Add Vulkan support to mesa on x86_64-linux. On i686-linux mesa didn't build unfortunately. I haven't tried other architectures. #2: Add vulkan.scm to gnu/local.mk. #3: Create vulkan.scm and add spirv-headers. #4: Add spirv-tools to vulkan.scm. #5: Add glslang to vulkan.scm. #6: Add vulkan-icd-loader to vulkan.scm. This provides the 'vulkaninfo' tool that you can use to query if your system is Vulkan-capable. I tested it out after a full rebuild on a Vulkan-capable system. 'vulkaninfo' showed Vulkan was available on that system.
Great! Unfortunately the mesa patch did not apply for me, can you rebase this series on current 'core-updates'? We've had some trouble getting Hydra started on it, so we can probably squeeze this in. Some comments..
From cb4266a1a21f4e16d4d32bbca683b5aae938986d Mon Sep 17 00:00:00 2001 From: Rutger Helling <address@hidden> Date: Sat, 9 Dec 2017 00:28:36 +0100 Subject: [PATCH] gnu: mesa: Enable Vulkan drivers for Intel and Radeon on x86-64. * gnu/packages/gl.scm (mesa)[arguments]: Add "--with-vulkan-drivers=intel,radeon" to configure-flags for x86_64-linux. [synopsis]: Mention Vulkan. [description]: Mention Vulkan.
Please add line breaks between the various commit message "fields".
--- gnu/packages/gl.scm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 005b49b86..b18861eb7 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -296,6 +296,13 @@ also known as DXTn or DXTC) for Mesa.") ;; are stuck at OpenGL 2.1 instead of OpenGL 3.0+. "--enable-texture-float" + ;; Enable Vulkan on x86-64. + ,@(match (%current-system) + ((or "x86_64-linux") + '("--with-vulkan-drivers=intel,radeon")) + (_ + '(""))) + ;; Also enable the tests. "--enable-gallium-tests" @@ -343,11 +350,11 @@ also known as DXTn or DXTC) for Mesa.") (string-append "\"" out "/lib/dri/gbm_dri.so"))) #t)))))) (home-page "https://mesa3d.org/") - (synopsis "OpenGL implementation") - (description "Mesa is a free implementation of the OpenGL specification - -a system for rendering interactive 3D graphics. A variety of device drivers -allows Mesa to be used in many different environments ranging from software -emulation to complete hardware acceleration for modern GPUs.") + (synopsis "OpenGL and Vulkan implementations") + (description "Mesa is a free implementation of the OpenGL and Vulkan +specifications - systems for rendering interactive 3D graphics. A variety of +device drivers allows Mesa to be used in many different environments ranging +from software emulation to complete hardware acceleration for modern GPUs.") (license license:x11))) (define-public mesa-headers -- 2.15.1 From 35b07f1e24c8597bdd504ae9f986abed486cb8df Mon Sep 17 00:00:00 2001 From: Rutger Helling <address@hidden> Date: Fri, 8 Dec 2017 13:39:16 +0100 Subject: [PATCH] gnu: local.mk: Add vulkan.scm. * gnu/local.mk: Add vulkan.scm. --- gnu/local.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/local.mk b/gnu/local.mk index a0e3f6ebe..51876487d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -418,6 +418,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/vim.scm \ %D%/packages/virtualization.scm \ %D%/packages/vpn.scm \ + %D%/packages/vulkan.scm \ %D%/packages/w3m.scm \ %D%/packages/wdiff.scm \ %D%/packages/web.scm \ -- 2.15.1 From 043a4adbcf2023cb5b610bb9cb6529aca76c2922 Mon Sep 17 00:00:00 2001 From: Rutger Helling <address@hidden> Date: Fri, 8 Dec 2017 14:10:36 +0100 Subject: [PATCH] gnu: vulkan: Add spirv-headers. * gnu/packages/vulkan.scm: Create file. (spirv-headers): New variable. --- gnu/packages/vulkan.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 gnu/packages/vulkan.scm diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm new file mode 100644 index 000000000..2079b8e0a --- /dev/null +++ b/gnu/packages/vulkan.scm @@ -0,0 +1,59 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2017 Rutger Helling <address@hidden> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages vulkan) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (guix build-system cmake) + #:use-module (gnu packages)) + +(define-public spirv-headers + (let ((commit "98b01515724c428d0f0a5d01deffcce0f5f5e61c") + (revision "1")) + (package + (name "spirv-headers") + (version (string-append "0.0-" revision "." (string-take commit 9))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KhronosGroup/SPIRV-Headers") + (commit commit))) + (sha256 + (base32 + "15bknwkv3xwmjs3lmkp282a1wrp0da1b4lp45i4yiav04zmqygj2")) + (file-name (string-append name "-" version "-checkout")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ;; No tests + #:phases (modify-phases %standard-phases + (replace 'install + (lambda* + (#:key outputs #:allow-other-keys) + (system* "cmake" "-E" "copy_directory" + "../source/include/spirv" (string-append + (assoc-ref outputs "out") + "/include/spirv")))))))
Please use (zero? (system* ...)) here so the return value is checked.
+ (home-page "https://github.com/KhronosGroup/SPIRV-Headers") + (synopsis "Machine-readable files from the SPIR-V Registry") + (description "SPIRV-Headers is a repository containing machine-readable +files from the SPIR-V Registry.") + (license license:x11-style)))) ;; Custom license. See + ;; https://github.com/KhronosGroup/SPIRV-Headers/blob/master/LICENSE for + ;; details.
You can use the 'non-copyleft' procedure here.
-- 2.15.1 From 80e82f1f92823e04893e8400dc82b69e890c7276 Mon Sep 17 00:00:00 2001 From: Rutger Helling <address@hidden> Date: Fri, 8 Dec 2017 14:56:36 +0100 Subject: [PATCH] gnu: vulkan: Add spirv-tools. * gnu/packages/vulkan.scm (spirv-tools): New variable. --- gnu/packages/vulkan.scm | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm index 2079b8e0a..248dc206c 100644 --- a/gnu/packages/vulkan.scm +++ b/gnu/packages/vulkan.scm @@ -19,9 +19,12 @@ (define-module (gnu packages vulkan) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system cmake) - #:use-module (gnu packages)) + #:use-module (gnu packages) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python)) (define-public spirv-headers (let ((commit "98b01515724c428d0f0a5d01deffcce0f5f5e61c") @@ -57,3 +60,33 @@ files from the SPIR-V Registry.") (license license:x11-style)))) ;; Custom license. See ;; https://github.com/KhronosGroup/SPIRV-Headers/blob/master/LICENSE for ;; details. + +(define-public spirv-tools + (package + (name "spirv-tools") + (version "2017.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/KhronosGroup/SPIRV-Tools/archive/v" + version ".tar.gz")) + (sha256 + (base32 + "009vflaa71a7xhvmm23f4sdbcgdkl1k4facqkwsg6djha2sdpsqq")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags (list (string-append "-DCMAKE_INSTALL_LIBDIR=" + (assoc-ref %outputs "out") + "/lib") + (string-append "-DSPIRV-Headers_SOURCE_DIR=" + (assoc-ref %build-inputs + "spirv-headers"))))) + (inputs `(("python" ,python) + ("spirv-headers" ,spirv-headers))) + (native-inputs `(("pkg-config", pkg-config))) + (home-page "https://github.com/KhronosGroup/SPIRV-Tools") + (synopsis "API and commands for processing SPIR-V modules") + (description "The SPIR-V Tools project provides an API and commands for +processing SPIR-V modules.") + (license license:asl2.0))) -- 2.15.1 From dd17b03c487b64212fae77a406075fc83514a369 Mon Sep 17 00:00:00 2001 From: Rutger Helling <address@hidden> Date: Fri, 8 Dec 2017 15:56:34 +0100 Subject: [PATCH] gnu: vulkan: Add glslang. * gnu/packages/vulkan.scm (glslang): New variable. --- gnu/packages/vulkan.scm | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm index 248dc206c..03562e45d 100644 --- a/gnu/packages/vulkan.scm +++ b/gnu/packages/vulkan.scm @@ -23,6 +23,7 @@ #:use-module (guix git-download) #:use-module (guix build-system cmake) #:use-module (gnu packages) + #:use-module (gnu packages bison) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python)) @@ -90,3 +91,41 @@ files from the SPIR-V Registry.") (description "The SPIR-V Tools project provides an API and commands for processing SPIR-V modules.") (license license:asl2.0))) + +(define-public glslang + ;; Version 3.0 is too old for vulkan-icd-loader. Use a recent git commit + ;; until the next stable version. + (let ((commit "471bfed0621162a7513fc24a51e8a1ccc2e640ff") + (revision "1")) + (package + (name "glslang") + (version (string-append "0.0-" revision "." (string-take commit 9))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KhronosGroup/glslang") + (commit commit))) + (sha256 + (base32 + "0m2vljmrqppp80ghbbwfnayqw2canxlcjhgy6jw9xjdssln0d3pd")) + (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.*") "")))))))
Return #t here since (substitute* ...) has an undefined return value. The rest LGTM at a cursory glance. Can you send updated patches? TIA!
|