Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2022-11-09 20:38:34 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-11-09 20:40:09 +0300
commit0660f6e7dc15d7acce1ce646194bca1e98e932ad (patch)
tree870127ea2a4d5ae6b47392889f416eebfed10c76
parent5d772ac1fb0c64fae13a222413a6d9a6d9cf7a8d (diff)
OSL: enable OptiX support and use hash instead of official release
There is an issue with the latest OSL that we need to get fixed so we can avoid using the older hash. Hoping to get this fixed before the new 3.5 libs go to master. Ref D15902
-rw-r--r--build_files/build_environment/CMakeLists.txt2
-rw-r--r--build_files/build_environment/cmake/llvm.cmake4
-rw-r--r--build_files/build_environment/cmake/versions.cmake9
-rw-r--r--build_files/build_environment/patches/osl.diff56
4 files changed, 55 insertions, 16 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index a50a2af1755..75591333c12 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -75,10 +75,10 @@ if(WIN32)
elseif(UNIX AND NOT APPLE)
include(cmake/flex.cmake)
endif()
-include(cmake/osl.cmake)
include(cmake/tbb.cmake)
include(cmake/python.cmake)
include(cmake/llvm.cmake)
+include(cmake/osl.cmake)
option(USE_PIP_NUMPY "Install NumPy using pip wheel instead of building from source" OFF)
if(APPLE AND ("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64"))
set(USE_PIP_NUMPY ON)
diff --git a/build_files/build_environment/cmake/llvm.cmake b/build_files/build_environment/cmake/llvm.cmake
index dddf4b1277f..26e1f1f58b4 100644
--- a/build_files/build_environment/cmake/llvm.cmake
+++ b/build_files/build_environment/cmake/llvm.cmake
@@ -13,9 +13,11 @@ if(APPLE)
)
set(LLVM_BUILD_CLANG_TOOLS_EXTRA ^^clang-tools-extra)
set(BUILD_CLANG_TOOLS ON)
+else()
+ # NVIDIA PTX for OSL on Windows and Linux.
+ set(LLVM_TARGETS ${LLVM_TARGETS}$<SEMICOLON>NVPTX)
endif()
-
set(LLVM_EXTRA_ARGS
-DLLVM_USE_CRT_RELEASE=MD
-DLLVM_USE_CRT_DEBUG=MDd
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index eed43529381..c57e9da55e0 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -195,9 +195,12 @@ set(TIFF_HASH_TYPE MD5)
set(TIFF_FILE tiff-${TIFF_VERSION}.tar.gz)
set(TIFF_CPE "cpe:2.3:a:libtiff:libtiff:${TIFF_VERSION}:*:*:*:*:*:*:*")
-set(OSL_VERSION 1.12.6.2)
-set(OSL_URI https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/archive/refs/tags/v${OSL_VERSION}.tar.gz)
-set(OSL_HASH 6fef11548adfdd3e5b25c49d2dae96ee)
+# Commit c8dd33f5a37b6a6db0b6950d24f9a7cff5ceb799 breaks rendering in Cycles with OptiX, so this
+# is intentionally still a commit before that and therefore 1.13.0.1. To be updated to a newer
+# version before landing this in master.
+set(OSL_VERSION 1a7670600c8b08c2443a78d03c8c27e9a1149140)
+set(OSL_URI https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/archive/${OSL_VERSION}.tar.gz)
+set(OSL_HASH 7b6d6716b05d1addb92a8f47280bf77f)
set(OSL_HASH_TYPE MD5)
set(OSL_FILE OpenShadingLanguage-${OSL_VERSION}.tar.gz)
diff --git a/build_files/build_environment/patches/osl.diff b/build_files/build_environment/patches/osl.diff
index 75f7b13a165..8578a1b782b 100644
--- a/build_files/build_environment/patches/osl.diff
+++ b/build_files/build_environment/patches/osl.diff
@@ -1,7 +1,8 @@
-diff -Naur OpenShadingLanguage-1.12.6.2/CMakeLists.txt external_osl/CMakeLists.txt
---- OpenShadingLanguage-1.12.6.2/CMakeLists.txt 2022-09-30 17:43:53 -0600
-+++ external_osl/CMakeLists.txt 2022-10-15 14:49:26 -0600
-@@ -101,6 +101,11 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d527232..5ad6eaa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -99,6 +99,11 @@ set (OSL_PTX_INSTALL_DIR "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}/ptx"
CACHE STRING "Directory where OptiX PTX files will be installed")
set (CMAKE_DEBUG_POSTFIX "" CACHE STRING "Library naming postfix for Debug builds (e.g., '_debug')")
@@ -13,10 +14,11 @@ diff -Naur OpenShadingLanguage-1.12.6.2/CMakeLists.txt external_osl/CMakeLists.t
set (OSL_NO_DEFAULT_TEXTURESYSTEM OFF CACHE BOOL "Do not use create a raw OIIO::TextureSystem")
if (OSL_NO_DEFAULT_TEXTURESYSTEM)
-diff -Naur OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake external_osl/src/cmake/externalpackages.cmake
---- OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake 2022-09-30 17:43:53 -0600
-+++ external_osl/src/cmake/externalpackages.cmake 2022-10-15 14:49:26 -0600
-@@ -77,6 +77,7 @@
+diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake
+index a7e098b..dad11d0 100644
+--- a/src/cmake/externalpackages.cmake
++++ b/src/cmake/externalpackages.cmake
+@@ -77,6 +77,7 @@ link_directories ("${Boost_LIBRARY_DIRS}")
checked_find_package (ZLIB REQUIRED) # Needed by several packages
@@ -24,9 +26,10 @@ diff -Naur OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake externa
# IlmBase & OpenEXR
checked_find_package (OpenEXR REQUIRED
-diff -Naur OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp external_osl/src/liboslcomp/oslcomp.cpp
---- OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp 2022-09-30 17:43:53 -0600
-+++ external_osl/src/liboslcomp/oslcomp.cpp 2022-10-15 14:49:26 -0600
+diff --git a/src/liboslcomp/oslcomp.cpp b/src/liboslcomp/oslcomp.cpp
+index 8c2e77b..211b8a7 100644
+--- a/src/liboslcomp/oslcomp.cpp
++++ b/src/liboslcomp/oslcomp.cpp
@@ -21,6 +21,13 @@
#if !defined(__STDC_CONSTANT_MACROS)
# define __STDC_CONSTANT_MACROS 1
@@ -41,3 +44,34 @@ diff -Naur OpenShadingLanguage-1.12.6.2/src/liboslcomp/oslcomp.cpp external_osl/
#include <clang/Basic/TargetInfo.h>
#include <clang/Frontend/CompilerInstance.h>
#include <clang/Frontend/TextDiagnosticPrinter.h>
+diff --git a/src/liboslexec/llvm_instance.cpp b/src/liboslexec/llvm_instance.cpp
+index 8f52546..8c2d0c7 100644
+--- a/src/liboslexec/llvm_instance.cpp
++++ b/src/liboslexec/llvm_instance.cpp
+@@ -1363,6 +1363,10 @@ BackendLLVM::run()
+ #ifdef OSL_LLVM_NO_BITCODE
+ OSL_ASSERT(!use_rs_bitcode());
+ ll.module(ll.new_module("llvm_ops"));
++ if (use_optix()) {
++ ll.module()->setDataLayout("e-i64:64-i128:128-v16:16-v32:32-n16:32:64");
++ ll.module()->setTargetTriple("nvptx64-nvidia-cuda");
++ }
+ #else
+ if (!use_optix()) {
+ if (use_rs_bitcode()) {
+diff --git a/src/liboslexec/shadingsys.cpp b/src/liboslexec/shadingsys.cpp
+index 46e4529..8e86486 100644
+--- a/src/liboslexec/shadingsys.cpp
++++ b/src/liboslexec/shadingsys.cpp
+@@ -2121,6 +2121,11 @@ ShadingSystemImpl::getattribute(ShaderGroup* group, string_view name,
+ return true;
+ }
+
++ if (name == "groupdata_size" && type == TypeDesc::TypeInt) {
++ *(int*)val = (int)group->m_llvm_groupdata_size;
++ return true;
++ }
++
+ return false;
+ }
+