Build: Upgrade OIDN to the release v2.3.3

This release brings several fixes that Blender no longer needs
to patch manually, as well as support for various new and
upcoming hardware.

Pull Request: https://projects.blender.org/blender/blender/pulls/138171
This commit is contained in:
Nikita Sirgienko
2025-05-19 17:39:41 +02:00
committed by Nikita Sirgienko
parent 6562033a4a
commit cfb8aa24b2
5 changed files with 20 additions and 100 deletions

View File

@@ -67,10 +67,7 @@ endif()
set(ODIN_PATCH_COMMAND
${PATCH_CMD} --verbose -p 1 -N -d
${BUILD_DIR}/openimagedenoise/src/external_openimagedenoise <
${PATCH_DIR}/oidn.diff &&
${PATCH_CMD} --verbose -p 1 -N -d
${BUILD_DIR}/openimagedenoise/src/external_openimagedenoise <
${PATCH_DIR}/oidn_blackwell.diff
${PATCH_DIR}/oidn.diff
)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
@@ -82,14 +79,6 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
)
endif()
if(WIN32 AND BLENDER_PLATFORM_ARM)
set(ODIN_PATCH_COMMAND ${ODIN_PATCH_COMMAND} &&
${PATCH_CMD} --verbose -p 1 -N -d
${BUILD_DIR}/openimagedenoise/src/external_openimagedenoise <
${PATCH_DIR}/oidn_disable_dependentload.diff
)
endif()
ExternalProject_Add(external_openimagedenoise
URL file://${PACKAGE_DIR}/${OIDN_FILE}
DOWNLOAD_DIR ${DOWNLOAD_DIR}

View File

@@ -834,10 +834,10 @@ set(MATERIALX_HOMEPAGE https://github.com/AcademySoftwareFoundation/MaterialX)
set(MATERIALX_LICENSE SPDX:Apache-2.0)
set(MATERIALX_COPYRIGHT "Copyright Contributors to the MaterialX Project")
set(OIDN_VERSION 2.3.2)
set(OIDN_VERSION 2.3.3)
set(OIDN_NAME OpenImageDenoise)
set(OIDN_URI https://github.com/OpenImageDenoise/oidn/releases/download/v${OIDN_VERSION}/oidn-${OIDN_VERSION}.src.tar.gz)
set(OIDN_HASH ce4fa15ca6bfc4d4000653ef11049c11)
set(OIDN_URI https://github.com/RenderKit/oidn/releases/download/v${OIDN_VERSION}/oidn-${OIDN_VERSION}.src.tar.gz)
set(OIDN_HASH f7756731235b51dfb788787e2f7c9ee0)
set(OIDN_HASH_TYPE MD5)
set(OIDN_FILE oidn-${OIDN_VERSION}.src.tar.gz)
set(OIDN_HOMEPAGE https://www.openimagedenoise.org/)

View File

@@ -1,17 +1,17 @@
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index 38f04e2..2b58ad6 100644
index 057526d..059cdbd 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -95,6 +95,7 @@ set_target_properties(OpenImageDenoise_core PROPERTIES
@@ -94,6 +94,7 @@ set_target_properties(OpenImageDenoise_core PROPERTIES
OUTPUT_NAME ${OIDN_LIBRARY_NAME}_core
)
target_compile_definitions(OpenImageDenoise_core PRIVATE OIDN_LIBRARY_NAME="${OIDN_LIBRARY_NAME}")
+target_compile_definitions(OpenImageDenoise_core PRIVATE SHARED_POSTFIX=\"$<$<CONFIG:Debug>:$<TARGET_PROPERTY:OpenImageDenoise_core,DEBUG_POSTFIX>>\")
target_link_libraries(OpenImageDenoise_core
PUBLIC
if(OIDN_LIBRARY_VERSIONED)
set_target_properties(OpenImageDenoise_core PROPERTIES VERSION ${PROJECT_VERSION})
diff --git a/core/module.cpp b/core/module.cpp
index ba765be..19d67f8 100644
index cafedbc..b7d7ff6 100644
--- a/core/module.cpp
+++ b/core/module.cpp
@@ -29,7 +29,7 @@ OIDN_NAMESPACE_BEGIN
@@ -23,9 +23,9 @@ index ba765be..19d67f8 100644
#if defined(_WIN32)
filename += ".dll";
#else
@@ -37,7 +37,8 @@ OIDN_NAMESPACE_BEGIN
"." + toString(OIDN_VERSION_MINOR) +
"." + toString(OIDN_VERSION_PATCH);
@@ -39,7 +39,8 @@ OIDN_NAMESPACE_BEGIN
const std::string versionStr = "";
#endif
#if defined(__APPLE__)
- filename = "lib" + filename + versionStr + ".dylib";
+ // BLENDER: version string is stripped on macOS.
@@ -34,10 +34,10 @@ index ba765be..19d67f8 100644
filename = "lib" + filename + ".so" + versionStr;
#endif
diff --git a/devices/CMakeLists.txt b/devices/CMakeLists.txt
index 03937dc..8dcc236 100644
index d43a68e..c878613 100644
--- a/devices/CMakeLists.txt
+++ b/devices/CMakeLists.txt
@@ -66,6 +66,7 @@ if(OIDN_DEVICE_CUDA)
@@ -67,6 +67,7 @@ if(OIDN_DEVICE_CUDA)
-DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
-DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
-DOIDN_DEVICE_CUDA_API:STRING=${OIDN_DEVICE_CUDA_API}
@@ -45,7 +45,7 @@ index 03937dc..8dcc236 100644
BUILD_ALWAYS TRUE
DEPENDS
OpenImageDenoise_core
@@ -157,6 +158,8 @@ if(OIDN_DEVICE_HIP)
@@ -158,6 +159,8 @@ if(OIDN_DEVICE_HIP)
-DOIDN_API_NAMESPACE:STRING=${OIDN_API_NAMESPACE}
-DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
-DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
@@ -55,10 +55,10 @@ index 03937dc..8dcc236 100644
DEPENDS
OpenImageDenoise_core
diff --git a/devices/hip/hip_device.cpp b/devices/hip/hip_device.cpp
index 5842895..8272124 100644
index 35c6291..5cc2d84 100644
--- a/devices/hip/hip_device.cpp
+++ b/devices/hip/hip_device.cpp
@@ -93,10 +93,16 @@ OIDN_NAMESPACE_BEGIN
@@ -97,11 +97,17 @@ OIDN_NAMESPACE_BEGIN
{
const std::string name = getArchName(prop);
@@ -68,7 +68,8 @@ index 5842895..8272124 100644
return HIPArch::DL;
+ // BLENDER: this comment is meant to generate a merge conflict if the code
+ // here changes, so we know that hipSupportsDeviceOIDN should be updated.
if (name == "gfx1100" || name == "gfx1101" || name == "gfx1102")
if (name == "gfx1100" || name == "gfx1101" || name == "gfx1102" ||
name == "gfx1200" || name == "gfx1201")
return HIPArch::WMMA;
+ // BLENDER: this comment is meant to generate a merge conflict if the code
+ // here changes, so we know that hipSupportsDeviceOIDN should be updated.

View File

@@ -1,41 +0,0 @@
diff -Naur orig/devices/cuda/CMakeLists.txt external_openimagedenoise/devices/cuda/CMakeLists.txt
--- orig/devices/cuda/CMakeLists.txt
+++ external_openimagedenoise/devices/cuda/CMakeLists.txt
@@ -51,13 +52,15 @@
set(OIDN_NVCC_SM75_FLAGS "-gencode arch=compute_75,code=sm_75")
set(OIDN_NVCC_SM80_FLAGS "-gencode arch=compute_80,code=sm_80")
set(OIDN_NVCC_SM90_FLAGS "-gencode arch=compute_90,code=sm_90")
+set(OIDN_NVCC_SM100_FLAGS "-gencode arch=compute_100,code=sm_100")
+set(OIDN_NVCC_SM120_FLAGS "-gencode arch=compute_120,code=sm_120")
set_source_files_properties(
cuda_conv.cu
cuda_device.cu
cuda_engine.cu
PROPERTIES COMPILE_FLAGS
- "${OIDN_NVCC_SM70_FLAGS} ${OIDN_NVCC_SM75_FLAGS} ${OIDN_NVCC_SM80_FLAGS} ${OIDN_NVCC_SM90_FLAGS}"
+ "${OIDN_NVCC_SM70_FLAGS} ${OIDN_NVCC_SM75_FLAGS} ${OIDN_NVCC_SM80_FLAGS} ${OIDN_NVCC_SM90_FLAGS} ${OIDN_NVCC_SM100_FLAGS} ${OIDN_NVCC_SM120_FLAGS}"
)
set_source_files_properties(
@@ -72,7 +75,7 @@
set_source_files_properties(
cutlass_conv_sm80.cu
- PROPERTIES COMPILE_FLAGS "${OIDN_NVCC_SM80_FLAGS} ${OIDN_NVCC_SM90_FLAGS}"
+ PROPERTIES COMPILE_FLAGS "${OIDN_NVCC_SM80_FLAGS} ${OIDN_NVCC_SM90_FLAGS} ${OIDN_NVCC_SM100_FLAGS} ${OIDN_NVCC_SM120_FLAGS}"
)
add_library(OpenImageDenoise_device_cuda SHARED ${OIDN_CUDA_SOURCES} ${OIDN_GPU_SOURCES} ${OIDN_RESOURCE_FILE})
diff -Naur orig/devices/cuda/cuda_device.h external_openimagedenoise/devices/cuda/cuda_device.h
--- orig/devices/cuda/cuda_device.h
+++ external_openimagedenoise/devices/cuda/cuda_device.h
@@ -50,7 +50,7 @@
// Supported compute capabilities
static constexpr int minSMArch = 70;
- static constexpr int maxSMArch = 99;
+ static constexpr int maxSMArch = 120;
int deviceID = 0;
#if defined(OIDN_DEVICE_CUDA_API_DRIVER)

View File

@@ -1,29 +0,0 @@
diff --git a/cmake/oidn_platform.cmake b/cmake/oidn_platform.cmake
index d5cc45e..24fcd5b 100644
--- a/cmake/oidn_platform.cmake
+++ b/cmake/oidn_platform.cmake
@@ -232,15 +232,15 @@ if(MSVC)
# Enable control flow guard
append(OIDN_C_CXX_FLAGS "/guard:cf")
- if(WIN32)
- if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
- append(CMAKE_EXE_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000")
- append(CMAKE_SHARED_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000")
- elseif(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
- append(CMAKE_EXE_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000")
- append(CMAKE_SHARED_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000")
- endif()
- endif()
+ #if(WIN32)
+ # if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ # append(CMAKE_EXE_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000")
+ # append(CMAKE_SHARED_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000")
+ # elseif(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
+ # append(CMAKE_EXE_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000")
+ # append(CMAKE_SHARED_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000")
+ # endif()
+ #endif()
else()
append(OIDN_C_CXX_FLAGS_RELEASE "-fstack-protector")