diff --git a/pkgs/development/tools/vulkan-validation-layers/default.nix b/pkgs/development/tools/vulkan-validation-layers/default.nix index ec696339fdcb..6e89f03e5137 100644 --- a/pkgs/development/tools/vulkan-validation-layers/default.nix +++ b/pkgs/development/tools/vulkan-validation-layers/default.nix @@ -51,6 +51,11 @@ stdenv.mkDerivation rec { pname = "vulkan-validation-layers"; version = "1.2.141.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"; @@ -78,6 +83,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DGLSLANG_INSTALL_DIR=${localGlslang}" + "-DBUILD_LAYER_SUPPORT_FILES=ON" ]; # Help vulkan-loader find the validation layers 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 000000000000..9ce87b4cb671 --- /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 ]; + }; +} diff --git a/pkgs/tools/graphics/vulkan-tools/default.nix b/pkgs/tools/graphics/vulkan-tools/default.nix index e320e4e6ef3b..ff620ef8287b 100644 --- a/pkgs/tools/graphics/vulkan-tools/default.nix +++ b/pkgs/tools/graphics/vulkan-tools/default.nix @@ -30,8 +30,13 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - description = "LunarG Vulkan loader"; - homepage = "https://www.lunarg.com"; + description = "Khronos official Vulkan Tools and Utilities"; + longDescription = '' + This project provides Vulkan tools and utilities that can assist + development by enabling developers to verify their applications correct + use of the Vulkan API. + ''; + homepage = "https://github.com/KhronosGroup/Vulkan-Tools"; platforms = platforms.linux; license = licenses.asl20; maintainers = [ maintainers.ralith ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 85d7890dd6e7..abfd21e2b4e7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16152,6 +16152,7 @@ julia_15 = callPackage ../development/compilers/julia/1.5.nix { vulkan-headers = callPackage ../development/libraries/vulkan-headers { }; vulkan-loader = callPackage ../development/libraries/vulkan-loader { }; vulkan-tools = callPackage ../tools/graphics/vulkan-tools { }; + vulkan-tools-lunarg = callPackage ../tools/graphics/vulkan-tools-lunarg { }; vulkan-validation-layers = callPackage ../development/tools/vulkan-validation-layers { }; vtkWithQt5 = vtk.override { qtLib = qt514; };