[Bf-blender-cvs] [0660f6e7dc1] tmp-vfx-platform-2023: OSL: enable OptiX support and use hash instead of official release

Brecht Van Lommel noreply at git.blender.org
Wed Nov 9 18:42:20 CET 2022


Commit: 0660f6e7dc15d7acce1ce646194bca1e98e932ad
Author: Brecht Van Lommel
Date:   Wed Nov 9 18:38:34 2022 +0100
Branches: tmp-vfx-platform-2023
https://developer.blender.org/rB0660f6e7dc15d7acce1ce646194bca1e98e932ad

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

===================================================================

M	build_files/build_environment/CMakeLists.txt
M	build_files/build_environment/cmake/llvm.cmake
M	build_files/build_environment/cmake/versions.cmake
M	build_files/build_environment/patches/osl.diff

===================================================================

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;
+ }
+



More information about the Bf-blender-cvs mailing list