diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/vulkan-validation-layers/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/vulkan-validation-layers/default.nix | 89 |
1 files changed, 79 insertions, 10 deletions
diff --git a/nixpkgs/pkgs/development/tools/vulkan-validation-layers/default.nix b/nixpkgs/pkgs/development/tools/vulkan-validation-layers/default.nix index 06a1e4025e1c..25fb4077abc4 100644 --- a/nixpkgs/pkgs/development/tools/vulkan-validation-layers/default.nix +++ b/nixpkgs/pkgs/development/tools/vulkan-validation-layers/default.nix @@ -1,23 +1,92 @@ -{ stdenv, fetchFromGitHub, cmake, writeText, python3 -, vulkan-headers, vulkan-loader, glslang -, pkgconfig, xlibsWrapper, libxcb, libXrandr, wayland }: +{ stdenv +, fetchFromGitHub +, cmake +, writeText +, python3 +, spirv-headers +, spirv-tools +, vulkan-headers +, vulkan-loader +, glslang +, pkgconfig +, 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 ]; + nativeBuildInputs = [ + pkgconfig + cmake + python3 + ]; + + buildInputs = [ + localGlslang + localGlslang.spirv-headers + vulkan-headers + vulkan-loader + libxcb + libXrandr + wayland + ]; + enableParallelBuilding = true; - cmakeFlags = [ "-DGLSLANG_INSTALL_DIR=${glslang}" ]; + cmakeFlags = [ + "-DGLSLANG_INSTALL_DIR=${localGlslang}" + "-DSPIRV_HEADERS_INSTALL_DIR=${localSpirvHeaders}" + "-DBUILD_LAYER_SUPPORT_FILES=ON" + ]; # Help vulkan-loader find the validation layers setupHook = writeText "setup-hook" '' @@ -31,8 +100,8 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - description = "LunarG Vulkan loader"; - homepage = "https://www.lunarg.com"; + description = "The official Khronos Vulkan validation layers"; + homepage = "https://github.com/KhronosGroup/Vulkan-ValidationLayers"; platforms = platforms.linux; license = licenses.asl20; maintainers = [ maintainers.ralith ]; |