Fix #118709: Crash in OIDN GPU detection for unsupported HIP device
[blender.git] / build_files / build_environment / patches / oidn.diff
blob77ad933a655dcdc20e516d88ad3151867fed7c59
1 diff -Naur oidn-2.2.0/core/CMakeLists.txt external_openimagedenoise/core/CMakeLists.txt
2 --- oidn-2.2.0/core/CMakeLists.txt 2024-02-01 17:52:16 -0700
3 +++ external_openimagedenoise/core/CMakeLists.txt 2024-02-03 12:41:34 -0700
4 @@ -87,7 +87,7 @@
6 add_library(OpenImageDenoise_core ${OIDN_CORE_LIB_TYPE} ${OIDN_CORE_SOURCES} ${OIDN_RESOURCE_FILE})
7 set_property(TARGET OpenImageDenoise_core PROPERTY VERSION ${PROJECT_VERSION})
9 +target_compile_definitions(OpenImageDenoise_core PRIVATE SHARED_POSTFIX=\"$<$<CONFIG:Debug>:$<TARGET_PROPERTY:OpenImageDenoise_core,DEBUG_POSTFIX>>\")
10 target_link_libraries(OpenImageDenoise_core
11 PUBLIC
12 OpenImageDenoise_common
13 diff -Naur oidn-2.2.0/core/module.cpp external_openimagedenoise/core/module.cpp
14 --- oidn-2.2.0/core/module.cpp 2024-02-01 17:52:16 -0700
15 +++ external_openimagedenoise/core/module.cpp 2024-02-03 12:41:34 -0700
16 @@ -29,7 +29,7 @@
17 return true; // module already loaded
19 // Get the path of the module to load
20 - std::string filename = "OpenImageDenoise_" + name;
21 + std::string filename = "OpenImageDenoise_" + name + SHARED_POSTFIX;
22 #if defined(_WIN32)
23 filename += ".dll";
24 #else
25 @@ -37,7 +37,8 @@
26 "." + toString(OIDN_VERSION_MINOR) +
27 "." + toString(OIDN_VERSION_PATCH);
28 #if defined(__APPLE__)
29 - filename = "lib" + filename + versionStr + ".dylib";
30 + // BLENDER: version string is stripped on macOS.
31 + filename = "lib" + filename + ".dylib";
32 #else
33 filename = "lib" + filename + ".so" + versionStr;
34 #endif
35 diff -Naur oidn-2.2.0/devices/CMakeLists.txt external_openimagedenoise/devices/CMakeLists.txt
36 --- oidn-2.2.0/devices/CMakeLists.txt 2024-02-01 17:52:16 -0700
37 +++ external_openimagedenoise/devices/CMakeLists.txt 2024-02-03 13:10:31 -0700
38 @@ -65,6 +65,7 @@
39 -DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
40 -DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
41 -DOIDN_DEVICE_CUDA_API:STRING=${OIDN_DEVICE_CUDA_API}
42 + -DPython_EXECUTABLE:STRING=${Python_EXECUTABLE}
43 BUILD_ALWAYS TRUE
44 DEPENDS
45 OpenImageDenoise_core
46 @@ -155,6 +156,8 @@
47 -DOIDN_API_NAMESPACE:STRING=${OIDN_API_NAMESPACE}
48 -DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
49 -DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
50 + -DPython_EXECUTABLE:STRING=${Python_EXECUTABLE}
51 + -DCMAKE_DEBUG_POSTFIX:STRING=${CMAKE_DEBUG_POSTFIX}
52 BUILD_ALWAYS TRUE
53 DEPENDS
54 OpenImageDenoise_core
55 diff --git a/devices/hip/hip_device.cpp b/devices/hip/hip_device.cpp
56 index ae14ced..a49e131 100644
57 --- a/devices/hip/hip_device.cpp
58 +++ b/devices/hip/hip_device.cpp
59 @@ -93,10 +93,16 @@ OIDN_NAMESPACE_BEGIN
61 const std::string name = getArchName(prop);
63 + // BLENDER: this comment is meant to generate a merge conflict if the code
64 + // here changes, so we know that hipSupportsDeviceOIDN should be updated.
65 if (name == "gfx1030")
66 return HIPArch::DL;
67 + // BLENDER: this comment is meant to generate a merge conflict if the code
68 + // here changes, so we know that hipSupportsDeviceOIDN should be updated.
69 if (name == "gfx1100" || name == "gfx1101" || name == "gfx1102")
70 return HIPArch::WMMA;
71 + // BLENDER: this comment is meant to generate a merge conflict if the code
72 + // here changes, so we know that hipSupportsDeviceOIDN should be updated.
73 else
74 return HIPArch::Unknown;