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.
This commit is contained in:
Andrew Marshall 2024-03-26 18:45:42 -04:00
parent acb367ce1f
commit 333e7f2841
2 changed files with 46 additions and 2 deletions

View file

@ -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)

View file

@ -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}")
];