forked from pool/OpenShadingLanguage
Accepting request 925960 from home:frispete:blender
- Update to version 1.11.15.0 + Changes for compatibility with OpenImageIO 2.3. #1393 #1388 + Fix potential crashes (or at least undefined behavior) due to missing + virtual destructor of internal Symbol type. #1397 - Apply 8682211d0bfe5c4be63a4a003d06037ff9721e66.diff and 1420.diff in order to build with LLVM 13. - Add partio library dependency OBS-URL: https://build.opensuse.org/request/show/925960 OBS-URL: https://build.opensuse.org/package/show/graphics/OpenShadingLanguage?expand=0&rev=27
This commit is contained in:
parent
43dd4dc29b
commit
ec3c2d5399
207
1420.diff
Normal file
207
1420.diff
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
Index: b/INSTALL.md
|
||||||
|
===================================================================
|
||||||
|
--- a/INSTALL.md
|
||||||
|
+++ b/INSTALL.md
|
||||||
|
@@ -16,7 +16,7 @@ NEW or CHANGED dependencies since the la
|
||||||
|
|
||||||
|
* A suitable C++11 compiler to build OSL itself, which may be any of:
|
||||||
|
- GCC 4.8.5 or newer (tested through gcc 11)
|
||||||
|
- - Clang 3.4 or newer (tested through clang 12)
|
||||||
|
+ - Clang 3.4 or newer (tested through clang 13)
|
||||||
|
- Microsoft Visual Studio 2015 or newer
|
||||||
|
- Intel C++ compiler icc version 13 (?) or newer
|
||||||
|
|
||||||
|
@@ -43,7 +43,7 @@ NEW or CHANGED dependencies since the la
|
||||||
|
DYLD_LIBRARY_PATH on OS X) and then OSL's build scripts will be able
|
||||||
|
to find it.
|
||||||
|
|
||||||
|
-* **[LLVM](http://www.llvm.org) 7, 8, 9, 10, 11, or 12**, including
|
||||||
|
+* **[LLVM](http://www.llvm.org) 7, 8, 9, 10, 11, 12, or 13**, including clang
|
||||||
|
clang libraries.
|
||||||
|
|
||||||
|
Note that LLVM 10+ is not compatible with C++11, and requires C++14 or
|
||||||
|
@@ -73,13 +73,13 @@ Build process
|
||||||
|
|
||||||
|
Here are the steps to check out, build, and test the OSL distribution:
|
||||||
|
|
||||||
|
-0. Install and build dependencies.
|
||||||
|
+1. Install and build dependencies.
|
||||||
|
|
||||||
|
-1. Check out a copy of the source code from the Git repository:
|
||||||
|
+2. Check out a copy of the source code from the Git repository:
|
||||||
|
|
||||||
|
git clone https://github.com/AcademySoftwareFoundation/OpenShadingLanguage.git osl
|
||||||
|
|
||||||
|
-2. Change to the distribution directory and 'make'
|
||||||
|
+3. Change to the distribution directory and 'make'
|
||||||
|
|
||||||
|
cd osl
|
||||||
|
make
|
||||||
|
@@ -95,7 +95,7 @@ Here are the steps to check out, build,
|
||||||
|
"make STOP_ON_WARNING=0", that create a build that will only stop for
|
||||||
|
full errors, not warnings.
|
||||||
|
|
||||||
|
-3. After compilation, you'll end up with a full OSL distribution in
|
||||||
|
+4. After compilation, you'll end up with a full OSL distribution in
|
||||||
|
dist/ARCH, where ARCH is the architecture you are building on, one of
|
||||||
|
"linux", "linux64", "macosx", "windows", or "windows64".
|
||||||
|
|
||||||
|
@@ -103,14 +103,14 @@ Here are the steps to check out, build,
|
||||||
|
instead type 'make debug' at the top level, you will end up with
|
||||||
|
a debug build (no optimization, full symbols) in "dist/ARCH.debug".
|
||||||
|
|
||||||
|
-4. Add the "dist/ARCH/bin" to your $PATH, and "dist/ARCH/lib" to your
|
||||||
|
+5. Add the "dist/ARCH/bin" to your $PATH, and "dist/ARCH/lib" to your
|
||||||
|
$LD_LIBRAY_PATH (or $DYLD_LIBRARY_PATH on OS X), or copy the contents
|
||||||
|
of those files to appropriate directories. Public include files
|
||||||
|
(those needed when building applications that incorporate OSL)
|
||||||
|
can be found in "dist/ARCH/include", and documentation can be found
|
||||||
|
in "dist/ARCH/share/doc".
|
||||||
|
|
||||||
|
-5. After building (and setting your library path), you can run the
|
||||||
|
+6. After building (and setting your library path), you can run the
|
||||||
|
test suite with:
|
||||||
|
|
||||||
|
make test
|
||||||
|
Index: b/src/include/OSL/llvm_util.h
|
||||||
|
===================================================================
|
||||||
|
--- a/src/include/OSL/llvm_util.h
|
||||||
|
+++ b/src/include/OSL/llvm_util.h
|
||||||
|
@@ -577,6 +577,9 @@ public:
|
||||||
|
llvm::Value *src, int srcalign, int len);
|
||||||
|
|
||||||
|
/// Dereference a pointer: return *ptr
|
||||||
|
+ /// type is the type of the thing being pointed to.
|
||||||
|
+ llvm::Value *op_load (llvm::Type* type, llvm::Value *ptr);
|
||||||
|
+ // Blind pointer version that's deprecated as of LLVM13:
|
||||||
|
llvm::Value *op_load (llvm::Value *ptr);
|
||||||
|
|
||||||
|
/// Store to a dereferenced pointer: *ptr = val
|
||||||
|
@@ -589,17 +592,25 @@ public:
|
||||||
|
|
||||||
|
/// Generate a GEP (get element pointer) where the element index is an
|
||||||
|
/// llvm::Value, which can be generated from either a constant or a
|
||||||
|
- /// runtime-computed integer element index.
|
||||||
|
+ /// runtime-computed integer element index. `type` is the type of the data
|
||||||
|
+ /// we're retrieving.
|
||||||
|
+ llvm::Value *GEP (llvm::Type* type, llvm::Value *ptr, llvm::Value *elem);
|
||||||
|
+ // Blind pointer version that's deprecated as of LLVM13:
|
||||||
|
llvm::Value *GEP (llvm::Value *ptr, llvm::Value *elem);
|
||||||
|
|
||||||
|
/// Generate a GEP (get element pointer) with an integer element
|
||||||
|
- /// offset.
|
||||||
|
+ /// offset. `type` is the type of the data we're retrieving.
|
||||||
|
+ llvm::Value *GEP (llvm::Type* type, llvm::Value *ptr, int elem);
|
||||||
|
+ // Blind pointer version that's deprecated as of LLVM13:
|
||||||
|
llvm::Value *GEP (llvm::Value *ptr, int elem);
|
||||||
|
|
||||||
|
/// Generate a GEP (get element pointer) with two integer element
|
||||||
|
/// offsets. This is just a special (and common) case of GEP where
|
||||||
|
/// we have a 2-level hierarchy and we have fixed element indices
|
||||||
|
- /// that are known at compile time.
|
||||||
|
+ /// that are known at compile time. `type` is the type of the data we're
|
||||||
|
+ /// retrieving.
|
||||||
|
+ llvm::Value *GEP (llvm::Type* type, llvm::Value *ptr, int elem1, int elem2);
|
||||||
|
+ // Blind pointer version that's deprecated as of LLVM13:
|
||||||
|
llvm::Value *GEP (llvm::Value *ptr, int elem1, int elem2);
|
||||||
|
|
||||||
|
// Arithmetic ops. It auto-detects the type (int vs float).
|
||||||
|
Index: b/src/liboslexec/llvm_util.cpp
|
||||||
|
===================================================================
|
||||||
|
--- a/src/liboslexec/llvm_util.cpp
|
||||||
|
+++ b/src/liboslexec/llvm_util.cpp
|
||||||
|
@@ -2592,9 +2592,17 @@ LLVM_Util::op_memcpy (llvm::Value *dst,
|
||||||
|
|
||||||
|
|
||||||
|
llvm::Value *
|
||||||
|
+LLVM_Util::op_load (llvm::Type* type, llvm::Value* ptr)
|
||||||
|
+{
|
||||||
|
+ return builder().CreateLoad (type, ptr);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+llvm::Value *
|
||||||
|
LLVM_Util::op_load (llvm::Value *ptr)
|
||||||
|
{
|
||||||
|
- return builder().CreateLoad (ptr);
|
||||||
|
+ return op_load(ptr->getType()->getPointerElementType(), ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2608,9 +2616,26 @@ LLVM_Util::op_store (llvm::Value *val, l
|
||||||
|
|
||||||
|
|
||||||
|
llvm::Value *
|
||||||
|
+LLVM_Util::GEP (llvm::Type* type, llvm::Value* ptr, llvm::Value* elem)
|
||||||
|
+{
|
||||||
|
+ return builder().CreateGEP(type, ptr, elem);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+llvm::Value *
|
||||||
|
LLVM_Util::GEP (llvm::Value *ptr, llvm::Value *elem)
|
||||||
|
{
|
||||||
|
- return builder().CreateGEP (ptr, elem);
|
||||||
|
+ return GEP(ptr->getType()->getScalarType()->getPointerElementType(), ptr,
|
||||||
|
+ elem);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+llvm::Value *
|
||||||
|
+LLVM_Util::GEP (llvm::Type* type, llvm::Value* ptr, int elem)
|
||||||
|
+{
|
||||||
|
+ return builder().CreateConstGEP1_32(type, ptr, elem);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2618,7 +2643,16 @@ LLVM_Util::GEP (llvm::Value *ptr, llvm::
|
||||||
|
llvm::Value *
|
||||||
|
LLVM_Util::GEP (llvm::Value *ptr, int elem)
|
||||||
|
{
|
||||||
|
- return builder().CreateConstGEP1_32 (ptr, elem);
|
||||||
|
+ return GEP(ptr->getType()->getScalarType()->getPointerElementType(), ptr,
|
||||||
|
+ elem);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+llvm::Value *
|
||||||
|
+LLVM_Util::GEP(llvm::Type* type, llvm::Value* ptr, int elem1, int elem2)
|
||||||
|
+{
|
||||||
|
+ return builder().CreateConstGEP2_32 (type, ptr, elem1, elem2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2626,7 +2660,8 @@ LLVM_Util::GEP (llvm::Value *ptr, int el
|
||||||
|
llvm::Value *
|
||||||
|
LLVM_Util::GEP (llvm::Value *ptr, int elem1, int elem2)
|
||||||
|
{
|
||||||
|
- return builder().CreateConstGEP2_32 (nullptr, ptr, elem1, elem2);
|
||||||
|
+ return GEP(ptr->getType()->getScalarType()->getPointerElementType(), ptr,
|
||||||
|
+ elem1, elem2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Index: b/src/liboslexec/runtimeoptimize.cpp
|
||||||
|
===================================================================
|
||||||
|
--- a/src/liboslexec/runtimeoptimize.cpp
|
||||||
|
+++ b/src/liboslexec/runtimeoptimize.cpp
|
||||||
|
@@ -2301,7 +2301,6 @@ RuntimeOptimizer::optimize_instance ()
|
||||||
|
// passes, but we have a hard cutoff just to be sure we don't
|
||||||
|
// ever get into an infinite loop from an unforseen cycle where we
|
||||||
|
// end up inadvertently transforming A => B => A => etc.
|
||||||
|
- int totalchanged = 0;
|
||||||
|
int reallydone = 0; // Force a few passes after we think we're done
|
||||||
|
int npasses = shadingsys().opt_passes();
|
||||||
|
for (m_pass = 0; m_pass < npasses; ++m_pass) {
|
||||||
|
@@ -2362,7 +2361,6 @@ RuntimeOptimizer::optimize_instance ()
|
||||||
|
// If nothing changed, we're done optimizing. But wait, it may be
|
||||||
|
// that after re-tracking variable lifetimes, we can notice new
|
||||||
|
// optimizations! So force another pass, then we're really done.
|
||||||
|
- totalchanged += changed;
|
||||||
|
if (changed < 1) {
|
||||||
|
if (++reallydone > 3)
|
||||||
|
break;
|
33
8682211d0bfe5c4be63a4a003d06037ff9721e66.diff
Normal file
33
8682211d0bfe5c4be63a4a003d06037ff9721e66.diff
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
diff --git a/src/liboslexec/llvm_util.cpp b/src/liboslexec/llvm_util.cpp
|
||||||
|
index 4bd0dca35..4d0e1752d 100644
|
||||||
|
--- a/src/liboslexec/llvm_util.cpp
|
||||||
|
+++ b/src/liboslexec/llvm_util.cpp
|
||||||
|
@@ -1407,7 +1407,9 @@ LLVM_Util::make_jit_execengine (std::string *err,
|
||||||
|
|
||||||
|
options.NoZerosInBSS = false;
|
||||||
|
options.GuaranteedTailCallOpt = false;
|
||||||
|
+#if OSL_LLVM_VERSION < 120
|
||||||
|
options.StackAlignmentOverride = 0;
|
||||||
|
+#endif
|
||||||
|
options.FunctionSections = true;
|
||||||
|
options.UseInitArray = false;
|
||||||
|
options.FloatABIType = llvm::FloatABI::Default;
|
||||||
|
@@ -5385,7 +5387,7 @@ void
|
||||||
|
LLVM_Util::write_bitcode_file (const char *filename, std::string *err)
|
||||||
|
{
|
||||||
|
std::error_code local_error;
|
||||||
|
- llvm::raw_fd_ostream out (filename, local_error, llvm::sys::fs::F_None);
|
||||||
|
+ llvm::raw_fd_ostream out (filename, local_error, llvm::sys::fs::OF_None);
|
||||||
|
if (! out.has_error()) {
|
||||||
|
llvm::WriteBitcodeToFile (*module(), out);
|
||||||
|
if (err && local_error)
|
||||||
|
@@ -5447,7 +5449,9 @@ LLVM_Util::ptx_compile_group (llvm::Module* lib_module, const std::string& name,
|
||||||
|
options.AllowFPOpFusion = llvm::FPOpFusion::Fast;
|
||||||
|
options.NoZerosInBSS = 0;
|
||||||
|
options.GuaranteedTailCallOpt = 0;
|
||||||
|
+#if OSL_LLVM_VERSION < 120
|
||||||
|
options.StackAlignmentOverride = 0;
|
||||||
|
+#endif
|
||||||
|
options.UseInitArray = 0;
|
||||||
|
|
||||||
|
llvm::TargetMachine* target_machine = llvm_target->createTargetMachine(
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:6dea570686740a5d5c81e595020f3fef5b8af7201a95460024c17297fb7eb718
|
|
||||||
size 14143213
|
|
3
OpenShadingLanguage-1.11.15.0.tar.gz
Normal file
3
OpenShadingLanguage-1.11.15.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:62482b4f1751cd209ad0dd82c2d1505b4921e851fc2a0eb105aba31a03bef9c3
|
||||||
|
size 14143075
|
@ -1,3 +1,15 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Oct 17 15:57:25 UTC 2021 - Hans-Peter Jansen <hpj@urpla.net>
|
||||||
|
|
||||||
|
- Update to version 1.11.15.0
|
||||||
|
+ Changes for compatibility with OpenImageIO 2.3. #1393 #1388
|
||||||
|
+ Fix potential crashes (or at least undefined behavior) due to
|
||||||
|
missing
|
||||||
|
+ virtual destructor of internal Symbol type. #1397
|
||||||
|
- Apply 8682211d0bfe5c4be63a4a003d06037ff9721e66.diff and 1420.diff
|
||||||
|
in order to build with LLVM 13.
|
||||||
|
- Add partio library dependency
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Aug 31 14:36:55 UTC 2021 - Hans-Peter Jansen <hpj@urpla.net>
|
Tue Aug 31 14:36:55 UTC 2021 - Hans-Peter Jansen <hpj@urpla.net>
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
%define oiio_major_minor_ver %(rpm -q --queryformat='%%{version}' OpenImageIO-devel | cut -d . -f 1-2)
|
%define oiio_major_minor_ver %(rpm -q --queryformat='%%{version}' OpenImageIO-devel | cut -d . -f 1-2)
|
||||||
|
|
||||||
Name: OpenShadingLanguage
|
Name: OpenShadingLanguage
|
||||||
Version: 1.11.14.2
|
Version: 1.11.15.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A language for programmable shading
|
Summary: A language for programmable shading
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
@ -31,6 +31,10 @@ Group: Productivity/Graphics/Other
|
|||||||
URL: https://github.com/AcademySoftwareFoundation/OpenShadingLanguage
|
URL: https://github.com/AcademySoftwareFoundation/OpenShadingLanguage
|
||||||
Source0: https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
Source0: https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||||
Source1: https://creativecommons.org/licenses/by/3.0/legalcode.txt#/CC-BY-3.0.txt
|
Source1: https://creativecommons.org/licenses/by/3.0/legalcode.txt#/CC-BY-3.0.txt
|
||||||
|
# PATCH-FIX-UPSTREAM: 8682211d0bfe5c4be63a4a003d06037ff9721e66.diff - fix build with LLVM >= 12
|
||||||
|
Patch0: 8682211d0bfe5c4be63a4a003d06037ff9721e66.diff
|
||||||
|
# PATCH-FIX-UPSTREAM: 1420.diff - fix build with LLVM >= 13
|
||||||
|
Patch1: 1420.diff
|
||||||
BuildRequires: OpenEXR-devel
|
BuildRequires: OpenEXR-devel
|
||||||
BuildRequires: OpenImageIO
|
BuildRequires: OpenImageIO
|
||||||
BuildRequires: bison
|
BuildRequires: bison
|
||||||
@ -41,6 +45,7 @@ BuildRequires: gcc-c++
|
|||||||
BuildRequires: libboost_filesystem-devel
|
BuildRequires: libboost_filesystem-devel
|
||||||
BuildRequires: libboost_system-devel
|
BuildRequires: libboost_system-devel
|
||||||
BuildRequires: libboost_thread-devel
|
BuildRequires: libboost_thread-devel
|
||||||
|
BuildRequires: partio-devel
|
||||||
BuildRequires: pkg-config
|
BuildRequires: pkg-config
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
BuildRequires: python3-pybind11-devel
|
BuildRequires: python3-pybind11-devel
|
||||||
|
Loading…
Reference in New Issue
Block a user