about summary refs log tree commit diff
path: root/pkgs/tools/graphics/vulkan-tools-lunarg
diff options
context:
space:
mode:
authorJoe Hermaszewski <git@monoid.al>2020-11-16 15:47:55 +0800
committerJoe Hermaszewski <git@monoid.al>2020-11-17 15:08:51 +0800
commitb2fae2dbdfae191dddc825ef29c3badd83678016 (patch)
tree6af308254f53983630eadd7953b2c994a7512abd /pkgs/tools/graphics/vulkan-tools-lunarg
parent929db7f52fcd8e4bb43f97925649973403f33837 (diff)
vulkan-tools-lunarg: init at 1.2.141.0
Diffstat (limited to 'pkgs/tools/graphics/vulkan-tools-lunarg')
-rw-r--r--pkgs/tools/graphics/vulkan-tools-lunarg/default.nix86
1 files changed, 86 insertions, 0 deletions
diff --git a/pkgs/tools/graphics/vulkan-tools-lunarg/default.nix b/pkgs/tools/graphics/vulkan-tools-lunarg/default.nix
new file mode 100644
index 0000000000000..9ce87b4cb671d
--- /dev/null
+++ b/pkgs/tools/graphics/vulkan-tools-lunarg/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, cmake, expat, fetchFromGitHub, jq, lib, libXdmcp, libXrandr, libffi
+, libxcb, pkgconfig, python3, symlinkJoin, vulkan-headers, vulkan-loader
+, vulkan-validation-layers, wayland, writeText, xcbutilkeysyms, xcbutilwm
+, xlibsWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "vulkan-tools-lunarg";
+  # The version must match that in vulkan-headers
+  version = "1.2.141.0";
+
+  src = (assert version == vulkan-headers.version; fetchFromGitHub {
+    owner = "LunarG";
+    repo = "VulkanTools";
+    rev = "sdk-${version}";
+    sha256 = "1zsgc1hdmivdahzrarx7a5byhgnmm5ahz366l92fmdb8pffgq42g";
+    fetchSubmodules = true;
+  });
+
+  nativeBuildInputs = [ cmake pkgconfig python3 jq ];
+
+  buildInputs = [
+    expat
+    libXdmcp
+    libXrandr
+    libffi
+    libxcb
+    wayland
+    xcbutilkeysyms
+    xcbutilwm
+    xlibsWrapper
+  ];
+
+  cmakeFlags = [
+    "-DVULKAN_HEADERS_INSTALL_DIR=${vulkan-headers}"
+    "-DVULKAN_LOADER_INSTALL_DIR=${vulkan-loader}"
+    "-DVULKAN_VALIDATIONLAYERS_INSTALL_DIR=${
+      symlinkJoin {
+        name = "vulkan-validation-layers-merged";
+        paths = [ vulkan-validation-layers.headers vulkan-validation-layers ];
+      }
+    }"
+  ];
+
+  preConfigure = ''
+    # We need to run this update script which generates some source files,
+    # Remove the line in it which calls 'git submodule update' though.
+    # Also patch the scripts in ./scripts
+    update=update_external_sources.sh
+    patchShebangs $update
+    patchShebangs scripts/*
+    sed -i '/^git /d' $update
+    ./$update
+  '';
+
+  # Include absolute paths to layer libraries in their associated
+  # layer definition json files.
+  preFixup = ''
+    for f in "$out"/etc/vulkan/explicit_layer.d/*.json "$out"/etc/vulkan/implicit_layer.d/*.json; do
+      jq <"$f" >tmp.json ".layer.library_path = \"$out/lib/\" + .layer.library_path"
+      mv tmp.json "$f"
+    done
+  '';
+
+  enableParallelBuilding = true;
+
+  # Same as vulkan-validation-layers
+  libraryPath = lib.strings.makeLibraryPath [ vulkan-loader ];
+  dontPatchELF = true;
+
+  # Help vulkan-loader find the validation layers
+  setupHook = writeText "setup-hook" ''
+    export XDG_CONFIG_DIRS=@out@/etc''${XDG_CONFIG_DIRS:+:''${XDG_CONFIG_DIRS}}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "LunarG Vulkan Tools and Utilities";
+    longDescription = ''
+      Tools to aid in Vulkan development including useful layers, trace and
+      replay, and tests.
+    '';
+    homepage = "https://github.com/LunarG/VulkanTools";
+    platforms = platforms.linux;
+    license = licenses.asl20;
+    maintainers = [ maintainers.expipiplus1 ];
+  };
+}