all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#29625] [PATCH core-updates] Vulkan patch series.
@ 2017-12-09 13:54 Rutger Helling
  2017-12-10 10:41 ` Rutger Helling
  2017-12-13 18:30 ` Marius Bakke
  0 siblings, 2 replies; 8+ messages in thread
From: Rutger Helling @ 2017-12-09 13:54 UTC (permalink / raw)
  To: 29625

[-- Attachment #1: Type: text/plain, Size: 765 bytes --]

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.

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.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-mesa-Enable-Vulkan-drivers-for-Intel-and-Radeon-.patch --]
[-- Type: text/x-diff; name=0001-gnu-mesa-Enable-Vulkan-drivers-for-Intel-and-Radeon-.patch, Size: 2061 bytes --]

From cb4266a1a21f4e16d4d32bbca683b5aae938986d Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@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.
---
 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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-local.mk-Add-vulkan.scm.patch --]
[-- Type: text/x-diff; name=0002-gnu-local.mk-Add-vulkan.scm.patch, Size: 677 bytes --]

From 35b07f1e24c8597bdd504ae9f986abed486cb8df Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-vulkan-Add-spirv-headers.patch --]
[-- Type: text/x-diff; name=0003-gnu-vulkan-Add-spirv-headers.patch, Size: 3194 bytes --]

From 043a4adbcf2023cb5b610bb9cb6529aca76c2922 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@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 © 2017 Rutger Helling <rhelling@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")))))))
+     (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.
-- 
2.15.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-gnu-vulkan-Add-spirv-tools.patch --]
[-- Type: text/x-diff; name=0004-gnu-vulkan-Add-spirv-tools.patch, Size: 2525 bytes --]

From 80e82f1f92823e04893e8400dc82b69e890c7276 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-gnu-vulkan-Add-glslang.patch --]
[-- Type: text/x-diff; name=0005-gnu-vulkan-Add-glslang.patch, Size: 2577 bytes --]

From dd17b03c487b64212fae77a406075fc83514a369 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@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.*") "")))))))
+   (inputs `(("bison" ,bison)))
+   (native-inputs `(("pkg-config" ,pkg-config)))
+   (home-page "https://github.com/KhronosGroup/glslang")
+   (synopsis "OpenGL and OpenGL ES shader front end and validator")
+   (description "glslang is a OpenGL and OpenGL ES shader front end and
+validator.")
+   ;; Modified BSD license. See "copyright" section of
+   ;; https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
+   (license license:bsd-3))))
-- 
2.15.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-gnu-vulkan-Add-vulkan-icd-loader.patch --]
[-- Type: text/x-diff; name=0006-gnu-vulkan-Add-vulkan-icd-loader.patch, Size: 2506 bytes --]

From 0172d3cb7cbdae03f143a4c7966c4694e69eea15 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Fri, 8 Dec 2017 16:06:05 +0100
Subject: [PATCH] gnu: vulkan: Add vulkan-icd-loader.

* gnu/packages/vulkan.scm (vulkan-icd-loader): New variable.
---
 gnu/packages/vulkan.scm | 39 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 03562e45d..d8fa616f2 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -24,8 +24,11 @@
   #:use-module (guix build-system cmake)
   #:use-module (gnu packages)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python))
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages xorg))
 
 (define-public spirv-headers
   (let ((commit "98b01515724c428d0f0a5d01deffcce0f5f5e61c")
@@ -129,3 +132,37 @@ validator.")
    ;; Modified BSD license. See "copyright" section of
    ;; https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
    (license license:bsd-3))))
+
+(define-public vulkan-icd-loader
+  (package
+   (name "vulkan-icd-loader")
+   (version "1.0.61.1")
+   (source
+    (origin
+     (method url-fetch)
+     (uri (string-append
+           "https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/"
+           "archive/sdk-" version ".tar.gz"))
+     (sha256
+      (base32
+       "05g60hk30sbc4rwkh7nrgqdk6hfsi4hwxs54yrysrzr18xpfb8j7"))))
+   (build-system cmake-build-system)
+   (arguments
+    `(#:tests? #f ;; No tests
+      #:configure-flags (list (string-append "-DCMAKE_INSTALL_LIBDIR="
+                                (assoc-ref %outputs "out") "/lib"))))
+   (inputs `(("glslang" ,glslang)
+             ("libxcb" ,libxcb)
+             ("libx11" ,libx11)
+             ("libxrandr" ,libxrandr)
+             ("mesa" ,mesa)
+             ("python" ,python)
+             ("spirv-tools" ,spirv-tools)
+             ("wayland" ,wayland)))
+   (native-inputs `(("pkg-config", pkg-config)))
+   (home-page (string-append "https://github.com/"
+              "KhronosGroup/Vulkan-LoaderAndValidationLayers"))
+   (synopsis "Khronos official ICD loader for Vulkan")
+   (description "Vulkan-ICD-Loader provides Khronos official ICD loader and
+validation layers for Vulkan developers on GNU/Linux.")
+   (license license:asl2.0)))
-- 
2.15.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-12-18 12:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-09 13:54 [bug#29625] [PATCH core-updates] Vulkan patch series Rutger Helling
2017-12-10 10:41 ` Rutger Helling
2017-12-13 18:30 ` Marius Bakke
2017-12-14 22:26   ` Rutger Helling
2017-12-18  0:26     ` bug#29625: " Marius Bakke
2017-12-18  9:10       ` [bug#29625] " Rutger Helling
2017-12-18 12:16         ` Marius Bakke
2017-12-18 12:24           ` Rutger Helling

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.