[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#29625] [PATCH core-updates] Vulkan patch series.
From: |
Marius Bakke |
Subject: |
[bug#29625] [PATCH core-updates] Vulkan patch series. |
Date: |
Wed, 13 Dec 2017 19:30:06 +0100 |
User-agent: |
Notmuch/0.25.3 (https://notmuchmail.org) Emacs/25.3.1 (x86_64-pc-linux-gnu) |
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!
signature.asc
Description: PGP signature