summary refs log tree commit diff
path: root/pkgs/development/tools/vulkan-validation-layers/default.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
committerAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
commit62614cbef7da005c1eda8c9400160f6bcd6546b8 (patch)
treec2630f69080637987b68acb1ee8676d2681fe304 /pkgs/development/tools/vulkan-validation-layers/default.nix
parentd9c82ed3044c72cecf01c6ea042489d30914577c (diff)
parente24069138dfec3ef94f211f1da005bb5395adc11 (diff)
downloadnixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.gz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.bz2
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.lz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.xz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.zst
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.zip
Merge branch 'nixpkgs-update' into master
Diffstat (limited to 'pkgs/development/tools/vulkan-validation-layers/default.nix')
-rw-r--r--pkgs/development/tools/vulkan-validation-layers/default.nix94
1 files changed, 78 insertions, 16 deletions
diff --git a/pkgs/development/tools/vulkan-validation-layers/default.nix b/pkgs/development/tools/vulkan-validation-layers/default.nix
index 06a1e4025e1..adec30a14c5 100644
--- a/pkgs/development/tools/vulkan-validation-layers/default.nix
+++ b/pkgs/development/tools/vulkan-validation-layers/default.nix
@@ -1,28 +1,90 @@
-{ stdenv, fetchFromGitHub, cmake, writeText, python3
-, vulkan-headers, vulkan-loader, glslang
-, pkgconfig, xlibsWrapper, libxcb, libXrandr, wayland }:
+{ lib, stdenv
+, fetchFromGitHub
+, cmake
+, writeText
+, python3
+, spirv-headers
+, spirv-tools
+, vulkan-headers
+, vulkan-loader
+, glslang
+, pkg-config
+, xlibsWrapper
+, libxcb
+, libXrandr
+, wayland
+}:
+# vulkan-validation-layers requires a custom glslang version, while glslang requires
+# custom versions for spirv-tools and spirv-headers. The git hashes required for all
+# of these deps is documented upstream here:
+# https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/master/scripts/known_good.json
+
+let
+  localSpirvHeaders = spirv-headers.overrideAttrs (_: {
+    src = fetchFromGitHub {
+      owner = "KhronosGroup";
+      repo = "SPIRV-Headers";
+      rev = "f027d53ded7e230e008d37c8b47ede7cd308e19d";
+      sha256 = "12gp2mqcar6jj57jw9isfr62yn72kmvdcl0zga4gvrlyfhnf582q";
+    };
+  });
+  localGlslang = (glslang.override {
+    argSpirv-tools = spirv-tools.overrideAttrs (_: {
+      src = fetchFromGitHub {
+        owner = "KhronosGroup";
+        repo = "SPIRV-Tools";
+        rev = "c9c1f54330d13a0bec1aa3f08d436249d8e35596";
+        sha256 = "0r5whsw9x8j4199xwxv293ar2ga73pm2s7rngw732ylh6rw3bkly";
+      };
+    });
+    argSpirv-headers = localSpirvHeaders;
+  }).overrideAttrs (_: {
+    src = fetchFromGitHub {
+      owner = "KhronosGroup";
+      repo = "glslang";
+      rev = "dd69df7f3dac26362e10b0f38efb9e47990f7537";
+      sha256 = "1iafbh524avsjg4pjiq156b62pck2rwlfl2pjnml8sjy285506rk";
+    };
+  });
+in
 
 stdenv.mkDerivation rec {
   pname = "vulkan-validation-layers";
-  version = "1.2.131.2";
+  version = "1.2.162.0";
+
+  # If we were to use "dev" here instead of headers, the setupHook would be
+  # placed in that output instead of "out".
+  outputs = ["out" "headers"];
+  outputInclude = "headers";
 
   src = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "Vulkan-ValidationLayers";
     rev = "sdk-${version}";
-    sha256 = "1sz0388cr018ldx6ziplvk4v3zbg44pww77kv6kv5wxl69plwfcn";
+    sha256 = "1mpqmxh9zm20jdar59lp4yjpqfzxn2pwds6bkvnzihfy0pymf15k";
   };
 
-  nativeBuildInputs = [ pkgconfig cmake python3  ];
-  buildInputs = [ vulkan-headers vulkan-loader libxcb libXrandr wayland ];
-  enableParallelBuilding = true;
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+    python3
+  ];
 
-  cmakeFlags = [ "-DGLSLANG_INSTALL_DIR=${glslang}" ];
+  buildInputs = [
+    localGlslang
+    localGlslang.spirv-headers
+    vulkan-headers
+    vulkan-loader
+    libxcb
+    libXrandr
+    wayland
+  ];
 
-  # Help vulkan-loader find the validation layers
-  setupHook = writeText "setup-hook" ''
-    export XDG_DATA_DIRS=@out@/share:$XDG_DATA_DIRS
-  '';
+  cmakeFlags = [
+    "-DGLSLANG_INSTALL_DIR=${localGlslang}"
+    "-DSPIRV_HEADERS_INSTALL_DIR=${localSpirvHeaders}"
+    "-DBUILD_LAYER_SUPPORT_FILES=ON"
+  ];
 
   # Include absolute paths to layer libraries in their associated
   # layer definition json files.
@@ -30,9 +92,9 @@ stdenv.mkDerivation rec {
     sed "s|\([[:space:]]*set(INSTALL_DEFINES \''${INSTALL_DEFINES} -DRELATIVE_LAYER_BINARY=\"\)\(\$<TARGET_FILE_NAME:\''${TARGET_NAME}>\")\)|\1$out/lib/\2|" -i layers/CMakeLists.txt
   '';
 
-  meta = with stdenv.lib; {
-    description = "LunarG Vulkan loader";
-    homepage    = "https://www.lunarg.com";
+  meta = with lib; {
+    description = "The official Khronos Vulkan validation layers";
+    homepage    = "https://github.com/KhronosGroup/Vulkan-ValidationLayers";
     platforms   = platforms.linux;
     license     = licenses.asl20;
     maintainers = [ maintainers.ralith ];