From 15abe62244012bf1ae4c00b0d6fb717622498c0e Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Tue, 26 Mar 2024 18:36:11 -0400 Subject: [PATCH 1/5] openimagedenoise: Formatting With nixfmt-rfc-style. Also use cmakeFeature to build cmake args. --- .../libraries/openimagedenoise/default.nix | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pkgs/development/libraries/openimagedenoise/default.nix b/pkgs/development/libraries/openimagedenoise/default.nix index 532ee7a09571..a9e441784fa7 100644 --- a/pkgs/development/libraries/openimagedenoise/default.nix +++ b/pkgs/development/libraries/openimagedenoise/default.nix @@ -1,4 +1,12 @@ -{ lib, stdenv, fetchzip, cmake, tbb, python3, ispc }: +{ + cmake, + fetchzip, + ispc, + lib, + python3, + stdenv, + tbb, +}: stdenv.mkDerivation rec { pname = "openimagedenoise"; @@ -10,12 +18,16 @@ stdenv.mkDerivation rec { sha256 = "sha256-i73w/Vkr5TPLB1ulPbPU4OVGwdNlky1brfarueD7akE="; }; - nativeBuildInputs = [ cmake python3 ispc ]; + nativeBuildInputs = [ + cmake + python3 + ispc + ]; buildInputs = [ tbb ]; cmakeFlags = [ - "-DTBB_ROOT=${tbb}" - "-DTBB_INCLUDE_DIR=${tbb.dev}/include" + (lib.cmakeFeature "TBB_INCLUDE_DIR" "${tbb.dev}/include") + (lib.cmakeFeature "TBB_ROOT" "${tbb}") ]; meta = with lib; { From acb367ce1fd156c3138eb46c1f1bcb5a1c8e5a12 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Thu, 29 Feb 2024 19:15:15 -0500 Subject: [PATCH 2/5] openimagedenoise: 1.4.3 -> 2.2.2 Diff: https://github.com/OpenImageDenoise/oidn/compare/v1.4.3...v2.2.2 Changelog: https://github.com/OpenImageDenoise/oidn/blob/v2.2.2/CHANGELOG.md --- pkgs/development/libraries/openimagedenoise/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/openimagedenoise/default.nix b/pkgs/development/libraries/openimagedenoise/default.nix index a9e441784fa7..136143468783 100644 --- a/pkgs/development/libraries/openimagedenoise/default.nix +++ b/pkgs/development/libraries/openimagedenoise/default.nix @@ -10,12 +10,12 @@ stdenv.mkDerivation rec { pname = "openimagedenoise"; - version = "1.4.3"; + version = "2.2.2"; # The release tarballs include pretrained weights, which would otherwise need to be fetched with git-lfs src = fetchzip { url = "https://github.com/OpenImageDenoise/oidn/releases/download/v${version}/oidn-${version}.src.tar.gz"; - sha256 = "sha256-i73w/Vkr5TPLB1ulPbPU4OVGwdNlky1brfarueD7akE="; + sha256 = "sha256-ZIrs4oEb+PzdMh2x2BUFXKyu/HBlFb3CJX24ciEHy3Q="; }; nativeBuildInputs = [ From 333e7f2841bedba3c9b2b80b37d682a842ffea01 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Tue, 26 Mar 2024 18:45:42 -0400 Subject: [PATCH 3/5] openimagedenoise: Support building with CUDA It also has HIP, Metal, and SYCL support, but I do not have hardware to test any of those actually work. Further, Blender 4.1.0 does not enable GPU OIDN on AMD (HIP), but may in 4.2.0 it seems. --- .../libraries/openimagedenoise/cuda.patch | 32 +++++++++++++++++++ .../libraries/openimagedenoise/default.nix | 16 ++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/openimagedenoise/cuda.patch diff --git a/pkgs/development/libraries/openimagedenoise/cuda.patch b/pkgs/development/libraries/openimagedenoise/cuda.patch new file mode 100644 index 000000000000..4bc5172d8830 --- /dev/null +++ b/pkgs/development/libraries/openimagedenoise/cuda.patch @@ -0,0 +1,32 @@ +Remove upstream workarounds for CMake "limitations" that do not appear to exist +in nixpkgs build environment, but rather break the build, presumably because +CMAKE_INSTALL_{BIN,LIB}DIR is an absolute path in our build so +CMAKE_INSTALL_PREFIX has no effect. + +diff --git a/devices/CMakeLists.txt b/devices/CMakeLists.txt +index d5111cd..43986ad 100644 +--- a/devices/CMakeLists.txt ++++ b/devices/CMakeLists.txt +@@ -53,7 +53,6 @@ if(OIDN_DEVICE_CUDA) + -DCMAKE_CXX_COMPILER:FILEPATH=${_host_compiler} + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE} + -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE} +- -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/cuda/preinstall + -DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR} + -DCMAKE_INSTALL_LIBDIR:PATH=${CMAKE_INSTALL_LIBDIR} + -DCUDAToolkit_ROOT:PATH=${CUDAToolkit_ROOT} +@@ -69,14 +68,6 @@ if(OIDN_DEVICE_CUDA) + DEPENDS + OpenImageDenoise_core + ) +- +- # Due to limitations of CMake, the module is pre-installed at build time to a temporary location, +- # and then copied to the real install location at install time. +- install(DIRECTORY +- ${CMAKE_CURRENT_BINARY_DIR}/cuda/preinstall/ +- DESTINATION "." +- USE_SOURCE_PERMISSIONS +- ) + endif() + + if(OIDN_DEVICE_HIP) diff --git a/pkgs/development/libraries/openimagedenoise/default.nix b/pkgs/development/libraries/openimagedenoise/default.nix index 136143468783..e2d9b66004ed 100644 --- a/pkgs/development/libraries/openimagedenoise/default.nix +++ b/pkgs/development/libraries/openimagedenoise/default.nix @@ -1,5 +1,8 @@ { cmake, + config, + cudaPackages, + cudaSupport ? config.cudaSupport, fetchzip, ispc, lib, @@ -18,14 +21,23 @@ stdenv.mkDerivation rec { sha256 = "sha256-ZIrs4oEb+PzdMh2x2BUFXKyu/HBlFb3CJX24ciEHy3Q="; }; + patches = lib.optional cudaSupport ./cuda.patch; + nativeBuildInputs = [ cmake python3 ispc - ]; - buildInputs = [ tbb ]; + ] ++ lib.optional cudaSupport cudaPackages.cuda_nvcc; + + buildInputs = + [ tbb ] + ++ lib.optionals cudaSupport [ + cudaPackages.cuda_cudart + cudaPackages.cuda_cccl + ]; cmakeFlags = [ + (lib.cmakeBool "OIDN_DEVICE_CUDA" cudaSupport) (lib.cmakeFeature "TBB_INCLUDE_DIR" "${tbb.dev}/include") (lib.cmakeFeature "TBB_ROOT" "${tbb}") ]; From 60b9accc6028f64511219bb6d76bf85a4ec09323 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Tue, 26 Mar 2024 12:00:53 -0400 Subject: [PATCH 4/5] opensubdiv: 3.5.1 -> 3.6.0 Diff: https://github.com/PixarAnimationStudios/OpenSubdiv/compare/v3_5_1...v3_6_0 --- pkgs/development/libraries/opensubdiv/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/opensubdiv/default.nix b/pkgs/development/libraries/opensubdiv/default.nix index 17b7c286229b..3ed10ef270f9 100644 --- a/pkgs/development/libraries/opensubdiv/default.nix +++ b/pkgs/development/libraries/opensubdiv/default.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation rec { pname = "opensubdiv"; - version = "3.5.1"; + version = "3.6.0"; src = fetchFromGitHub { owner = "PixarAnimationStudios"; repo = "OpenSubdiv"; rev = "v${lib.replaceStrings ["."] ["_"] version}"; - sha256 = "sha256-uDKCT0Uoa5WQekMUFm2iZmzm+oWAZ6IWMwfpchkUZY0="; + sha256 = "sha256-liy6pQyWMk7rw0usrCoLGzZLO7RAg0z2pV/GF2NnOkE="; }; outputs = [ "out" "dev" "static" ]; From b8354622d6d66b4055e9ab6a011e34176c33807b Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Tue, 26 Mar 2024 13:45:02 -0400 Subject: [PATCH 5/5] blender: 4.0.2 -> 4.1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changelog: https://www.blender.org/download/releases/4-1/ Library updates: https://projects.blender.org/blender/blender/issues/113157 Blender now supports [GPU-accelerated OpenImageDenoise on select GPUs][1]. Enabled it for CUDA only for now as Blender 4.1.0 considers HIP (AMD) support unstable, and I don’t have any hardware for the SYCL (Intel) support, and it’s for very limited GPUs anyway (Xe-HPG datacenter). [1]: https://developer.blender.org/docs/release_notes/4.1/cycles/#supported-gpus --- pkgs/applications/misc/blender/default.nix | 24 ++++++---------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix index c0fb3b336d0f..8266f4bfd067 100644 --- a/pkgs/applications/misc/blender/default.nix +++ b/pkgs/applications/misc/blender/default.nix @@ -16,7 +16,6 @@ cudaSupport ? config.cudaSupport, dbus, embree, - fetchpatch, fetchurl, fetchzip, ffmpeg, @@ -68,7 +67,7 @@ pkg-config, potrace, pugixml, - python310Packages, # must use instead of python3.pkgs, see https://github.com/NixOS/nixpkgs/issues/211340 + python311Packages, # must use instead of python3.pkgs, see https://github.com/NixOS/nixpkgs/issues/211340 rocmPackages, # comes with a significantly larger closure size runCommand, spaceNavSupport ? stdenv.isLinux, @@ -82,7 +81,7 @@ }: let - python3Packages = python310Packages; + python3Packages = python311Packages; python3 = python3Packages.python; pyPkgsOpenusd = python3Packages.openusd.override { withOsl = false; }; @@ -100,25 +99,14 @@ in stdenv.mkDerivation (finalAttrs: { pname = "blender"; - version = "4.0.2"; + version = "4.1.0"; src = fetchurl { url = "https://download.blender.org/source/${finalAttrs.pname}-${finalAttrs.version}.tar.xz"; - hash = "sha256-qqDnKdp1kc+/RXcq92NFl32qp7EaCvNdmPkxPiRgd6M="; + hash = "sha256-3AAtguPDQMk4VcZoRzDQGAG2aaKbHMa3XuuZC6aecj8="; }; - patches = [ - ./draco.patch - (fetchpatch { - url = "https://projects.blender.org/blender/blender/commit/cf4365e555a759d5b3225bce77858374cb07faad.diff"; - hash = "sha256-Nypd04yFSHYa7RBa8kNmoApqJrU4qpaOle3tkj44d4g="; - }) - (fetchpatch { - # https://projects.blender.org/blender/blender/issues/117145 - url = "https://projects.blender.org/blender/blender/commit/eb99895c972b6c713294f68a34798aa51d36034a.patch"; - hash = "sha256-95nG5mW408lhKJ2BppgaUwBMMeXeGyBqho6mCfB53GI="; - }) - ] ++ lib.optional stdenv.isDarwin ./darwin.patch; + patches = [ ./draco.patch ] ++ lib.optional stdenv.isDarwin ./darwin.patch; postPatch = ( @@ -247,7 +235,7 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals (!stdenv.isAarch64) [ embree - openimagedenoise + (openimagedenoise.override { inherit cudaSupport; }) ] ++ ( if (!stdenv.isDarwin) then