GNU bug report logs - #29625
[PATCH core-updates] Vulkan patch series.

Previous Next

Package: guix-patches;

Reported by: Rutger Helling <rhelling <at> mykolab.com>

Date: Sat, 9 Dec 2017 13:56:02 UTC

Severity: normal

Tags: patch

Done: Marius Bakke <mbakke <at> fastmail.com>

Bug is archived. No further changes may be made.

Full log


Message #14 received at 29625 <at> debbugs.gnu.org (full text, mbox):

From: Rutger Helling <rhelling <at> mykolab.com>
To: Marius Bakke <mbakke <at> fastmail.com>
Cc: 29625 <at> debbugs.gnu.org
Subject: Re: [bug#29625] [PATCH core-updates] Vulkan patch series.
Date: Thu, 14 Dec 2017 23:26:22 +0100
[Message part 1 (text/plain, inline)]
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 <rhelling <at> mykolab.com> 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 <rhelling <at> mykolab.com>
>> 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 <rhelling <at> mykolab.com>
>> 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 <rhelling <at> mykolab.com>
>> 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 (c) 2017 Rutger Helling <rhelling <at> mykolab.com>
>> +;;;
>> +;;; 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 <rhelling <at> mykolab.com>
>> 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 <rhelling <at> mykolab.com>
>> 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!
[Message part 2 (text/html, inline)]
[0001-gnu-mesa-Enable-Vulkan-drivers-for-Intel-and-Radeon-v2.patch (text/x-diff, attachment)]
[0002-gnu-local.mk-Add-vulkan.scm.patch (text/x-diff, attachment)]
[0003-gnu-vulkan-Add-spirv-headers-v2.patch (text/x-diff, attachment)]
[0004-gnu-vulkan-Add-spirv-tools.patch (text/x-diff, attachment)]
[0005-gnu-vulkan-Add-glslang-v2.patch (text/x-diff, attachment)]
[0006-gnu-vulkan-Add-vulkan-icd-loader.patch (text/x-diff, attachment)]
[0007-gnu-retroarch-Enable-Vulkan-support.patch (text/x-diff, attachment)]

This bug report was last modified 7 years and 160 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.