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 @@ 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')") +set (USE_OIIO_STATIC ON CACHE BOOL "If OIIO is built static") +if (USE_OIIO_STATIC) + add_definitions ("-DOIIO_STATIC_BUILD=1") + add_definitions ("-DOIIO_STATIC_DEFINE=1") +endif () 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 @@ checked_find_package (ZLIB REQUIRED) # Needed by several packages +checked_find_package (PNG REQUIRED) # Needed since OIIO needs it # IlmBase & OpenEXR checked_find_package (OpenEXR REQUIRED diff -Naur OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h external_osl/src/include/OSL/llvm_util.h --- OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h 2022-09-30 17:43:53 -0600 +++ external_osl/src/include/OSL/llvm_util.h 2022-10-15 15:37:24 -0600 @@ -9,6 +9,8 @@ #include #include +#define OSL_HAS_BLENDER_CLEANUP_FIX + #ifdef LLVM_NAMESPACE namespace llvm = LLVM_NAMESPACE; #endif @@ -455,7 +457,7 @@ llvm::BasicBlock* masked_return_block() const; bool is_masking_required() const { return m_is_masking_required; } - + static void Cleanup (); struct ScopedMasking { ScopedMasking() {} 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 @@ -21,6 +21,13 @@ #if !defined(__STDC_CONSTANT_MACROS) # define __STDC_CONSTANT_MACROS 1 #endif + +// clang uses CALLBACK in its templates which causes issues if it is already defined +#ifdef _WIN32 && defined(CALLBACK) +# undef CALLBACK +#endif + +// #include #include #include diff -Naur OpenShadingLanguage-1.12.6.2/src/liboslexec/llvm_util.cpp external_osl/src/liboslexec/llvm_util.cpp --- OpenShadingLanguage-1.12.6.2/src/liboslexec/llvm_util.cpp 2022-09-30 17:43:53 -0600 +++ external_osl/src/liboslexec/llvm_util.cpp 2022-10-15 15:53:11 -0600 @@ -116,8 +116,6 @@ return { A.data(), size_t(A.size()) }; } - - namespace pvt { typedef llvm::SectionMemoryManager LLVMMemoryManager; @@ -182,6 +180,13 @@ ++jit_mem_hold_users; } +void +LLVM_Util::Cleanup() +{ + if (jitmm_hold) + jitmm_hold->clear(); +} + LLVM_Util::ScopedJitMemoryUser::~ScopedJitMemoryUser() { diff --git a/src/include/OSL/mask.h b/src/include/OSL/mask.h index 24197af..b9275f6 100644 --- a/src/include/OSL/mask.h +++ b/src/include/OSL/mask.h @@ -4,7 +4,6 @@ #pragma once -#include #include #include @@ -23,6 +22,8 @@ using std::countr_zero; #elif OSL_INTEL_CLASSIC_COMPILER_VERSION +#include + OSL_FORCEINLINE int popcount(uint32_t x) noexcept { return _mm_popcnt_u32(x);} OSL_FORCEINLINE int popcount(uint64_t x) noexcept { return _mm_popcnt_u64(x); } OSL_FORCEINLINE int countr_zero(uint32_t x) noexcept { return _bit_scan_forward(x); }