From 7c57ea3dd8b9382e95f5e491f3b6cc631f74c6c0 Mon Sep 17 00:00:00 2001 From: Tom Cowland Date: Sat, 2 Mar 2024 18:07:24 +0000 Subject: [PATCH 1/5] Embree : Update to version 4.3.1 Fixes compilation issues on aarch64. --- Changes.md | 2 +- Embree/config.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Changes.md b/Changes.md index 89a9f47f2b..607732ab90 100644 --- a/Changes.md +++ b/Changes.md @@ -1,7 +1,7 @@ 8.0.0 alpha x (relative to 8.0.0 alpha 8) ------------- - +- Embree : Updated to version 4.3.1. 8.0.0 alpha 8 (relative to 8.0.0 alpha 7) ------------- diff --git a/Embree/config.py b/Embree/config.py index 438a7c5401..2b06a20759 100644 --- a/Embree/config.py +++ b/Embree/config.py @@ -2,7 +2,7 @@ "downloads" : [ - "https://github.com/embree/embree/archive/v4.3.0.tar.gz" + "https://github.com/embree/embree/archive/v4.3.1.tar.gz" ], From 3eb6ecc8a2ffd3f6960a997ffe15365b2e881fd3 Mon Sep 17 00:00:00 2001 From: Tom Cowland Date: Sat, 2 Mar 2024 18:11:04 +0000 Subject: [PATCH 2/5] OpenImageIO : Update to 2.5.9.0 Fixes aarch64 compilation issues --- Changes.md | 1 + OpenImageIO/config.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index 607732ab90..ab4efc271c 100644 --- a/Changes.md +++ b/Changes.md @@ -1,6 +1,7 @@ 8.0.0 alpha x (relative to 8.0.0 alpha 8) ------------- +- OpenImageIO : Updated to version 2.5.9.0. - Embree : Updated to version 4.3.1. 8.0.0 alpha 8 (relative to 8.0.0 alpha 7) diff --git a/OpenImageIO/config.py b/OpenImageIO/config.py index 5b331dbe2c..19310c3fdf 100644 --- a/OpenImageIO/config.py +++ b/OpenImageIO/config.py @@ -2,7 +2,7 @@ "downloads" : [ - "https://github.com/OpenImageIO/oiio/archive/refs/tags/v2.5.8.0.tar.gz" + "https://github.com/OpenImageIO/oiio/archive/refs/tags/v2.5.9.0.tar.gz" ], From 7caf69a7cb4c00f9d1f3d57f6385c74271821a78 Mon Sep 17 00:00:00 2001 From: Tom Cowland Date: Sat, 2 Mar 2024 23:44:18 +0000 Subject: [PATCH 3/5] Build : Allow arch specific overrides Allows build setting to be modified in an arch specific way. This can be useful on aarch64 where the required versions of dependencies may not build correctly without additional settings, or even be supported at all. (Discovered building on aarch64 on Alma 9, where OpenPGL only supports aarch64 in 0.6.0, which includes breaking changes that are not compatible with Cycles. --- Changes.md | 1 + build.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index ab4efc271c..fc6cd7c0f2 100644 --- a/Changes.md +++ b/Changes.md @@ -1,6 +1,7 @@ 8.0.0 alpha x (relative to 8.0.0 alpha 8) ------------- +- Build : Added support for architecture-specific config overrides. - OpenImageIO : Updated to version 2.5.9.0. - Embree : Updated to version 4.3.1. diff --git a/build.py b/build.py index 10243759e7..a20e8df5e8 100755 --- a/build.py +++ b/build.py @@ -7,6 +7,7 @@ import json import os import operator +import platform import multiprocessing import subprocess import shutil @@ -64,7 +65,8 @@ Configs may specify platform-specific overrides in a dictionary named "platform:macos" or "platform:linux". Where a config setting is a dictionary, overrides are merged in via `dict.update()`, otherwise they completely -replace the original value. +replace the original value. Architecture-specific overrides can be +provided with "arch:" e.g. "arch:aarch64". ### Variants @@ -208,6 +210,7 @@ def __loadConfigs( variables, variants ) : for variantProject, variant in variants.items() : __applyConfigOverrides( config, "variant:{}:{}".format( variantProject, variant ) ) __applyConfigOverrides( config, "platform:macos" if sys.platform == "darwin" else "platform:linux" ) + __applyConfigOverrides( config, "arch:{}".format( platform.machine() ) ) if config.get( "enabled", True ) : configs[project] = config From 0697c508142300b0886e2f5687d1ad589c150ff0 Mon Sep 17 00:00:00 2001 From: Tom Cowland Date: Sat, 2 Mar 2024 23:45:53 +0000 Subject: [PATCH 4/5] Cycles : Disable OpenPGL on aarch64 aarch64 is only supported in OpenPGL 0.6.0, Cycles 4.0.2 (latest at the time) uses the 0.5.0 API, so needs updating before it is compatible with the newer PGL library. In the interrim, disable Path Guiding/OpenPGL for Cycles on aarch64. --- Changes.md | 1 + Cycles/config.py | 21 +++++++++++++++++++-- OpenPGL/config.py | 8 ++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Changes.md b/Changes.md index fc6cd7c0f2..cbce7fb31a 100644 --- a/Changes.md +++ b/Changes.md @@ -1,6 +1,7 @@ 8.0.0 alpha x (relative to 8.0.0 alpha 8) ------------- +- Cycles : Disabled path guiding on `aarch64` pending OpenPGL update. - Build : Added support for architecture-specific config overrides. - OpenImageIO : Updated to version 2.5.9.0. - Embree : Updated to version 4.3.1. diff --git a/Cycles/config.py b/Cycles/config.py index 989815f09a..d27285317f 100644 --- a/Cycles/config.py +++ b/Cycles/config.py @@ -21,7 +21,7 @@ " -D CMAKE_PREFIX_PATH={buildDir}" " -D CMAKE_BUILD_TYPE=Release" " -D WITH_CYCLES_OPENIMAGEDENOISE=OFF" - " -D WITH_CYCLES_PATH_GUIDING=ON" + " -D WITH_CYCLES_PATH_GUIDING={pathGuiding}" " -D WITH_CYCLES_CUDA_BINARIES=ON" " -D WITH_CYCLES_DEVICE_CUDA=ON" " -D WITH_CYCLES_DEVICE_HIP=OFF" @@ -41,7 +41,24 @@ ], - "manifest" : [ + "variables" : { + + "pathGuiding" : "ON", + + }, + + # OpenPGL 0.5 doesn't support aarch64, 0.6 does, but has API breaks + "arch:aarch64" : { + + "variables" : { + "pathGuiding" : "OFF", + }, + + "dependencies" : [ "Boost", "OpenJPEG", "OpenImageIO", "TBB", "Alembic", "Embree", "OpenColorIO", "OpenVDB", "OpenShadingLanguage", "OpenSubdiv", "LibWebP" ], + + }, + + "manifest" : [ "cycles", diff --git a/OpenPGL/config.py b/OpenPGL/config.py index b368418ad0..14e02c6ca7 100644 --- a/OpenPGL/config.py +++ b/OpenPGL/config.py @@ -34,4 +34,12 @@ ], + # OpenPGL 0.5 doesn't support aarch64, 0.6 does, but has API breaks + # that aren't compatible with Cycles (currently the only consumer). + "arch:aarch64" : { + + "enabled": False + + } + } From 3288d6fe6dce1080673dcb7a91f52e5709972ceb Mon Sep 17 00:00:00 2001 From: Tom Cowland Date: Sat, 2 Mar 2024 23:49:29 +0000 Subject: [PATCH 5/5] OpenShadingLanguage : Disable USE_BATCHED on aarch64 This OSL version doesn't doesnt support batched ops on aarch64 yet - incorrect -march mapping. --- Changes.md | 1 + OpenShadingLanguage/config.py | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Changes.md b/Changes.md index cbce7fb31a..452b3cc287 100644 --- a/Changes.md +++ b/Changes.md @@ -1,6 +1,7 @@ 8.0.0 alpha x (relative to 8.0.0 alpha 8) ------------- +- OpenShadingLanguage : Disabled `USE_BATCHED` on `aarch64`. - Cycles : Disabled path guiding on `aarch64` pending OpenPGL update. - Build : Added support for architecture-specific config overrides. - OpenImageIO : Updated to version 2.5.9.0. diff --git a/OpenShadingLanguage/config.py b/OpenShadingLanguage/config.py index a94cdaba1b..7aa9804e6b 100644 --- a/OpenShadingLanguage/config.py +++ b/OpenShadingLanguage/config.py @@ -69,6 +69,14 @@ "useBatched" : "0", } - } + }, + + "arch:aarch64" : { + + "variables" : { + "useBatched" : "0", + } + + }, }