Compare commits
506 Commits
temp-colle
...
temp-gpenc
Author | SHA1 | Date | |
---|---|---|---|
aa9b976e9f | |||
bbb1d3e5e7 | |||
0a7308a0f1 | |||
6a14ca18d0 | |||
c3391d537b | |||
c73ae711bf | |||
32f58c0a92 | |||
![]() |
1d71f82033 | ||
77c4d3154b | |||
09faf8a449 | |||
![]() |
e1b3d91127 | ||
32ec0521c5 | |||
82ba205646 | |||
c047042adf | |||
0d945fe20e | |||
dc609d9f1f | |||
f12236d1e3 | |||
1f3be45f1f | |||
871375f222 | |||
8b151982fe | |||
642ff82f74 | |||
3c1fb9aea1 | |||
fddcdcc20c | |||
9d1380e0a9 | |||
452865c80d | |||
8f439bdc2d | |||
2257a9bfb1 | |||
4eb9322eda | |||
3e71220efc | |||
410b87ca78 | |||
1140e001a0 | |||
c842a5a187 | |||
95631c94c4 | |||
84d8698488 | |||
52bd198153 | |||
8ff71acd84 | |||
8473b5a592 | |||
79d8610d04 | |||
403fc9a3f1 | |||
8f4e52b7e0 | |||
9ea82ce653 | |||
7b845fb984 | |||
e555ede626 | |||
719332d120 | |||
688b408bbb | |||
888fb0b395 | |||
ff4f14b21a | |||
b2db324f60 | |||
cad897de16 | |||
ffc0db1994 | |||
94930da29b | |||
e031a45d60 | |||
129197f20d | |||
186f16e84c | |||
74140d41b1 | |||
671c3e1fa4 | |||
37ca6e4fd1 | |||
25c6444bad | |||
0697631929 | |||
c29c61f840 | |||
f4e97bd67d | |||
a8865f3402 | |||
3852094b35 | |||
![]() |
28e952dacd | ||
6ef6778215 | |||
8b29d6cd75 | |||
c6725dc507 | |||
db3bf36770 | |||
5060f26f50 | |||
455d195d55 | |||
4ec5a8cbc2 | |||
e673f3ba24 | |||
38086dcfdc | |||
037b771e1a | |||
412e7d3771 | |||
60043a6158 | |||
b3e1540c50 | |||
ae3073323e | |||
4a313b8252 | |||
23dafa4ad6 | |||
59af0fba9d | |||
bba6d28942 | |||
4b200b491c | |||
10131a6f62 | |||
85ce488298 | |||
943d574185 | |||
bb86007018 | |||
4b2458b457 | |||
![]() |
72505da862 | ||
d4f0ccb6b4 | |||
7a7055c186 | |||
d6b2f4ad8e | |||
![]() |
11a705c2d0 | ||
624c11d69f | |||
3d34b8c901 | |||
a4ea684bc8 | |||
ecda9483f1 | |||
eb8155ebcd | |||
e36db7018d | |||
c5dde1c345 | |||
3d72c37f7a | |||
9dfc134c9d | |||
c2a99cb0b6 | |||
1452b44352 | |||
5081de736a | |||
44dd158803 | |||
5401e68a61 | |||
838d20b990 | |||
0e0b3d6e1a | |||
3c39a3affe | |||
dcfe4a302c | |||
2c0c431399 | |||
![]() |
e449bf350c | ||
41c692ee2f | |||
74c293863d | |||
90805c9943 | |||
09b9e1e95e | |||
a16dd407b3 | |||
31c52bc34e | |||
ba8754cf11 | |||
666135c32a | |||
d5ce854fb1 | |||
65e4d169ba | |||
31d43cb0e7 | |||
50c72069b4 | |||
92b2f4d249 | |||
5ba045af7b | |||
ea94d5723f | |||
bb0b04f43a | |||
6377d00a61 | |||
b320597697 | |||
bad55d56bc | |||
a38b98478a | |||
15fe7f3d93 | |||
31746e1baa | |||
07ef428c6c | |||
38c7fd36ff | |||
0fc958a174 | |||
bc8b15f1a5 | |||
c394f510a5 | |||
![]() |
14e4c96b64 | ||
5f7ca5462d | |||
460c9d3d92 | |||
638bf05a23 | |||
7f1e98839a | |||
52664437fb | |||
db43aa7729 | |||
5a90bbf716 | |||
889b3385b5 | |||
cc6f41f8a5 | |||
12f4ac1706 | |||
513dfa179f | |||
f8699881d6 | |||
f66236a827 | |||
518d7dbebb | |||
78a7d5cfcc | |||
bcc2656299 | |||
99e5024e97 | |||
cf98518055 | |||
e6823f32e9 | |||
108b3ee33e | |||
4269559215 | |||
3f91540cef | |||
3136fb886e | |||
d2406ad17d | |||
f17fbf8065 | |||
8b2b5b0b83 | |||
fe863b59db | |||
4d139601ba | |||
afc091c3c4 | |||
ef76a67153 | |||
4d78211070 | |||
409070e0d4 | |||
c3e4fa7404 | |||
5016a8687c | |||
a8ce926eaa | |||
c082b088ab | |||
8bddbc9a94 | |||
6a3af76fbe | |||
c39eb09ae5 | |||
![]() |
0e6f2d9fe0 | ||
c2e36c09b9 | |||
2b9994257f | |||
511ae22264 | |||
8f7ab1bf46 | |||
fe5cbd5eea | |||
5042f895ce | |||
06abc9509d | |||
8c6d4aa103 | |||
da365bc2ad | |||
77749eff87 | |||
486e281644 | |||
117e17fb22 | |||
9bd38750b3 | |||
5392f220f0 | |||
d66f24cfe3 | |||
5d77c3a6a5 | |||
d1d2f002c7 | |||
78fe6d7ab1 | |||
2c9fe719e6 | |||
![]() |
f9113b7eb6 | ||
105c8d59cd | |||
d799388b02 | |||
bb16a3af7f | |||
af761021a3 | |||
48d8aa7484 | |||
586d9214b7 | |||
18e0f741c8 | |||
d447cf9704 | |||
00533de7d5 | |||
d488a87d70 | |||
b544d989d1 | |||
454dd3f7f0 | |||
![]() |
7c3cd63f95 | ||
c967bdcbb1 | |||
a035861d9d | |||
8712f952e0 | |||
28de4468d9 | |||
2625c39ce7 | |||
e75be000e3 | |||
1e7776907c | |||
0385e4df3c | |||
1840f44666 | |||
bc7de854c9 | |||
414d5429fe | |||
ff89c1793d | |||
4b14b33ea8 | |||
633d314b75 | |||
16acd7e473 | |||
2186d58d1c | |||
49cd04044a | |||
c03838dbc8 | |||
4046d9a384 | |||
e844f706fb | |||
9fe9705bc0 | |||
14c218b3fd | |||
4a87f8107e | |||
9d18874083 | |||
7da85ea35a | |||
601995c3b8 | |||
7522c05076 | |||
ffdb41a8bc | |||
fb424db2b7 | |||
2240ca3e7b | |||
78b13ab3db | |||
c4f9e4afab | |||
7e3e4751b5 | |||
9c717dcff8 | |||
3e292404d2 | |||
059d963192 | |||
dd08b490af | |||
71079d49e2 | |||
bf0ae05d25 | |||
c1768507a9 | |||
97414fb484 | |||
5d5e0f1b0e | |||
e2d06eb68a | |||
954b834053 | |||
583ae0caaa | |||
4e9a8109b2 | |||
a67876103a | |||
5379587772 | |||
63675b8d70 | |||
8dd7b5b26b | |||
4c6e07230f | |||
b400717326 | |||
a8731718a1 | |||
9fc000cc6f | |||
0584a88046 | |||
365cce4750 | |||
216e8d887b | |||
0ee9282b5c | |||
b27c831e0c | |||
b7c5ce8c2d | |||
93afc50ac3 | |||
da36efdf48 | |||
6172258250 | |||
4130cad489 | |||
763ad17769 | |||
ca0f4f8c5c | |||
b70bbfadfe | |||
afec1cd333 | |||
21fdb0d92b | |||
588db6152a | |||
e16cea019e | |||
a7aa0f1a0c | |||
9f56021975 | |||
8bb211a771 | |||
e54ea0f90e | |||
23c05a916c | |||
![]() |
59a0b49c10 | ||
ea571ddc29 | |||
04eab0fd01 | |||
e7a6917617 | |||
ebe2319692 | |||
56d1f0772d | |||
9c20eda0ad | |||
116d7b0042 | |||
2c108d5503 | |||
048f1a1b8b | |||
2c3ee8854f | |||
0cfac5b043 | |||
305b92e05f | |||
![]() |
4776a74bf7 | ||
ec60c8abe7 | |||
3ccec47841 | |||
d39f2eed98 | |||
e8c4411035 | |||
3225bc2e7f | |||
f0ebf696cb | |||
899d4ddbd0 | |||
26f181c6b7 | |||
4bfb99e4d8 | |||
5814e35af1 | |||
a0bbd65d57 | |||
dc09cc13ea | |||
6515177981 | |||
ff8c0f062a | |||
97f4e076c7 | |||
bd1ff201b1 | |||
8c361d6f66 | |||
5e0e5b1341 | |||
24fd8f729a | |||
4b30ee773c | |||
3bac6f17f1 | |||
8415bc9c80 | |||
84825e4ed2 | |||
58e25f11ae | |||
9d710374bd | |||
![]() |
f017fdecef | ||
66a166d236 | |||
7aaebf31df | |||
7f2cd2d969 | |||
fd7a3e2622 | |||
0d7065504e | |||
21deba56aa | |||
debacbfe5c | |||
303dd263e2 | |||
a30128a3c1 | |||
c81bc09876 | |||
8a43bfd8fd | |||
40afb8ae6a | |||
bd9d68e4dc | |||
ff157d7eba | |||
90686ff6f4 | |||
b0eff51fb7 | |||
1e1b9eef1b | |||
d392e9afea | |||
f24dfdcd3c | |||
c58d6b30ad | |||
e2a93e9c7c | |||
3915f5300a | |||
3411a96e74 | |||
e3075f3cf7 | |||
21a1c332b0 | |||
09e3ea49db | |||
c67975c6bb | |||
1a11353d34 | |||
ba6f25dd1b | |||
bf8d4a9bc6 | |||
d046c8c9d7 | |||
193b456d2d | |||
![]() |
c3d0ba3b33 | ||
c14b113746 | |||
a803dbe7ed | |||
![]() |
e6902d19a0 | ||
053fc35b01 | |||
63aec82e8a | |||
bad7340811 | |||
96c085d4af | |||
3d878cd0df | |||
ceb0e7fcea | |||
d763e294fc | |||
151b653bd5 | |||
5bfce9a822 | |||
86bb79e756 | |||
2943997d2a | |||
d816bae7bf | |||
5d67fb0f18 | |||
425e7ca342 | |||
6165395927 | |||
![]() |
3655eb7ff0 | ||
ead3fc4a07 | |||
3ac2f15a04 | |||
f0fba1a2d8 | |||
ec638d3108 | |||
89525fae59 | |||
d4b8e9b69f | |||
b51763a773 | |||
2180e6fc9f | |||
e5782df4ab | |||
358155a8da | |||
a450a2f2b2 | |||
4163c63def | |||
4d185921f6 | |||
96fa5e1e84 | |||
760a6aa1f5 | |||
30d9a6245f | |||
da4bd24c3e | |||
42f37106c5 | |||
e4c5a46c12 | |||
c9f1378863 | |||
c247562b07 | |||
ab28abcb6b | |||
ecda118be4 | |||
8aca40652a | |||
8115d30dca | |||
be32882e1c | |||
d57352b114 | |||
91e85230f9 | |||
91ecf47b2c | |||
a2fcfcabd7 | |||
7abd79398d | |||
5c1d2c5a9d | |||
619ce8392b | |||
489260198e | |||
c2fe387244 | |||
![]() |
2006c3ed10 | ||
![]() |
aed301704a | ||
e3ab75d17d | |||
e47bf05e85 | |||
1edebb794b | |||
c7051192e2 | |||
85875455b9 | |||
161aa5e0d0 | |||
e8291f4504 | |||
23ea72f051 | |||
603a534f09 | |||
728451f01a | |||
![]() |
d3b47fa842 | ||
694481095b | |||
67e053b1fb | |||
3150277d0c | |||
660c47596e | |||
1111af5cb4 | |||
0a35afbf86 | |||
3eaf2b7fc6 | |||
baa9a00f5f | |||
390cf2fe75 | |||
69e7274d4f | |||
e96ad822b3 | |||
![]() |
a6b83617e9 | ||
e5425b566d | |||
![]() |
db40b62252 | ||
11bb38e887 | |||
89effac57e | |||
3e35beae61 | |||
94ce176e75 | |||
9f6a045e23 | |||
1d1cade9a9 | |||
2f3f208901 | |||
6ad04a031c | |||
25e84334f7 | |||
![]() |
4c320e2639 | ||
0c50f9c4aa | |||
b898330c37 | |||
ebe9804cfa | |||
b7ea79fde7 | |||
c207571d44 | |||
010c10febe | |||
bc06fcca47 | |||
7a005e089d | |||
2111fab88a | |||
6c4b72b135 | |||
![]() |
a90b0eb772 | ||
e3de5af135 | |||
9e77f5f17f | |||
4112f0241b | |||
7437b6b4bc | |||
![]() |
f940ecde7a | ||
![]() |
84d70de25a | ||
58324f0c86 | |||
5d53e6b3c1 | |||
06081d48e3 | |||
b2ab9977bf | |||
695614ad3b | |||
e4e80058c8 | |||
1fbd300adb | |||
e8eed82bd5 | |||
98aa7276c8 | |||
1703a8fb33 | |||
6beeba1ef5 | |||
a5d3b648e3 | |||
6f190c669f | |||
![]() |
b2627dff49 | ||
afd30e5e3a | |||
d292d635ea | |||
1a9480cf25 | |||
cbe1c1474b | |||
f95071028c | |||
4767a8eb4a | |||
0dd98c54b9 | |||
910b579aff | |||
f1dbbbbd45 | |||
101819bdf9 | |||
62b29f71b9 | |||
3d2dc8c897 | |||
3ebd01675e | |||
9b24e5d54f | |||
535662cd0d | |||
dc6281d87f | |||
ad87f81e38 | |||
8965118eec | |||
71e26f6eff | |||
1e286d7f8f | |||
2ec1e38b91 |
@@ -177,8 +177,11 @@ option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
|
|||||||
|
|
||||||
option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
|
option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
|
||||||
option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
|
option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
|
||||||
mark_as_advanced(WITH_PYTHON) # don't want people disabling this unless they really know what they are doing.
|
# Don't want people disabling this unless they really know what they are doing.
|
||||||
mark_as_advanced(WITH_PYTHON_SECURITY) # some distributions see this as a security issue, rather than have them patch it, make a build option.
|
mark_as_advanced(WITH_PYTHON)
|
||||||
|
# Some distributions see this as a security issue, rather than have them patch it,
|
||||||
|
# make a build option.
|
||||||
|
mark_as_advanced(WITH_PYTHON_SECURITY)
|
||||||
|
|
||||||
option(WITH_PYTHON_SAFETY "Enable internal API error checking to track invalid data to prevent crash on access (at the expense of some efficiency, only enable for development)." OFF)
|
option(WITH_PYTHON_SAFETY "Enable internal API error checking to track invalid data to prevent crash on access (at the expense of some efficiency, only enable for development)." OFF)
|
||||||
mark_as_advanced(WITH_PYTHON_SAFETY)
|
mark_as_advanced(WITH_PYTHON_SAFETY)
|
||||||
@@ -336,11 +339,9 @@ if(APPLE)
|
|||||||
else()
|
else()
|
||||||
set(WITH_COREAUDIO OFF)
|
set(WITH_COREAUDIO OFF)
|
||||||
endif()
|
endif()
|
||||||
if(NOT WIN32)
|
|
||||||
option(WITH_JACK "Enable JACK Support (http://www.jackaudio.org)" ON)
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
|
option(WITH_JACK "Enable JACK Support (http://www.jackaudio.org)" ON)
|
||||||
option(WITH_JACK_DYNLOAD "Enable runtime dynamic JACK libraries loading" OFF)
|
option(WITH_JACK_DYNLOAD "Enable runtime dynamic JACK libraries loading" OFF)
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
set(WITH_JACK OFF)
|
set(WITH_JACK OFF)
|
||||||
endif()
|
endif()
|
||||||
@@ -489,13 +490,12 @@ endif()
|
|||||||
if(NOT APPLE)
|
if(NOT APPLE)
|
||||||
option(WITH_CYCLES_DEVICE_ONEAPI "Enable Cycles oneAPI compute support" OFF)
|
option(WITH_CYCLES_DEVICE_ONEAPI "Enable Cycles oneAPI compute support" OFF)
|
||||||
option(WITH_CYCLES_ONEAPI_BINARIES "Enable Ahead-Of-Time compilation for Cycles oneAPI device" OFF)
|
option(WITH_CYCLES_ONEAPI_BINARIES "Enable Ahead-Of-Time compilation for Cycles oneAPI device" OFF)
|
||||||
option(WITH_CYCLES_ONEAPI_SYCL_HOST_ENABLED "Enable use of SYCL host (CPU) device execution by oneAPI implementation. This option is for debugging purposes and impacts GPU execution." OFF)
|
|
||||||
|
|
||||||
# https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/compilation/ahead-of-time-compilation.html
|
# https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/compilation/ahead-of-time-compilation.html
|
||||||
set(CYCLES_ONEAPI_SPIR64_GEN_DEVICES "dg2" CACHE STRING "oneAPI Intel GPU architectures to build binaries for")
|
# acm-g10 is the target for the first Intel Arc Alchemist GPUs.
|
||||||
|
set(CYCLES_ONEAPI_SPIR64_GEN_DEVICES "acm-g10" CACHE STRING "oneAPI Intel GPU architectures to build binaries for")
|
||||||
set(CYCLES_ONEAPI_SYCL_TARGETS spir64 spir64_gen CACHE STRING "oneAPI targets to build AOT binaries for")
|
set(CYCLES_ONEAPI_SYCL_TARGETS spir64 spir64_gen CACHE STRING "oneAPI targets to build AOT binaries for")
|
||||||
|
|
||||||
mark_as_advanced(WITH_CYCLES_ONEAPI_SYCL_HOST_ENABLED)
|
|
||||||
mark_as_advanced(CYCLES_ONEAPI_SPIR64_GEN_DEVICES)
|
mark_as_advanced(CYCLES_ONEAPI_SPIR64_GEN_DEVICES)
|
||||||
mark_as_advanced(CYCLES_ONEAPI_SYCL_TARGETS)
|
mark_as_advanced(CYCLES_ONEAPI_SYCL_TARGETS)
|
||||||
endif()
|
endif()
|
||||||
@@ -553,6 +553,7 @@ endif()
|
|||||||
option(WITH_GTESTS "Enable GTest unit testing" OFF)
|
option(WITH_GTESTS "Enable GTest unit testing" OFF)
|
||||||
option(WITH_OPENGL_RENDER_TESTS "Enable OpenGL render related unit testing (Experimental)" OFF)
|
option(WITH_OPENGL_RENDER_TESTS "Enable OpenGL render related unit testing (Experimental)" OFF)
|
||||||
option(WITH_OPENGL_DRAW_TESTS "Enable OpenGL UI drawing related unit testing (Experimental)" OFF)
|
option(WITH_OPENGL_DRAW_TESTS "Enable OpenGL UI drawing related unit testing (Experimental)" OFF)
|
||||||
|
# NOTE: All callers of this must add `TEST_PYTHON_EXE_EXTRA_ARGS` before any other arguments.
|
||||||
set(TEST_PYTHON_EXE "" CACHE PATH "Python executable to run unit tests")
|
set(TEST_PYTHON_EXE "" CACHE PATH "Python executable to run unit tests")
|
||||||
mark_as_advanced(TEST_PYTHON_EXE)
|
mark_as_advanced(TEST_PYTHON_EXE)
|
||||||
|
|
||||||
@@ -572,6 +573,12 @@ mark_as_advanced(
|
|||||||
WITH_GPU_BUILDTIME_SHADER_BUILDER
|
WITH_GPU_BUILDTIME_SHADER_BUILDER
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Vulkan
|
||||||
|
option(WITH_VULKAN_BACKEND "Enable Vulkan as graphics backend (only for development)" OFF)
|
||||||
|
mark_as_advanced(
|
||||||
|
WITH_VULKAN_BACKEND
|
||||||
|
)
|
||||||
|
|
||||||
# Metal
|
# Metal
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
@@ -780,6 +787,8 @@ endif()
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Check for Conflicting/Unsupported Configurations
|
# Check for Conflicting/Unsupported Configurations
|
||||||
|
|
||||||
|
option(WITH_STRICT_BUILD_OPTIONS "When requirements for a build option are not met, error instead of disabling the option" OFF)
|
||||||
|
|
||||||
if(NOT WITH_BLENDER AND NOT WITH_CYCLES_STANDALONE AND NOT WITH_CYCLES_HYDRA_RENDER_DELEGATE)
|
if(NOT WITH_BLENDER AND NOT WITH_CYCLES_STANDALONE AND NOT WITH_CYCLES_HYDRA_RENDER_DELEGATE)
|
||||||
message(FATAL_ERROR
|
message(FATAL_ERROR
|
||||||
"At least one of WITH_BLENDER or WITH_CYCLES_STANDALONE "
|
"At least one of WITH_BLENDER or WITH_CYCLES_STANDALONE "
|
||||||
@@ -895,10 +904,7 @@ endif()
|
|||||||
|
|
||||||
if(WITH_BUILDINFO)
|
if(WITH_BUILDINFO)
|
||||||
find_package(Git)
|
find_package(Git)
|
||||||
if(NOT GIT_FOUND)
|
set_and_warn_library_found("Git" GIT_FOUND WITH_BUILDINFO)
|
||||||
message(WARNING "Git was not found, disabling WITH_BUILDINFO")
|
|
||||||
set(WITH_BUILDINFO OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_AUDASPACE)
|
if(WITH_AUDASPACE)
|
||||||
@@ -938,9 +944,10 @@ if(WITH_INTERNATIONAL)
|
|||||||
WARNING
|
WARNING
|
||||||
"Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
|
"Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
|
||||||
"This is a 'git submodule', which are known not to work with bridges to other version "
|
"This is a 'git submodule', which are known not to work with bridges to other version "
|
||||||
"control systems, disabling 'WITH_INTERNATIONAL'."
|
"control systems."
|
||||||
)
|
)
|
||||||
set(WITH_INTERNATIONAL OFF)
|
set(TRANSLATIONS_FOUND OFF)
|
||||||
|
set_and_warn_library_found("Translations" TRANSLATIONS_FOUND WITH_INTERNATIONAL)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -1225,6 +1232,13 @@ if(WITH_OPENGL)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Configure Vulkan.
|
||||||
|
|
||||||
|
if(WITH_VULKAN_BACKEND)
|
||||||
|
add_definitions(-DWITH_VULKAN_BACKEND)
|
||||||
|
endif()
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Configure Metal
|
# Configure Metal
|
||||||
|
|
||||||
@@ -1245,6 +1259,8 @@ if(WITH_OPENMP)
|
|||||||
find_package(OpenMP)
|
find_package(OpenMP)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set_and_warn_library_found("OpenMP" OPENMP_FOUND WITH_OPENMP)
|
||||||
|
|
||||||
if(OPENMP_FOUND)
|
if(OPENMP_FOUND)
|
||||||
if(NOT WITH_OPENMP_STATIC)
|
if(NOT WITH_OPENMP_STATIC)
|
||||||
string(APPEND CMAKE_C_FLAGS " ${OpenMP_C_FLAGS}")
|
string(APPEND CMAKE_C_FLAGS " ${OpenMP_C_FLAGS}")
|
||||||
@@ -1260,9 +1276,6 @@ if(WITH_OPENMP)
|
|||||||
|
|
||||||
find_library_static(OpenMP_LIBRARIES gomp ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
|
find_library_static(OpenMP_LIBRARIES gomp ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
|
||||||
endif()
|
endif()
|
||||||
else()
|
|
||||||
message(STATUS "OpenMP not found, disabling WITH_OPENMP")
|
|
||||||
set(WITH_OPENMP OFF)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
mark_as_advanced(
|
mark_as_advanced(
|
||||||
@@ -1277,10 +1290,7 @@ endif()
|
|||||||
|
|
||||||
if(WITH_BULLET AND WITH_SYSTEM_BULLET)
|
if(WITH_BULLET AND WITH_SYSTEM_BULLET)
|
||||||
find_package(Bullet)
|
find_package(Bullet)
|
||||||
if(NOT BULLET_FOUND)
|
set_and_warn_library_found("Bullet" BULLET_FOUND WITH_BULLET)
|
||||||
message(STATUS "Bullet not found, disabling WITH_BULLET")
|
|
||||||
set(WITH_BULLET OFF)
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
|
set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
|
||||||
# set(BULLET_LIBRARIES "")
|
# set(BULLET_LIBRARIES "")
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
####################################################################################################
|
##################################################################################################
|
||||||
#
|
#
|
||||||
# This is a build system used by platform maintainers to build library dependencies on
|
# This is a build system used by platform maintainers to build library dependencies on
|
||||||
# Windows, macOS and Linux.
|
# Windows, macOS and Linux.
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
# Install compiler cmake autoconf automake libtool yasm tcl
|
# Install compiler cmake autoconf automake libtool yasm tcl
|
||||||
# Run "make deps" from main Blender directory
|
# Run "make deps" from main Blender directory
|
||||||
#
|
#
|
||||||
####################################################################################################
|
##################################################################################################
|
||||||
|
|
||||||
project("BlenderDependencies")
|
project("BlenderDependencies")
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
@@ -30,7 +30,8 @@ cmake_minimum_required(VERSION 3.5)
|
|||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
include(cmake/check_software.cmake)
|
include(cmake/check_software.cmake)
|
||||||
include(cmake/options.cmake)
|
include(cmake/options.cmake)
|
||||||
# versions.cmake needs to be included after options.cmake due to the BLENDER_PLATFORM_ARM variable being needed.
|
# `versions.cmake` needs to be included after `options.cmake`
|
||||||
|
# due to the `BLENDER_PLATFORM_ARM` variable being needed.
|
||||||
include(cmake/versions.cmake)
|
include(cmake/versions.cmake)
|
||||||
include(cmake/boost_build_options.cmake)
|
include(cmake/boost_build_options.cmake)
|
||||||
include(cmake/download.cmake)
|
include(cmake/download.cmake)
|
||||||
@@ -88,7 +89,7 @@ include(cmake/package_python.cmake)
|
|||||||
include(cmake/usd.cmake)
|
include(cmake/usd.cmake)
|
||||||
include(cmake/potrace.cmake)
|
include(cmake/potrace.cmake)
|
||||||
include(cmake/haru.cmake)
|
include(cmake/haru.cmake)
|
||||||
# Boost needs to be included after python.cmake due to the PYTHON_BINARY variable being needed.
|
# Boost needs to be included after `python.cmake` due to the PYTHON_BINARY variable being needed.
|
||||||
include(cmake/boost.cmake)
|
include(cmake/boost.cmake)
|
||||||
include(cmake/pugixml.cmake)
|
include(cmake/pugixml.cmake)
|
||||||
include(cmake/ispc.cmake)
|
include(cmake/ispc.cmake)
|
||||||
@@ -97,6 +98,8 @@ include(cmake/embree.cmake)
|
|||||||
include(cmake/openpgl.cmake)
|
include(cmake/openpgl.cmake)
|
||||||
include(cmake/fmt.cmake)
|
include(cmake/fmt.cmake)
|
||||||
include(cmake/robinmap.cmake)
|
include(cmake/robinmap.cmake)
|
||||||
|
include(cmake/xml2.cmake)
|
||||||
|
|
||||||
if(NOT APPLE)
|
if(NOT APPLE)
|
||||||
include(cmake/xr_openxr.cmake)
|
include(cmake/xr_openxr.cmake)
|
||||||
if(NOT WIN32 OR BUILD_MODE STREQUAL Release)
|
if(NOT WIN32 OR BUILD_MODE STREQUAL Release)
|
||||||
@@ -149,7 +152,6 @@ if(NOT WIN32 OR ENABLE_MINGW64)
|
|||||||
endif()
|
endif()
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
include(cmake/flac.cmake)
|
include(cmake/flac.cmake)
|
||||||
include(cmake/xml2.cmake)
|
|
||||||
if(NOT APPLE)
|
if(NOT APPLE)
|
||||||
include(cmake/spnav.cmake)
|
include(cmake/spnav.cmake)
|
||||||
include(cmake/jemalloc.cmake)
|
include(cmake/jemalloc.cmake)
|
||||||
|
@@ -8,11 +8,6 @@ if(WIN32)
|
|||||||
# building with mingw, it'll have an unhappy time with that and
|
# building with mingw, it'll have an unhappy time with that and
|
||||||
# we need to clear them out.
|
# we need to clear them out.
|
||||||
set(AOM_CMAKE_FLAGS )
|
set(AOM_CMAKE_FLAGS )
|
||||||
# CMake will correctly identify phreads being available, however
|
|
||||||
# we do not want to use them, as that gains a dependency on
|
|
||||||
# libpthreadswin.dll which we do not want. when pthreads is not
|
|
||||||
# available oam will use a pthreads emulation layer using win32 threads
|
|
||||||
set(AOM_EXTRA_ARGS_WIN32 -DCMAKE_HAVE_PTHREAD_H=OFF)
|
|
||||||
else()
|
else()
|
||||||
set(AOM_GENERATOR "Unix Makefiles")
|
set(AOM_GENERATOR "Unix Makefiles")
|
||||||
set(AOM_CMAKE_FLAGS ${DEFAULT_CMAKE_FLAGS})
|
set(AOM_CMAKE_FLAGS ${DEFAULT_CMAKE_FLAGS})
|
||||||
@@ -36,6 +31,7 @@ ExternalProject_Add(external_aom
|
|||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
URL_HASH ${AOM_HASH_TYPE}=${AOM_HASH}
|
URL_HASH ${AOM_HASH_TYPE}=${AOM_HASH}
|
||||||
PREFIX ${BUILD_DIR}/aom
|
PREFIX ${BUILD_DIR}/aom
|
||||||
|
PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/aom/src/external_aom < ${PATCH_DIR}/aom.diff
|
||||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
|
CONFIGURE_COMMAND ${CONFIGURE_ENV} &&
|
||||||
cd ${BUILD_DIR}/aom/src/external_aom-build/ &&
|
cd ${BUILD_DIR}/aom/src/external_aom-build/ &&
|
||||||
${CMAKE_COMMAND} -G "${AOM_GENERATOR}" -DCMAKE_INSTALL_PREFIX=${LIBDIR}/aom ${AOM_CMAKE_FLAGS} ${AOM_EXTRA_ARGS} ${BUILD_DIR}/aom/src/external_aom/
|
${CMAKE_COMMAND} -G "${AOM_GENERATOR}" -DCMAKE_INSTALL_PREFIX=${LIBDIR}/aom ${AOM_CMAKE_FLAGS} ${AOM_EXTRA_ARGS} ${BUILD_DIR}/aom/src/external_aom/
|
||||||
|
@@ -27,10 +27,12 @@ get_cmake_property(_variableNames VARIABLES)
|
|||||||
foreach (_variableName ${_variableNames})
|
foreach (_variableName ${_variableNames})
|
||||||
if(_variableName MATCHES "CPE$")
|
if(_variableName MATCHES "CPE$")
|
||||||
string(REPLACE ":" ";" CPE_LIST ${${_variableName}})
|
string(REPLACE ":" ";" CPE_LIST ${${_variableName}})
|
||||||
|
string(REPLACE "_CPE" "_ID" CPE_DEPNAME ${_variableName})
|
||||||
list(GET CPE_LIST 3 CPE_VENDOR)
|
list(GET CPE_LIST 3 CPE_VENDOR)
|
||||||
list(GET CPE_LIST 4 CPE_NAME)
|
list(GET CPE_LIST 4 CPE_NAME)
|
||||||
list(GET CPE_LIST 5 CPE_VERSION)
|
list(GET CPE_LIST 5 CPE_VERSION)
|
||||||
set(SBOMCONTENTS "${SBOMCONTENTS}${CPE_VENDOR},${CPE_NAME},${CPE_VERSION}\n")
|
set(${CPE_DEPNAME} "${CPE_VENDOR},${CPE_NAME},${CPE_VERSION}")
|
||||||
|
set(SBOMCONTENTS "${SBOMCONTENTS}${CPE_VENDOR},${CPE_NAME},${CPE_VERSION},,,\n")
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
configure_file(${CMAKE_SOURCE_DIR}/cmake/cve_check.csv.in ${CMAKE_CURRENT_BINARY_DIR}/cve_check.csv @ONLY)
|
configure_file(${CMAKE_SOURCE_DIR}/cmake/cve_check.csv.in ${CMAKE_CURRENT_BINARY_DIR}/cve_check.csv @ONLY)
|
||||||
|
@@ -1,2 +1,29 @@
|
|||||||
vendor,product,version
|
vendor,product,version,cve_number,remarks,comment
|
||||||
|
@OPENJPEG_ID@,CVE-2016-9675,Ignored,issue in convert command line tool not used by blender
|
||||||
|
@PYTHON_ID@,CVE-2009-2940,Ignored,issue in pygresql not used by blender
|
||||||
|
@PYTHON_ID@,CVE-2020-29396,Ignored,issue in odoo not used by blender
|
||||||
|
@PYTHON_ID@,CVE-2021-32052,Ignored,issue in django not used by blender
|
||||||
|
@PYTHON_ID@,CVE-2009-3720,Ignored,already fixed in libexpat version used
|
||||||
|
@SSL_ID@,CVE-2009-1390,Ignored,issue in mutt not used by blender
|
||||||
|
@SSL_ID@,CVE-2009-3765,Ignored,issue in mutt not used by blender
|
||||||
|
@SSL_ID@,CVE-2009-3766,Ignored,issue in mutt not used by blender
|
||||||
|
@SSL_ID@,CVE-2009-3767,Ignored,issue in ldap not used by blender
|
||||||
|
@SSL_ID@,CVE-2019-0190,Ignored,issue in apache not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-2056,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-2057,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-2058,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-2519,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-2520,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-2521,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-2953,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-34526,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-3570,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-3597,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-3598,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-3599,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-3626,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@TIFF_ID@,CVE-2022-3627,Ignored,issue in tiff command line tool not used by blender
|
||||||
|
@XML2_ID@,CVE-2016-3709,Ignored,not affecting blender and not considered a security issue upstream
|
||||||
|
@GMP_ID@,CVE-2021-43618,Mitigated,patched using upstream commit 561a9c25298e
|
||||||
|
@SQLITE_ID@,CVE-2022-35737,Ignored,only affects SQLITE_ENABLE_STAT4 compile option not used by blender or python
|
||||||
@SBOMCONTENTS@
|
@SBOMCONTENTS@
|
||||||
|
@@ -62,7 +62,7 @@ function(download_source dep)
|
|||||||
# since the actual build of the dep will notify the
|
# since the actual build of the dep will notify the
|
||||||
# platform maintainer if there is a problem with the
|
# platform maintainer if there is a problem with the
|
||||||
# source package and refuse to build.
|
# source package and refuse to build.
|
||||||
if(NOT PACKAGE_USE_UPSTREAM_SOURCES)
|
if(NOT PACKAGE_USE_UPSTREAM_SOURCES OR FORCE_CHECK_HASH)
|
||||||
file(${TARGET_HASH_TYPE} ${TARGET_FILE} LOCAL_HASH)
|
file(${TARGET_HASH_TYPE} ${TARGET_FILE} LOCAL_HASH)
|
||||||
if(NOT ${TARGET_HASH} STREQUAL ${LOCAL_HASH})
|
if(NOT ${TARGET_HASH} STREQUAL ${LOCAL_HASH})
|
||||||
message(FATAL_ERROR "${TARGET_FILE} ${TARGET_HASH_TYPE} mismatch\nExpected\t: ${TARGET_HASH}\nActual\t: ${LOCAL_HASH}")
|
message(FATAL_ERROR "${TARGET_FILE} ${TARGET_HASH_TYPE} mismatch\nExpected\t: ${TARGET_HASH}\nActual\t: ${LOCAL_HASH}")
|
||||||
@@ -114,7 +114,6 @@ download_source(WEBP)
|
|||||||
download_source(SPNAV)
|
download_source(SPNAV)
|
||||||
download_source(JEMALLOC)
|
download_source(JEMALLOC)
|
||||||
download_source(XML2)
|
download_source(XML2)
|
||||||
download_source(TINYXML)
|
|
||||||
download_source(YAMLCPP)
|
download_source(YAMLCPP)
|
||||||
download_source(EXPAT)
|
download_source(EXPAT)
|
||||||
download_source(PUGIXML)
|
download_source(PUGIXML)
|
||||||
|
@@ -80,8 +80,11 @@ ExternalProject_Add(external_dpcpp
|
|||||||
SOURCE_SUBDIR llvm
|
SOURCE_SUBDIR llvm
|
||||||
LIST_SEPARATOR ^^
|
LIST_SEPARATOR ^^
|
||||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/dpcpp ${DEFAULT_CMAKE_FLAGS} ${DPCPP_EXTRA_ARGS}
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/dpcpp ${DEFAULT_CMAKE_FLAGS} ${DPCPP_EXTRA_ARGS}
|
||||||
#CONFIGURE_COMMAND ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/configure.py ${DPCPP_CONFIGURE_ARGS}
|
# CONFIGURE_COMMAND
|
||||||
#BUILD_COMMAND echo "." #${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/compile.py
|
# ${PYTHON_BINARY}
|
||||||
|
# ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/configure.py ${DPCPP_CONFIGURE_ARGS}
|
||||||
|
# BUILD_COMMAND
|
||||||
|
# echo "." # ${PYTHON_BINARY} ${BUILD_DIR}/dpcpp/src/external_dpcpp/buildbot/compile.py
|
||||||
INSTALL_COMMAND ${CMAKE_COMMAND} --build . -- deploy-sycl-toolchain
|
INSTALL_COMMAND ${CMAKE_COMMAND} --build . -- deploy-sycl-toolchain
|
||||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/dpcpp/src/external_dpcpp < ${PATCH_DIR}/dpcpp.diff
|
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/dpcpp/src/external_dpcpp < ${PATCH_DIR}/dpcpp.diff
|
||||||
INSTALL_DIR ${LIBDIR}/dpcpp
|
INSTALL_DIR ${LIBDIR}/dpcpp
|
||||||
|
@@ -16,12 +16,6 @@ if(WIN32)
|
|||||||
--enable-libopenjpeg
|
--enable-libopenjpeg
|
||||||
--disable-mediafoundation
|
--disable-mediafoundation
|
||||||
)
|
)
|
||||||
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
|
||||||
set(FFMPEG_EXTRA_FLAGS
|
|
||||||
${FFMPEG_EXTRA_FLAGS}
|
|
||||||
--x86asmexe=yasm
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
else()
|
else()
|
||||||
set(FFMPEG_EXTRA_FLAGS
|
set(FFMPEG_EXTRA_FLAGS
|
||||||
${FFMPEG_EXTRA_FLAGS}
|
${FFMPEG_EXTRA_FLAGS}
|
||||||
|
@@ -7,8 +7,11 @@ set(FREETYPE_EXTRA_ARGS
|
|||||||
-DFT_DISABLE_HARFBUZZ=ON
|
-DFT_DISABLE_HARFBUZZ=ON
|
||||||
-DFT_DISABLE_PNG=ON
|
-DFT_DISABLE_PNG=ON
|
||||||
-DFT_REQUIRE_BROTLI=ON
|
-DFT_REQUIRE_BROTLI=ON
|
||||||
|
-DFT_REQUIRE_ZLIB=ON
|
||||||
-DPC_BROTLIDEC_INCLUDEDIR=${LIBDIR}/brotli/include
|
-DPC_BROTLIDEC_INCLUDEDIR=${LIBDIR}/brotli/include
|
||||||
-DPC_BROTLIDEC_LIBDIR=${LIBDIR}/brotli/lib
|
-DPC_BROTLIDEC_LIBDIR=${LIBDIR}/brotli/lib
|
||||||
|
-DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
|
||||||
|
-DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include
|
||||||
)
|
)
|
||||||
|
|
||||||
ExternalProject_Add(external_freetype
|
ExternalProject_Add(external_freetype
|
||||||
@@ -23,6 +26,7 @@ ExternalProject_Add(external_freetype
|
|||||||
add_dependencies(
|
add_dependencies(
|
||||||
external_freetype
|
external_freetype
|
||||||
external_brotli
|
external_brotli
|
||||||
|
external_zlib
|
||||||
)
|
)
|
||||||
|
|
||||||
if(BUILD_MODE STREQUAL Release AND WIN32)
|
if(BUILD_MODE STREQUAL Release AND WIN32)
|
||||||
|
@@ -27,6 +27,7 @@ ExternalProject_Add(external_gmp
|
|||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
URL_HASH ${GMP_HASH_TYPE}=${GMP_HASH}
|
URL_HASH ${GMP_HASH_TYPE}=${GMP_HASH}
|
||||||
PREFIX ${BUILD_DIR}/gmp
|
PREFIX ${BUILD_DIR}/gmp
|
||||||
|
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/gmp/src/external_gmp < ${PATCH_DIR}/gmp.diff
|
||||||
CONFIGURE_COMMAND ${CONFIGURE_ENV_NO_PERL} && cd ${BUILD_DIR}/gmp/src/external_gmp/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/gmp ${GMP_OPTIONS} ${GMP_EXTRA_ARGS}
|
CONFIGURE_COMMAND ${CONFIGURE_ENV_NO_PERL} && cd ${BUILD_DIR}/gmp/src/external_gmp/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/gmp ${GMP_OPTIONS} ${GMP_EXTRA_ARGS}
|
||||||
BUILD_COMMAND ${CONFIGURE_ENV_NO_PERL} && cd ${BUILD_DIR}/gmp/src/external_gmp/ && make -j${MAKE_THREADS}
|
BUILD_COMMAND ${CONFIGURE_ENV_NO_PERL} && cd ${BUILD_DIR}/gmp/src/external_gmp/ && make -j${MAKE_THREADS}
|
||||||
INSTALL_COMMAND ${CONFIGURE_ENV_NO_PERL} && cd ${BUILD_DIR}/gmp/src/external_gmp/ && make install
|
INSTALL_COMMAND ${CONFIGURE_ENV_NO_PERL} && cd ${BUILD_DIR}/gmp/src/external_gmp/ && make install
|
||||||
|
@@ -9,6 +9,7 @@ endif()
|
|||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(LLVM_XML2_ARGS
|
set(LLVM_XML2_ARGS
|
||||||
-DLIBXML2_LIBRARY=${LIBDIR}/xml2/lib/libxml2.a
|
-DLIBXML2_LIBRARY=${LIBDIR}/xml2/lib/libxml2.a
|
||||||
|
-DLIBXML2_INCLUDE_DIR=${LIBDIR}/xml2/include/libxml2
|
||||||
)
|
)
|
||||||
set(LLVM_BUILD_CLANG_TOOLS_EXTRA ^^clang-tools-extra)
|
set(LLVM_BUILD_CLANG_TOOLS_EXTRA ^^clang-tools-extra)
|
||||||
set(BUILD_CLANG_TOOLS ON)
|
set(BUILD_CLANG_TOOLS ON)
|
||||||
|
@@ -4,6 +4,29 @@ if(UNIX)
|
|||||||
set(OPENCOLLADA_EXTRA_ARGS
|
set(OPENCOLLADA_EXTRA_ARGS
|
||||||
-DLIBXML2_INCLUDE_DIR=${LIBDIR}/xml2/include/libxml2
|
-DLIBXML2_INCLUDE_DIR=${LIBDIR}/xml2/include/libxml2
|
||||||
-DLIBXML2_LIBRARIES=${LIBDIR}/xml2/lib/libxml2.a)
|
-DLIBXML2_LIBRARIES=${LIBDIR}/xml2/lib/libxml2.a)
|
||||||
|
|
||||||
|
# WARNING: the patch contains mixed UNIX and DOS line endings
|
||||||
|
# as does the OPENCOLLADA package, if this can be corrected upstream that would be better.
|
||||||
|
# For now use `sed` to force UNIX line endings so the patch applies.
|
||||||
|
# Needed as neither ignoring white-space or applying as a binary resolve this problem.
|
||||||
|
set(PATCH_MAYBE_DOS2UNIX_CMD
|
||||||
|
sed -i "s/\\r//"
|
||||||
|
${PATCH_DIR}/opencollada.diff
|
||||||
|
${BUILD_DIR}/opencollada/src/external_opencollada/CMakeLists.txt
|
||||||
|
${BUILD_DIR}/opencollada/src/external_opencollada/Externals/LibXML/CMakeLists.txt &&
|
||||||
|
)
|
||||||
|
|
||||||
|
else()
|
||||||
|
set(OPENCOLLADA_EXTRA_ARGS
|
||||||
|
-DCMAKE_DEBUG_POSTFIX=_d
|
||||||
|
-DLIBXML2_INCLUDE_DIR=${LIBDIR}/xml2/include/libxml2
|
||||||
|
)
|
||||||
|
if(BUILD_MODE STREQUAL Release)
|
||||||
|
list(APPEND OPENCOLLADA_EXTRA_ARGS -DLIBXML2_LIBRARIES=${LIBDIR}/xml2/lib/libxml2s.lib)
|
||||||
|
else()
|
||||||
|
list(APPEND OPENCOLLADA_EXTRA_ARGS -DLIBXML2_LIBRARIES=${LIBDIR}/xml2/lib/libxml2sd.lib)
|
||||||
|
endif()
|
||||||
|
set(PATCH_MAYBE_DOS2UNIX_CMD)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
ExternalProject_Add(external_opencollada
|
ExternalProject_Add(external_opencollada
|
||||||
@@ -11,17 +34,19 @@ ExternalProject_Add(external_opencollada
|
|||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
URL_HASH ${OPENCOLLADA_HASH_TYPE}=${OPENCOLLADA_HASH}
|
URL_HASH ${OPENCOLLADA_HASH_TYPE}=${OPENCOLLADA_HASH}
|
||||||
PREFIX ${BUILD_DIR}/opencollada
|
PREFIX ${BUILD_DIR}/opencollada
|
||||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/opencollada/src/external_opencollada < ${PATCH_DIR}/opencollada.diff
|
PATCH_COMMAND
|
||||||
|
${PATCH_MAYBE_DOS2UNIX_CMD}
|
||||||
|
${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/opencollada/src/external_opencollada < ${PATCH_DIR}/opencollada.diff
|
||||||
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/opencollada ${DEFAULT_CMAKE_FLAGS} ${OPENCOLLADA_EXTRA_ARGS}
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/opencollada ${DEFAULT_CMAKE_FLAGS} ${OPENCOLLADA_EXTRA_ARGS}
|
||||||
INSTALL_DIR ${LIBDIR}/opencollada
|
INSTALL_DIR ${LIBDIR}/opencollada
|
||||||
)
|
)
|
||||||
|
|
||||||
if(UNIX)
|
unset(PATCH_MAYBE_DOS2UNIX_CMD)
|
||||||
|
|
||||||
add_dependencies(
|
add_dependencies(
|
||||||
external_opencollada
|
external_opencollada
|
||||||
external_xml2
|
external_xml2
|
||||||
)
|
)
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
if(BUILD_MODE STREQUAL Release)
|
if(BUILD_MODE STREQUAL Release)
|
||||||
@@ -32,17 +57,7 @@ if(WIN32)
|
|||||||
endif()
|
endif()
|
||||||
if(BUILD_MODE STREQUAL Debug)
|
if(BUILD_MODE STREQUAL Debug)
|
||||||
ExternalProject_Add_Step(external_opencollada after_install
|
ExternalProject_Add_Step(external_opencollada after_install
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/buffer.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/buffer_d.lib
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/opencollada/lib ${HARVEST_TARGET}/opencollada/lib
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/ftoa.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/ftoa_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/GeneratedSaxParser.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/GeneratedSaxParser_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/MathMLSolver.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/MathMLSolver_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/OpenCOLLADABaseUtils.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/OpenCOLLADABaseUtils_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/OpenCOLLADAFramework.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/OpenCOLLADAFramework_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/OpenCOLLADASaxFrameworkLoader_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/OpenCOLLADAStreamWriter.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/OpenCOLLADAStreamWriter_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/pcre.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/pcre_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/UTF.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/UTF_d.lib
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencollada/lib/opencollada/xml.lib ${HARVEST_TARGET}/opencollada/lib/opencollada/xml_d.lib
|
|
||||||
DEPENDEES install
|
DEPENDEES install
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -4,11 +4,9 @@
|
|||||||
# library itself does not depend on them, so should give no problems.
|
# library itself does not depend on them, so should give no problems.
|
||||||
|
|
||||||
set(OPENPGL_EXTRA_ARGS
|
set(OPENPGL_EXTRA_ARGS
|
||||||
-DOPENPGL_BUILD_PYTHON=OFF
|
|
||||||
-DOPENPGL_BUILD_STATIC=ON
|
-DOPENPGL_BUILD_STATIC=ON
|
||||||
-DOPENPGL_TBB_ROOT=${LIBDIR}/tbb
|
-DOPENPGL_TBB_ROOT=${LIBDIR}/tbb
|
||||||
-DTBB_ROOT=${LIBDIR}/tbb
|
-DTBB_ROOT=${LIBDIR}/tbb
|
||||||
-Dembree_DIR=${LIBDIR}/embree/lib/cmake/embree-${EMBREE_VERSION}
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
-DCMAKE_DEBUG_POSTFIX=_d
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -31,7 +29,6 @@ ExternalProject_Add(external_openpgl
|
|||||||
add_dependencies(
|
add_dependencies(
|
||||||
external_openpgl
|
external_openpgl
|
||||||
external_tbb
|
external_tbb
|
||||||
external_embree
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
if(WIN32)
|
if(WIN32)
|
||||||
option(ENABLE_MINGW64 "Enable building of ffmpeg/iconv/libsndfile/fftw3 by installing mingw64" ON)
|
option(ENABLE_MINGW64 "Enable building of ffmpeg/iconv/libsndfile/fftw3 by installing mingw64" ON)
|
||||||
endif()
|
endif()
|
||||||
|
option(FORCE_CHECK_HASH "Force a check of all hashses during CMake the configure phase" OFF)
|
||||||
option(WITH_BOOST_PYTHON "Enable building of boost with python support" OFF)
|
option(WITH_BOOST_PYTHON "Enable building of boost with python support" OFF)
|
||||||
cmake_host_system_information(RESULT NUM_CORES QUERY NUMBER_OF_LOGICAL_CORES)
|
cmake_host_system_information(RESULT NUM_CORES QUERY NUMBER_OF_LOGICAL_CORES)
|
||||||
set(MAKE_THREADS ${NUM_CORES} CACHE STRING "Number of threads to run make with")
|
set(MAKE_THREADS ${NUM_CORES} CACHE STRING "Number of threads to run make with")
|
||||||
@@ -20,8 +21,8 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(DOWNLOAD_DIR "${CMAKE_CURRENT_BINARY_DIR}/downloads" CACHE STRING "Path for downloaded files")
|
set(DOWNLOAD_DIR "${CMAKE_CURRENT_BINARY_DIR}/downloads" CACHE STRING "Path for downloaded files")
|
||||||
# This path must be hard-coded like this, so that the GNUmakefile knows where it is and can pass it to make_source_archive.py:
|
|
||||||
set(PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/packages")
|
set(PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/packages" CACHE PATH "default path for downloaded packages")
|
||||||
option(PACKAGE_USE_UPSTREAM_SOURCES "Use sources upstream to download the package sources, when OFF the blender mirror will be used" ON)
|
option(PACKAGE_USE_UPSTREAM_SOURCES "Use sources upstream to download the package sources, when OFF the blender mirror will be used" ON)
|
||||||
|
|
||||||
file(TO_CMAKE_PATH ${DOWNLOAD_DIR} DOWNLOAD_DIR)
|
file(TO_CMAKE_PATH ${DOWNLOAD_DIR} DOWNLOAD_DIR)
|
||||||
@@ -101,34 +102,16 @@ else()
|
|||||||
set(LIBPREFIX "lib")
|
set(LIBPREFIX "lib")
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
# Let's get the current Xcode dir, to support xcode-select
|
# Use same Xcode detection as Blender itself.
|
||||||
execute_process(
|
include(../cmake/platform/platform_apple_xcode.cmake)
|
||||||
COMMAND xcode-select --print-path
|
|
||||||
OUTPUT_VARIABLE XCODE_DEV_PATH OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
execute_process(
|
|
||||||
COMMAND xcodebuild -version -sdk macosx SDKVersion
|
|
||||||
OUTPUT_VARIABLE MACOSX_SDK_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
|
|
||||||
if(NOT CMAKE_OSX_ARCHITECTURES)
|
|
||||||
execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
message(STATUS "Detected native architecture ${ARCHITECTURE}.")
|
|
||||||
set(CMAKE_OSX_ARCHITECTURES "${ARCHITECTURE}")
|
|
||||||
endif()
|
|
||||||
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
|
|
||||||
set(OSX_DEPLOYMENT_TARGET 10.13)
|
|
||||||
else()
|
|
||||||
set(OSX_DEPLOYMENT_TARGET 11.00)
|
|
||||||
endif()
|
|
||||||
set(OSX_SYSROOT ${XCODE_DEV_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk)
|
|
||||||
|
|
||||||
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")
|
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")
|
||||||
set(BLENDER_PLATFORM_ARM ON)
|
set(BLENDER_PLATFORM_ARM ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(PLATFORM_CFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES}")
|
set(PLATFORM_CFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES}")
|
||||||
set(PLATFORM_CXXFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -std=c++11 -stdlib=libc++ -arch ${CMAKE_OSX_ARCHITECTURES}")
|
set(PLATFORM_CXXFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -std=c++11 -stdlib=libc++ -arch ${CMAKE_OSX_ARCHITECTURES}")
|
||||||
set(PLATFORM_LDFLAGS "-isysroot ${OSX_SYSROOT} -mmacosx-version-min=${OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES}")
|
set(PLATFORM_LDFLAGS "-isysroot ${CMAKE_OSX_SYSROOT} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET} -arch ${CMAKE_OSX_ARCHITECTURES}")
|
||||||
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
|
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
|
||||||
set(PLATFORM_BUILD_TARGET --build=x86_64-apple-darwin17.0.0) # OS X 10.13
|
set(PLATFORM_BUILD_TARGET --build=x86_64-apple-darwin17.0.0) # OS X 10.13
|
||||||
else()
|
else()
|
||||||
@@ -136,8 +119,8 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
set(PLATFORM_CMAKE_FLAGS
|
set(PLATFORM_CMAKE_FLAGS
|
||||||
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
|
-DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES}
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${OSX_DEPLOYMENT_TARGET}
|
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}
|
||||||
-DCMAKE_OSX_SYSROOT:PATH=${OSX_SYSROOT}
|
-DCMAKE_OSX_SYSROOT:PATH=${CMAKE_OSX_SYSROOT}
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")
|
if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64")
|
||||||
@@ -171,8 +154,8 @@ else()
|
|||||||
set(BLENDER_CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG ${PLATFORM_CXXFLAGS}")
|
set(BLENDER_CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG ${PLATFORM_CXXFLAGS}")
|
||||||
|
|
||||||
set(CONFIGURE_ENV
|
set(CONFIGURE_ENV
|
||||||
export MACOSX_DEPLOYMENT_TARGET=${OSX_DEPLOYMENT_TARGET} &&
|
export MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} &&
|
||||||
export MACOSX_SDK_VERSION=${OSX_DEPLOYMENT_TARGET} &&
|
export MACOSX_SDK_VERSION=${CMAKE_OSX_DEPLOYMENT_TARGET} &&
|
||||||
export CFLAGS=${PLATFORM_CFLAGS} &&
|
export CFLAGS=${PLATFORM_CFLAGS} &&
|
||||||
export CXXFLAGS=${PLATFORM_CXXFLAGS} &&
|
export CXXFLAGS=${PLATFORM_CXXFLAGS} &&
|
||||||
export LDFLAGS=${PLATFORM_LDFLAGS}
|
export LDFLAGS=${PLATFORM_LDFLAGS}
|
||||||
|
@@ -32,6 +32,8 @@ set(OSL_EXTRA_ARGS
|
|||||||
-DUSE_Qt5=OFF
|
-DUSE_Qt5=OFF
|
||||||
-DINSTALL_DOCS=OFF
|
-DINSTALL_DOCS=OFF
|
||||||
-Dpugixml_ROOT=${LIBDIR}/pugixml
|
-Dpugixml_ROOT=${LIBDIR}/pugixml
|
||||||
|
-DTIFF_ROOT=${LIBDIR}/tiff
|
||||||
|
-DJPEG_ROOT=${LIBDIR}/jpeg
|
||||||
-DUSE_PYTHON=OFF
|
-DUSE_PYTHON=OFF
|
||||||
-DCMAKE_CXX_STANDARD=14
|
-DCMAKE_CXX_STANDARD=14
|
||||||
-DImath_ROOT=${LIBDIR}/imath
|
-DImath_ROOT=${LIBDIR}/imath
|
||||||
@@ -81,6 +83,7 @@ if(WIN32)
|
|||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslcomp.lib ${HARVEST_TARGET}/osl/lib/oslcomp_d.lib
|
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslcomp.lib ${HARVEST_TARGET}/osl/lib/oslcomp_d.lib
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslexec.lib ${HARVEST_TARGET}/osl/lib/oslexec_d.lib
|
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslexec.lib ${HARVEST_TARGET}/osl/lib/oslexec_d.lib
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslquery.lib ${HARVEST_TARGET}/osl/lib/oslquery_d.lib
|
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslquery.lib ${HARVEST_TARGET}/osl/lib/oslquery_d.lib
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/osl/lib/oslnoise.lib ${HARVEST_TARGET}/osl/lib/oslnoise_d.lib
|
||||||
DEPENDEES install
|
DEPENDEES install
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -24,6 +24,14 @@ add_dependencies(
|
|||||||
external_zlib
|
external_zlib
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(WIN32 AND BUILD_MODE STREQUAL Release)
|
||||||
|
ExternalProject_Add_Step(external_png after_install
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/png/include/ ${HARVEST_TARGET}/png/include/
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/png/lib/libpng16_static${LIBEXT} ${HARVEST_TARGET}/png/lib/libpng${LIBEXT}
|
||||||
|
DEPENDEES install
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32 AND BUILD_MODE STREQUAL Debug)
|
if(WIN32 AND BUILD_MODE STREQUAL Debug)
|
||||||
ExternalProject_Add_Step(external_png after_install
|
ExternalProject_Add_Step(external_png after_install
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/png/lib/libpng16_staticd${LIBEXT} ${LIBDIR}/png/lib/libpng16${LIBEXT}
|
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/png/lib/libpng16_staticd${LIBEXT} ${LIBDIR}/png/lib/libpng16${LIBEXT}
|
||||||
|
@@ -15,9 +15,11 @@ if(WIN32)
|
|||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
set(PYTHON_EXTERNALS_FOLDER ${BUILD_DIR}/python/src/external_python/externals)
|
set(PYTHON_EXTERNALS_FOLDER ${BUILD_DIR}/python/src/external_python/externals)
|
||||||
|
set(ZLIB_SOURCE_FOLDER ${BUILD_DIR}/zlib/src/external_zlib)
|
||||||
set(DOWNLOADS_EXTERNALS_FOLDER ${DOWNLOAD_DIR}/externals)
|
set(DOWNLOADS_EXTERNALS_FOLDER ${DOWNLOAD_DIR}/externals)
|
||||||
|
|
||||||
cmake_to_dos_path(${PYTHON_EXTERNALS_FOLDER} PYTHON_EXTERNALS_FOLDER_DOS)
|
cmake_to_dos_path(${PYTHON_EXTERNALS_FOLDER} PYTHON_EXTERNALS_FOLDER_DOS)
|
||||||
|
cmake_to_dos_path(${ZLIB_SOURCE_FOLDER} ZLIB_SOURCE_FOLDER_DOS)
|
||||||
cmake_to_dos_path(${DOWNLOADS_EXTERNALS_FOLDER} DOWNLOADS_EXTERNALS_FOLDER_DOS)
|
cmake_to_dos_path(${DOWNLOADS_EXTERNALS_FOLDER} DOWNLOADS_EXTERNALS_FOLDER_DOS)
|
||||||
|
|
||||||
ExternalProject_Add(external_python
|
ExternalProject_Add(external_python
|
||||||
@@ -25,12 +27,21 @@ if(WIN32)
|
|||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
URL_HASH ${PYTHON_HASH_TYPE}=${PYTHON_HASH}
|
URL_HASH ${PYTHON_HASH_TYPE}=${PYTHON_HASH}
|
||||||
PREFIX ${BUILD_DIR}/python
|
PREFIX ${BUILD_DIR}/python
|
||||||
CONFIGURE_COMMAND ""
|
# Python will download its own deps and there's very little we can do about
|
||||||
|
# that beyond placing some code in their externals dir before it tries.
|
||||||
|
# the foldernames *HAVE* to match the ones inside pythons get_externals.cmd.
|
||||||
|
# python 3.10.8 still ships zlib 1.2.12, replace it with our 1.2.13
|
||||||
|
# copy until they update.
|
||||||
|
CONFIGURE_COMMAND mkdir ${PYTHON_EXTERNALS_FOLDER_DOS} &&
|
||||||
|
mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\zlib-1.2.12 ${ZLIB_SOURCE_FOLDER_DOS} &&
|
||||||
|
${CMAKE_COMMAND} -E copy ${ZLIB_SOURCE_FOLDER}/../external_zlib-build/zconf.h ${PYTHON_EXTERNALS_FOLDER}/zlib-1.2.12/zconf.h
|
||||||
BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p x64 -c ${BUILD_MODE}
|
BUILD_COMMAND cd ${BUILD_DIR}/python/src/external_python/pcbuild/ && set IncludeTkinter=false && call build.bat -e -p x64 -c ${BUILD_MODE}
|
||||||
PATCH_COMMAND ${PATCH_CMD} --verbose -p1 -d ${BUILD_DIR}/python/src/external_python < ${PATCH_DIR}/python_windows.diff
|
|
||||||
INSTALL_COMMAND ${PYTHON_BINARY_INTERNAL} ${PYTHON_SRC}/PC/layout/main.py -b ${PYTHON_SRC}/PCbuild/amd64 -s ${PYTHON_SRC} -t ${PYTHON_SRC}/tmp/ --include-stable --include-pip --include-dev --include-launchers --include-venv --include-symbols ${PYTHON_EXTRA_INSTLAL_FLAGS} --copy ${LIBDIR}/python
|
INSTALL_COMMAND ${PYTHON_BINARY_INTERNAL} ${PYTHON_SRC}/PC/layout/main.py -b ${PYTHON_SRC}/PCbuild/amd64 -s ${PYTHON_SRC} -t ${PYTHON_SRC}/tmp/ --include-stable --include-pip --include-dev --include-launchers --include-venv --include-symbols ${PYTHON_EXTRA_INSTLAL_FLAGS} --copy ${LIBDIR}/python
|
||||||
)
|
)
|
||||||
|
add_dependencies(
|
||||||
|
external_python
|
||||||
|
external_zlib
|
||||||
|
)
|
||||||
else()
|
else()
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
# Disable functions that can be in 10.13 sdk but aren't available on 10.9 target.
|
# Disable functions that can be in 10.13 sdk but aren't available on 10.9 target.
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
####################################################################################################################
|
##################################################################################################
|
||||||
# Mingw64 Builds
|
# Mingw64 Builds
|
||||||
####################################################################################################################
|
##################################################################################################
|
||||||
# This installs mingw64+msys to compile ffmpeg/iconv/libsndfile/fftw3
|
# This installs mingw64+msys to compile ffmpeg/iconv/libsndfile/fftw3
|
||||||
####################################################################################################################
|
##################################################################################################
|
||||||
|
|
||||||
message("LIBDIR = ${LIBDIR}")
|
message("LIBDIR = ${LIBDIR}")
|
||||||
macro(cmake_to_msys_path MsysPath ResultingPath)
|
macro(cmake_to_msys_path MsysPath ResultingPath)
|
||||||
|
@@ -11,18 +11,11 @@ else()
|
|||||||
set(SNDFILE_OPTIONS --enable-static --disable-shared )
|
set(SNDFILE_OPTIONS --enable-static --disable-shared )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
|
||||||
set(SNDFILE_PATCH_CMD ${PATCH_CMD} --verbose -p 0 -d ${BUILD_DIR}/sndfile/src/external_sndfile < ${PATCH_DIR}/sndfile.diff)
|
|
||||||
else()
|
|
||||||
set(SNDFILE_PATCH_CMD)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ExternalProject_Add(external_sndfile
|
ExternalProject_Add(external_sndfile
|
||||||
URL file://${PACKAGE_DIR}/${SNDFILE_FILE}
|
URL file://${PACKAGE_DIR}/${SNDFILE_FILE}
|
||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
URL_HASH ${SNDFILE_HASH_TYPE}=${SNDFILE_HASH}
|
URL_HASH ${SNDFILE_HASH_TYPE}=${SNDFILE_HASH}
|
||||||
PREFIX ${BUILD_DIR}/sndfile
|
PREFIX ${BUILD_DIR}/sndfile
|
||||||
PATCH_COMMAND ${SNDFILE_PATCH_CMD}
|
|
||||||
CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sndfile/src/external_sndfile/ && ${SNDFILE_ENV} ${CONFIGURE_COMMAND} ${SNDFILE_OPTIONS} --prefix=${mingw_LIBDIR}/sndfile
|
CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sndfile/src/external_sndfile/ && ${SNDFILE_ENV} ${CONFIGURE_COMMAND} ${SNDFILE_OPTIONS} --prefix=${mingw_LIBDIR}/sndfile
|
||||||
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sndfile/src/external_sndfile/ && make -j${MAKE_THREADS}
|
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sndfile/src/external_sndfile/ && make -j${MAKE_THREADS}
|
||||||
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sndfile/src/external_sndfile/ && make install
|
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sndfile/src/external_sndfile/ && make install
|
||||||
|
@@ -48,7 +48,6 @@ ExternalProject_Add(external_sqlite
|
|||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
URL_HASH ${SQLITE_HASH_TYPE}=${SQLITE_HASH}
|
URL_HASH ${SQLITE_HASH_TYPE}=${SQLITE_HASH}
|
||||||
PREFIX ${BUILD_DIR}/sqlite
|
PREFIX ${BUILD_DIR}/sqlite
|
||||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/sqlite/src/external_sqlite < ${PATCH_DIR}/sqlite.diff
|
|
||||||
CONFIGURE_COMMAND ${SQLITE_CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/sqlite ${SQLITE_CONFIGURATION_ARGS}
|
CONFIGURE_COMMAND ${SQLITE_CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/sqlite ${SQLITE_CONFIGURATION_ARGS}
|
||||||
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && make -j${MAKE_THREADS}
|
BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && make -j${MAKE_THREADS}
|
||||||
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && make install
|
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && make install
|
||||||
|
@@ -5,6 +5,7 @@ set(SSL_PATCH_CMD echo .)
|
|||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(SSL_OS_COMPILER "blender-darwin-${CMAKE_OSX_ARCHITECTURES}")
|
set(SSL_OS_COMPILER "blender-darwin-${CMAKE_OSX_ARCHITECTURES}")
|
||||||
|
set(SSL_PATCH_CMD ${PATCH_CMD} --verbose -p 0 -d ${BUILD_DIR}/ssl/src/external_ssl < ${PATCH_DIR}/ssl.diff)
|
||||||
else()
|
else()
|
||||||
if(BLENDER_PLATFORM_ARM)
|
if(BLENDER_PLATFORM_ARM)
|
||||||
set(SSL_OS_COMPILER "blender-linux-aarch64")
|
set(SSL_OS_COMPILER "blender-linux-aarch64")
|
||||||
|
@@ -25,6 +25,7 @@ ExternalProject_Add(external_tiff
|
|||||||
add_dependencies(
|
add_dependencies(
|
||||||
external_tiff
|
external_tiff
|
||||||
external_zlib
|
external_zlib
|
||||||
|
external_jpeg
|
||||||
)
|
)
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
if(BUILD_MODE STREQUAL Release)
|
if(BUILD_MODE STREQUAL Release)
|
||||||
|
@@ -58,8 +58,9 @@ set(USD_EXTRA_ARGS
|
|||||||
-DPXR_BUILD_USD_TOOLS=OFF
|
-DPXR_BUILD_USD_TOOLS=OFF
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
-DCMAKE_DEBUG_POSTFIX=_d
|
||||||
-DBUILD_SHARED_LIBS=Off
|
-DBUILD_SHARED_LIBS=Off
|
||||||
# USD is hellbound on making a shared lib, unless you point this variable to a valid cmake file
|
# USD is hellbound on making a shared library,
|
||||||
# doesn't have to make sense, but as long as it points somewhere valid it will skip the shared lib.
|
# unless you point this variable to a valid CMAKE file doesn't have to make sense,
|
||||||
|
# but as long as it points somewhere valid it will skip the shared library.
|
||||||
-DPXR_MONOLITHIC_IMPORT=${BUILD_DIR}/usd/src/external_usd/cmake/defaults/Version.cmake
|
-DPXR_MONOLITHIC_IMPORT=${BUILD_DIR}/usd/src/external_usd/cmake/defaults/Version.cmake
|
||||||
-DTBB_INCLUDE_DIRS=${LIBDIR}/tbb/include
|
-DTBB_INCLUDE_DIRS=${LIBDIR}/tbb/include
|
||||||
-DTBB_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}${TBB_LIBRARY}${LIBEXT}
|
-DTBB_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}${TBB_LIBRARY}${LIBEXT}
|
||||||
@@ -86,7 +87,8 @@ add_dependencies(
|
|||||||
external_opensubdiv
|
external_opensubdiv
|
||||||
)
|
)
|
||||||
|
|
||||||
# Since USD 21.11 the libraries are prefixed with "usd_", i.e. "libusd_m.a" became "libusd_usd_m.a".
|
# Since USD 21.11 the libraries are prefixed with "usd_", i.e.
|
||||||
|
# "libusd_m.a" became "libusd_usd_m.a".
|
||||||
# See https://github.com/PixarAnimationStudios/USD/blob/release/CHANGELOG.md#2111---2021-11-01
|
# See https://github.com/PixarAnimationStudios/USD/blob/release/CHANGELOG.md#2111---2021-11-01
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
if (USD_VERSION VERSION_LESS 21.11)
|
if (USD_VERSION VERSION_LESS 21.11)
|
||||||
|
@@ -8,9 +8,9 @@
|
|||||||
# Not all of our dependencies are currently in the nvd database so not all
|
# Not all of our dependencies are currently in the nvd database so not all
|
||||||
# dependencies have one assigned.
|
# dependencies have one assigned.
|
||||||
|
|
||||||
set(ZLIB_VERSION 1.2.12)
|
set(ZLIB_VERSION 1.2.13)
|
||||||
set(ZLIB_URI https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz)
|
set(ZLIB_URI https://zlib.net/zlib-${ZLIB_VERSION}.tar.gz)
|
||||||
set(ZLIB_HASH 5fc414a9726be31427b440b434d05f78)
|
set(ZLIB_HASH 9b8aa094c4e5765dabf4da391f00d15c)
|
||||||
set(ZLIB_HASH_TYPE MD5)
|
set(ZLIB_HASH_TYPE MD5)
|
||||||
set(ZLIB_FILE zlib-${ZLIB_VERSION}.tar.gz)
|
set(ZLIB_FILE zlib-${ZLIB_VERSION}.tar.gz)
|
||||||
set(ZLIB_CPE "cpe:2.3:a:zlib:zlib:${ZLIB_VERSION}:*:*:*:*:*:*:*")
|
set(ZLIB_CPE "cpe:2.3:a:zlib:zlib:${ZLIB_VERSION}:*:*:*:*:*:*:*")
|
||||||
@@ -88,9 +88,9 @@ else()
|
|||||||
set(OPENEXR_VERSION_POSTFIX)
|
set(OPENEXR_VERSION_POSTFIX)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(FREETYPE_VERSION 2.11.1)
|
set(FREETYPE_VERSION 2.12.1)
|
||||||
set(FREETYPE_URI http://prdownloads.sourceforge.net/freetype/freetype-${FREETYPE_VERSION}.tar.gz)
|
set(FREETYPE_URI http://prdownloads.sourceforge.net/freetype/freetype-${FREETYPE_VERSION}.tar.gz)
|
||||||
set(FREETYPE_HASH bd4e3b007474319909a6b79d50908e85)
|
set(FREETYPE_HASH 8bc5c9c9df7ac12c504f8918552a7cf2)
|
||||||
set(FREETYPE_HASH_TYPE MD5)
|
set(FREETYPE_HASH_TYPE MD5)
|
||||||
set(FREETYPE_FILE freetype-${FREETYPE_VERSION}.tar.gz)
|
set(FREETYPE_FILE freetype-${FREETYPE_VERSION}.tar.gz)
|
||||||
SET(FREETYPE_CPE "cpe:2.3:a:freetype:freetype:${FREETYPE_VERSION}:*:*:*:*:*:*:*")
|
SET(FREETYPE_CPE "cpe:2.3:a:freetype:freetype:${FREETYPE_VERSION}:*:*:*:*:*:*:*")
|
||||||
@@ -159,9 +159,9 @@ set(OPENMP_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${
|
|||||||
set(OPENMP_HASH_TYPE MD5)
|
set(OPENMP_HASH_TYPE MD5)
|
||||||
set(OPENMP_FILE openmp-${OPENMP_VERSION}.src.tar.xz)
|
set(OPENMP_FILE openmp-${OPENMP_VERSION}.src.tar.xz)
|
||||||
|
|
||||||
set(OPENIMAGEIO_VERSION v2.3.13.0)
|
set(OPENIMAGEIO_VERSION v2.3.20.0)
|
||||||
set(OPENIMAGEIO_URI https://github.com/OpenImageIO/oiio/archive/refs/tags/${OPENIMAGEIO_VERSION}.tar.gz)
|
set(OPENIMAGEIO_URI https://github.com/OpenImageIO/oiio/archive/refs/tags/${OPENIMAGEIO_VERSION}.tar.gz)
|
||||||
set(OPENIMAGEIO_HASH de45fb38501c4581062b522b53b6141c)
|
set(OPENIMAGEIO_HASH defb1fe7c8e64bac60eb3cacaf5c3736)
|
||||||
set(OPENIMAGEIO_HASH_TYPE MD5)
|
set(OPENIMAGEIO_HASH_TYPE MD5)
|
||||||
set(OPENIMAGEIO_FILE OpenImageIO-${OPENIMAGEIO_VERSION}.tar.gz)
|
set(OPENIMAGEIO_FILE OpenImageIO-${OPENIMAGEIO_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -189,17 +189,17 @@ set(TIFF_HASH_TYPE MD5)
|
|||||||
set(TIFF_FILE tiff-${TIFF_VERSION}.tar.gz)
|
set(TIFF_FILE tiff-${TIFF_VERSION}.tar.gz)
|
||||||
set(TIFF_CPE "cpe:2.3:a:libtiff:libtiff:${TIFF_VERSION}:*:*:*:*:*:*:*")
|
set(TIFF_CPE "cpe:2.3:a:libtiff:libtiff:${TIFF_VERSION}:*:*:*:*:*:*:*")
|
||||||
|
|
||||||
set(OSL_VERSION 1.11.17.0)
|
set(OSL_VERSION 1.12.6.2)
|
||||||
set(OSL_URI https://github.com/imageworks/OpenShadingLanguage/archive/Release-${OSL_VERSION}.tar.gz)
|
set(OSL_URI https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/archive/refs/tags/v${OSL_VERSION}.tar.gz)
|
||||||
set(OSL_HASH 63265472ce14548839ace2e21e401544)
|
set(OSL_HASH 6fef11548adfdd3e5b25c49d2dae96ee)
|
||||||
set(OSL_HASH_TYPE MD5)
|
set(OSL_HASH_TYPE MD5)
|
||||||
set(OSL_FILE OpenShadingLanguage-${OSL_VERSION}.tar.gz)
|
set(OSL_FILE OpenShadingLanguage-${OSL_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(PYTHON_VERSION 3.10.2)
|
set(PYTHON_VERSION 3.10.8)
|
||||||
set(PYTHON_SHORT_VERSION 3.10)
|
set(PYTHON_SHORT_VERSION 3.10)
|
||||||
set(PYTHON_SHORT_VERSION_NO_DOTS 310)
|
set(PYTHON_SHORT_VERSION_NO_DOTS 310)
|
||||||
set(PYTHON_URI https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz)
|
set(PYTHON_URI https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz)
|
||||||
set(PYTHON_HASH 14e8c22458ed7779a1957b26cde01db9)
|
set(PYTHON_HASH e92356b012ed4d0e09675131d39b1bde)
|
||||||
set(PYTHON_HASH_TYPE MD5)
|
set(PYTHON_HASH_TYPE MD5)
|
||||||
set(PYTHON_FILE Python-${PYTHON_VERSION}.tar.xz)
|
set(PYTHON_FILE Python-${PYTHON_VERSION}.tar.xz)
|
||||||
set(PYTHON_CPE "cpe:2.3:a:python:python:${PYTHON_VERSION}:-:*:*:*:*:*:*")
|
set(PYTHON_CPE "cpe:2.3:a:python:python:${PYTHON_VERSION}:-:*:*:*:*:*:*")
|
||||||
@@ -225,8 +225,9 @@ set(URLLIB3_CPE "cpe:2.3:a:urllib3:urllib3:${URLLIB3_VERSION}:*:*:*:*:*:*:*")
|
|||||||
set(CERTIFI_VERSION 2021.10.8)
|
set(CERTIFI_VERSION 2021.10.8)
|
||||||
set(REQUESTS_VERSION 2.27.1)
|
set(REQUESTS_VERSION 2.27.1)
|
||||||
set(CYTHON_VERSION 0.29.26)
|
set(CYTHON_VERSION 0.29.26)
|
||||||
# The version of the zstd library used to build the Python package should match ZSTD_VERSION defined below.
|
# The version of the zstd library used to build the Python package should match ZSTD_VERSION
|
||||||
# At this time of writing, 0.17.0 was already released, but built against zstd 1.5.1, while we use 1.5.0.
|
# defined below. At this time of writing, 0.17.0 was already released,
|
||||||
|
# but built against zstd 1.5.1, while we use 1.5.0.
|
||||||
set(ZSTANDARD_VERSION 0.16.0)
|
set(ZSTANDARD_VERSION 0.16.0)
|
||||||
set(AUTOPEP8_VERSION 1.6.0)
|
set(AUTOPEP8_VERSION 1.6.0)
|
||||||
set(PYCODESTYLE_VERSION 2.8.0)
|
set(PYCODESTYLE_VERSION 2.8.0)
|
||||||
@@ -298,17 +299,17 @@ set(XVIDCORE_HASH abbdcbd39555691dd1c9b4d08f0a031376a3b211652c0d8b3b8aa9be1303ce
|
|||||||
set(XVIDCORE_HASH_TYPE SHA256)
|
set(XVIDCORE_HASH_TYPE SHA256)
|
||||||
set(XVIDCORE_FILE xvidcore-${XVIDCORE_VERSION}.tar.gz)
|
set(XVIDCORE_FILE xvidcore-${XVIDCORE_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(OPENJPEG_VERSION 2.4.0)
|
set(OPENJPEG_VERSION 2.5.0)
|
||||||
set(OPENJPEG_SHORT_VERSION 2.4)
|
set(OPENJPEG_SHORT_VERSION 2.5)
|
||||||
set(OPENJPEG_URI https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz)
|
set(OPENJPEG_URI https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz)
|
||||||
set(OPENJPEG_HASH 8702ba68b442657f11aaeb2b338443ca8d5fb95b0d845757968a7be31ef7f16d)
|
set(OPENJPEG_HASH 0333806d6adecc6f7a91243b2b839ff4d2053823634d4f6ed7a59bc87409122a)
|
||||||
set(OPENJPEG_HASH_TYPE SHA256)
|
set(OPENJPEG_HASH_TYPE SHA256)
|
||||||
set(OPENJPEG_FILE openjpeg-v${OPENJPEG_VERSION}.tar.gz)
|
set(OPENJPEG_FILE openjpeg-v${OPENJPEG_VERSION}.tar.gz)
|
||||||
set(OPENJPEG_CPE "cpe:2.3:a:uclouvain:openjpeg:${OPENJPEG_VERSION}:*:*:*:*:*:*:*")
|
set(OPENJPEG_CPE "cpe:2.3:a:uclouvain:openjpeg:${OPENJPEG_VERSION}:*:*:*:*:*:*:*")
|
||||||
|
|
||||||
set(FFMPEG_VERSION 5.0)
|
set(FFMPEG_VERSION 5.1.2)
|
||||||
set(FFMPEG_URI http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2)
|
set(FFMPEG_URI http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2)
|
||||||
set(FFMPEG_HASH c0130b8db2c763430fd1c6905288d61bc44ee0548ad5fcd2dfd650b88432bed9)
|
set(FFMPEG_HASH 39a0bcc8d98549f16c570624678246a6ac736c066cebdb409f9502e915b22f2b)
|
||||||
set(FFMPEG_HASH_TYPE SHA256)
|
set(FFMPEG_HASH_TYPE SHA256)
|
||||||
set(FFMPEG_FILE ffmpeg-${FFMPEG_VERSION}.tar.bz2)
|
set(FFMPEG_FILE ffmpeg-${FFMPEG_VERSION}.tar.bz2)
|
||||||
set(FFMPEG_CPE "cpe:2.3:a:ffmpeg:ffmpeg:${FFMPEG_VERSION}:*:*:*:*:*:*:*")
|
set(FFMPEG_CPE "cpe:2.3:a:ffmpeg:ffmpeg:${FFMPEG_VERSION}:*:*:*:*:*:*:*")
|
||||||
@@ -325,9 +326,9 @@ set(ICONV_HASH 7d2a800b952942bb2880efb00cfd524c)
|
|||||||
set(ICONV_HASH_TYPE MD5)
|
set(ICONV_HASH_TYPE MD5)
|
||||||
set(ICONV_FILE libiconv-${ICONV_VERSION}.tar.gz)
|
set(ICONV_FILE libiconv-${ICONV_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(SNDFILE_VERSION 1.0.28)
|
set(SNDFILE_VERSION 1.1.0)
|
||||||
set(SNDFILE_URI http://www.mega-nerd.com/libsndfile/files/libsndfile-${SNDFILE_VERSION}.tar.gz)
|
set(SNDFILE_URI https://github.com/libsndfile/libsndfile/releases/download/1.1.0/libsndfile-${SNDFILE_VERSION}.tar.xz)
|
||||||
set(SNDFILE_HASH 646b5f98ce89ac60cdb060fcd398247c)
|
set(SNDFILE_HASH e63dead2b4f0aaf323687619d007ee6a)
|
||||||
set(SNDFILE_HASH_TYPE MD5)
|
set(SNDFILE_HASH_TYPE MD5)
|
||||||
set(SNDFILE_FILE libsndfile-${SNDFILE_VERSION}.tar.gz)
|
set(SNDFILE_FILE libsndfile-${SNDFILE_VERSION}.tar.gz)
|
||||||
set(SNDFILE_CPE "cpe:2.3:a:libsndfile_project:libsndfile:${SNDFILE_VERSION}:*:*:*:*:*:*:*")
|
set(SNDFILE_CPE "cpe:2.3:a:libsndfile_project:libsndfile:${SNDFILE_VERSION}:*:*:*:*:*:*:*")
|
||||||
@@ -351,21 +352,13 @@ set(JEMALLOC_HASH 3d41fbf006e6ebffd489bdb304d009ae)
|
|||||||
set(JEMALLOC_HASH_TYPE MD5)
|
set(JEMALLOC_HASH_TYPE MD5)
|
||||||
set(JEMALLOC_FILE jemalloc-${JEMALLOC_VERSION}.tar.bz2)
|
set(JEMALLOC_FILE jemalloc-${JEMALLOC_VERSION}.tar.bz2)
|
||||||
|
|
||||||
set(XML2_VERSION 2.9.10)
|
set(XML2_VERSION 2.10.3)
|
||||||
set(XML2_URI http://xmlsoft.org/sources/libxml2-${XML2_VERSION}.tar.gz)
|
set(XML2_URI https://download.gnome.org/sources/libxml2/2.10/libxml2-${XML2_VERSION}.tar.xz)
|
||||||
set(XML2_HASH 10942a1dc23137a8aa07f0639cbfece5)
|
set(XML2_HASH f9edac7fac232b3657a003fd9a5bbe42)
|
||||||
set(XML2_HASH_TYPE MD5)
|
set(XML2_HASH_TYPE MD5)
|
||||||
set(XML2_FILE libxml2-${XML2_VERSION}.tar.gz)
|
set(XML2_FILE libxml2-${XML2_VERSION}.tar.xz)
|
||||||
set(XML2_CPE "cpe:2.3:a:xmlsoft:libxml2:${XML2_VERSION}:*:*:*:*:*:*:*")
|
set(XML2_CPE "cpe:2.3:a:xmlsoft:libxml2:${XML2_VERSION}:*:*:*:*:*:*:*")
|
||||||
|
|
||||||
set(TINYXML_VERSION 2_6_2)
|
|
||||||
set(TINYXML_VERSION_DOTS 2.6.2)
|
|
||||||
set(TINYXML_URI https://nchc.dl.sourceforge.net/project/tinyxml/tinyxml/${TINYXML_VERSION_DOTS}/tinyxml_${TINYXML_VERSION}.tar.gz)
|
|
||||||
set(TINYXML_HASH c1b864c96804a10526540c664ade67f0)
|
|
||||||
set(TINYXML_HASH_TYPE MD5)
|
|
||||||
set(TINYXML_FILE tinyxml_${TINYXML_VERSION}.tar.gz)
|
|
||||||
set(TINYXML_CPE "cpe:2.3:a:tinyxml_project:tinyxml:${TINYXML_VERSION_DOTS}:*:*:*:*:*:*:*")
|
|
||||||
|
|
||||||
set(YAMLCPP_VERSION 0.6.3)
|
set(YAMLCPP_VERSION 0.6.3)
|
||||||
set(YAMLCPP_URI https://codeload.github.com/jbeder/yaml-cpp/tar.gz/yaml-cpp-${YAMLCPP_VERSION})
|
set(YAMLCPP_URI https://codeload.github.com/jbeder/yaml-cpp/tar.gz/yaml-cpp-${YAMLCPP_VERSION})
|
||||||
set(YAMLCPP_HASH b45bf1089a382e81f6b661062c10d0c2)
|
set(YAMLCPP_HASH b45bf1089a382e81f6b661062c10d0c2)
|
||||||
@@ -379,10 +372,10 @@ set(PYSTRING_HASH f2c68786b359f5e4e62bed53bc4fb86d)
|
|||||||
set(PYSTRING_HASH_TYPE MD5)
|
set(PYSTRING_HASH_TYPE MD5)
|
||||||
set(PYSTRING_FILE pystring-${PYSTRING_VERSION}.tar.gz)
|
set(PYSTRING_FILE pystring-${PYSTRING_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(EXPAT_VERSION 2_4_4)
|
set(EXPAT_VERSION 2_5_0)
|
||||||
set(EXPAT_VERSION_DOTS 2.4.4)
|
set(EXPAT_VERSION_DOTS 2.5.0)
|
||||||
set(EXPAT_URI https://github.com/libexpat/libexpat/archive/R_${EXPAT_VERSION}.tar.gz)
|
set(EXPAT_URI https://github.com/libexpat/libexpat/archive/R_${EXPAT_VERSION}.tar.gz)
|
||||||
set(EXPAT_HASH 2d3e81dee94b452369dc6394ff0f8f98)
|
set(EXPAT_HASH d375fa3571c0abb945873f5061a8f2e2)
|
||||||
set(EXPAT_HASH_TYPE MD5)
|
set(EXPAT_HASH_TYPE MD5)
|
||||||
set(EXPAT_FILE libexpat-${EXPAT_VERSION}.tar.gz)
|
set(EXPAT_FILE libexpat-${EXPAT_VERSION}.tar.gz)
|
||||||
set(EXPAT_CPE "cpe:2.3:a:libexpat_project:libexpat:${EXPAT_VERSION_DOTS}:*:*:*:*:*:*:*")
|
set(EXPAT_CPE "cpe:2.3:a:libexpat_project:libexpat:${EXPAT_VERSION_DOTS}:*:*:*:*:*:*:*")
|
||||||
@@ -410,6 +403,10 @@ set(FLEX_FILE flex-${FLEX_VERSION}.tar.gz)
|
|||||||
|
|
||||||
# NOTE: bzip.org domain does no longer belong to BZip 2 project, so we download
|
# NOTE: bzip.org domain does no longer belong to BZip 2 project, so we download
|
||||||
# sources from Debian packaging.
|
# sources from Debian packaging.
|
||||||
|
#
|
||||||
|
# NOTE 2: This will *HAVE* to match the version python ships on windows which
|
||||||
|
# is hardcoded in pythons PCbuild/get_externals.bat. For compliance reasons there
|
||||||
|
# can be no exceptions to this.
|
||||||
set(BZIP2_VERSION 1.0.8)
|
set(BZIP2_VERSION 1.0.8)
|
||||||
set(BZIP2_URI http://http.debian.net/debian/pool/main/b/bzip2/bzip2_${BZIP2_VERSION}.orig.tar.gz)
|
set(BZIP2_URI http://http.debian.net/debian/pool/main/b/bzip2/bzip2_${BZIP2_VERSION}.orig.tar.gz)
|
||||||
set(BZIP2_HASH ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269)
|
set(BZIP2_HASH ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269)
|
||||||
@@ -417,6 +414,9 @@ set(BZIP2_HASH_TYPE SHA256)
|
|||||||
set(BZIP2_FILE bzip2_${BZIP2_VERSION}.orig.tar.gz)
|
set(BZIP2_FILE bzip2_${BZIP2_VERSION}.orig.tar.gz)
|
||||||
set(BZIP2_CPE "cpe:2.3:a:bzip:bzip2:${BZIP2_VERSION}:*:*:*:*:*:*:*")
|
set(BZIP2_CPE "cpe:2.3:a:bzip:bzip2:${BZIP2_VERSION}:*:*:*:*:*:*:*")
|
||||||
|
|
||||||
|
# NOTE: This will *HAVE* to match the version python ships on windows which
|
||||||
|
# is hardcoded in pythons PCbuild/get_externals.bat. For compliance reasons there
|
||||||
|
# can be no exceptions to this.
|
||||||
set(FFI_VERSION 3.3)
|
set(FFI_VERSION 3.3)
|
||||||
set(FFI_URI https://sourceware.org/pub/libffi/libffi-${FFI_VERSION}.tar.gz)
|
set(FFI_URI https://sourceware.org/pub/libffi/libffi-${FFI_VERSION}.tar.gz)
|
||||||
set(FFI_HASH 72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056)
|
set(FFI_HASH 72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056)
|
||||||
@@ -430,27 +430,25 @@ set(LZMA_HASH 5117f930900b341493827d63aa910ff5e011e0b994197c3b71c08a20228a42df)
|
|||||||
set(LZMA_HASH_TYPE SHA256)
|
set(LZMA_HASH_TYPE SHA256)
|
||||||
set(LZMA_FILE xz-${LZMA_VERSION}.tar.bz2)
|
set(LZMA_FILE xz-${LZMA_VERSION}.tar.bz2)
|
||||||
|
|
||||||
if(BLENDER_PLATFORM_ARM)
|
# NOTE: This will *HAVE* to match the version python ships on windows which
|
||||||
# Need at least 1.1.1i for aarch64 support (https://github.com/openssl/openssl/pull/13218)
|
# is hardcoded in pythons PCbuild/get_externals.bat. For compliance reasons there
|
||||||
set(SSL_VERSION 1.1.1i)
|
# can be no exceptions to this.
|
||||||
|
set(SSL_VERSION 1.1.1q)
|
||||||
set(SSL_URI https://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz)
|
set(SSL_URI https://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz)
|
||||||
set(SSL_HASH e8be6a35fe41d10603c3cc635e93289ed00bf34b79671a3a4de64fcee00d5242)
|
set(SSL_HASH d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca)
|
||||||
set(SSL_HASH_TYPE SHA256)
|
set(SSL_HASH_TYPE SHA256)
|
||||||
set(SSL_FILE openssl-${SSL_VERSION}.tar.gz)
|
set(SSL_FILE openssl-${SSL_VERSION}.tar.gz)
|
||||||
else()
|
|
||||||
set(SSL_VERSION 1.1.1g)
|
|
||||||
set(SSL_URI https://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz)
|
|
||||||
set(SSL_HASH ddb04774f1e32f0c49751e21b67216ac87852ceb056b75209af2443400636d46)
|
|
||||||
set(SSL_HASH_TYPE SHA256)
|
|
||||||
set(SSL_FILE openssl-${SSL_VERSION}.tar.gz)
|
|
||||||
endif()
|
|
||||||
set(SSL_CPE "cpe:2.3:a:openssl:openssl:${SSL_VERSION}:*:*:*:*:*:*:*")
|
set(SSL_CPE "cpe:2.3:a:openssl:openssl:${SSL_VERSION}:*:*:*:*:*:*:*")
|
||||||
|
|
||||||
set(SQLITE_VERSION 3.31.1)
|
# Note: This will *HAVE* to match the version python ships on windows which
|
||||||
set(SQLITE_URI https://www.sqlite.org/2018/sqlite-src-3240000.zip)
|
# is hardcoded in pythons PCbuild/get_externals.bat for compliance reasons there
|
||||||
set(SQLITE_HASH fb558c49ee21a837713c4f1e7e413309aabdd9c7)
|
# can be no exceptions to this.
|
||||||
|
set(SQLITE_VERSION 3.37.2)
|
||||||
|
set(SQLLITE_LONG_VERSION 3370200)
|
||||||
|
set(SQLITE_URI https://www.sqlite.org/2022/sqlite-autoconf-${SQLLITE_LONG_VERSION}.tar.gz)
|
||||||
|
set(SQLITE_HASH e56faacadfb4154f8fbd0f2a3f827d13706b70a1)
|
||||||
set(SQLITE_HASH_TYPE SHA1)
|
set(SQLITE_HASH_TYPE SHA1)
|
||||||
set(SQLITE_FILE sqlite-src-3240000.zip)
|
set(SQLITE_FILE sqlite-autoconf-${SQLLITE_LONG_VERSION}.tar.gz)
|
||||||
set(SQLITE_CPE "cpe:2.3:a:sqlite:sqlite:${SQLITE_VERSION}:*:*:*:*:*:*:*")
|
set(SQLITE_CPE "cpe:2.3:a:sqlite:sqlite:${SQLITE_VERSION}:*:*:*:*:*:*:*")
|
||||||
|
|
||||||
set(EMBREE_VERSION 3.13.4)
|
set(EMBREE_VERSION 3.13.4)
|
||||||
@@ -561,22 +559,22 @@ set(BROTLI_HASH_TYPE SHA256)
|
|||||||
set(BROTLI_FILE brotli-v${BROTLI_VERSION}.tar.gz)
|
set(BROTLI_FILE brotli-v${BROTLI_VERSION}.tar.gz)
|
||||||
set(BROTLI_CPE "cpe:2.3:a:google:brotli:${BROTLI_VERSION}:*:*:*:*:*:*:*")
|
set(BROTLI_CPE "cpe:2.3:a:google:brotli:${BROTLI_VERSION}:*:*:*:*:*:*:*")
|
||||||
|
|
||||||
set(OPENPGL_VERSION v0.3.1-beta)
|
set(OPENPGL_VERSION v0.4.1-beta)
|
||||||
set(OPENPGL_SHORT_VERSION 0.3.1)
|
set(OPENPGL_SHORT_VERSION 0.4.1)
|
||||||
set(OPENPGL_URI https://github.com/OpenPathGuidingLibrary/openpgl/archive/refs/tags/${OPENPGL_VERSION}.tar.gz)
|
set(OPENPGL_URI https://github.com/OpenPathGuidingLibrary/openpgl/archive/refs/tags/${OPENPGL_VERSION}.tar.gz)
|
||||||
set(OPENPGL_HASH 3830098c485c962018932766199527aab453a8029528dbbc04d4454d82431e2c)
|
set(OPENPGL_HASH db63f5dac5cfa8c110ede241f0c413f00db0c4748697381c4fa23e0f9e82a754)
|
||||||
set(OPENPGL_HASH_TYPE SHA256)
|
set(OPENPGL_HASH_TYPE SHA256)
|
||||||
set(OPENPGL_FILE openpgl-${OPENPGL_VERSION}.tar.gz)
|
set(OPENPGL_FILE openpgl-${OPENPGL_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(LEVEL_ZERO_VERSION v1.7.15)
|
set(LEVEL_ZERO_VERSION v1.8.5)
|
||||||
set(LEVEL_ZERO_URI https://github.com/oneapi-src/level-zero/archive/refs/tags/${LEVEL_ZERO_VERSION}.tar.gz)
|
set(LEVEL_ZERO_URI https://github.com/oneapi-src/level-zero/archive/refs/tags/${LEVEL_ZERO_VERSION}.tar.gz)
|
||||||
set(LEVEL_ZERO_HASH c39bb05a8e5898aa6c444e1704105b93d3f1888b9c333f8e7e73825ffbfb2617)
|
set(LEVEL_ZERO_HASH b6e9663bbcc53c148d32376998298bec6f7c434ef2218c61fa708963e3a09394)
|
||||||
set(LEVEL_ZERO_HASH_TYPE SHA256)
|
set(LEVEL_ZERO_HASH_TYPE SHA256)
|
||||||
set(LEVEL_ZERO_FILE level-zero-${LEVEL_ZERO_VERSION}.tar.gz)
|
set(LEVEL_ZERO_FILE level-zero-${LEVEL_ZERO_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(DPCPP_VERSION 20220812)
|
set(DPCPP_VERSION 20221019)
|
||||||
set(DPCPP_URI https://github.com/intel/llvm/archive/refs/tags/sycl-nightly/${DPCPP_VERSION}.tar.gz)
|
set(DPCPP_URI https://github.com/intel/llvm/archive/refs/tags/sycl-nightly/${DPCPP_VERSION}.tar.gz)
|
||||||
set(DPCPP_HASH 0e3c95346c295f5cf80f3a42d80b1c49481955898530242636ddc002627248d6)
|
set(DPCPP_HASH 2f533946e91ce3829431758ea17b0b834b960c1a796e9e4563c86e03eb9603a2)
|
||||||
set(DPCPP_HASH_TYPE SHA256)
|
set(DPCPP_HASH_TYPE SHA256)
|
||||||
set(DPCPP_FILE DPCPP-${DPCPP_VERSION}.tar.gz)
|
set(DPCPP_FILE DPCPP-${DPCPP_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -589,9 +587,9 @@ set(DPCPP_FILE DPCPP-${DPCPP_VERSION}.tar.gz)
|
|||||||
# will take care of building them, unpack is being done in dpcpp_deps.cmake
|
# will take care of building them, unpack is being done in dpcpp_deps.cmake
|
||||||
|
|
||||||
# Source llvm/lib/SYCLLowerIR/CMakeLists.txt
|
# Source llvm/lib/SYCLLowerIR/CMakeLists.txt
|
||||||
set(VCINTRINSICS_VERSION 984bb27baacce6ee5c716c2e64845f2a1928025b)
|
set(VCINTRINSICS_VERSION abce9184b7a3a7fe1b02289b9285610d9dc45465)
|
||||||
set(VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/${VCINTRINSICS_VERSION}.tar.gz)
|
set(VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/${VCINTRINSICS_VERSION}.tar.gz)
|
||||||
set(VCINTRINSICS_HASH abea415a15a0dd11fdc94dee8fb462910f2548311b787e02f42509789e1b0d7b)
|
set(VCINTRINSICS_HASH 3e9fd471246b87633b26f7e15e17ab7733d357458c53d5c5881c03929d6c551f)
|
||||||
set(VCINTRINSICS_HASH_TYPE SHA256)
|
set(VCINTRINSICS_HASH_TYPE SHA256)
|
||||||
set(VCINTRINSICS_FILE vc-intrinsics-${VCINTRINSICS_VERSION}.tar.gz)
|
set(VCINTRINSICS_FILE vc-intrinsics-${VCINTRINSICS_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -603,9 +601,9 @@ set(OPENCLHEADERS_HASH_TYPE SHA256)
|
|||||||
set(OPENCLHEADERS_FILE opencl_headers-${OPENCLHEADERS_VERSION}.tar.gz)
|
set(OPENCLHEADERS_FILE opencl_headers-${OPENCLHEADERS_VERSION}.tar.gz)
|
||||||
|
|
||||||
# Source opencl/CMakeLists.txt
|
# Source opencl/CMakeLists.txt
|
||||||
set(ICDLOADER_VERSION aec3952654832211636fc4af613710f80e203b0a)
|
set(ICDLOADER_VERSION 792682ad3d877ab38573b997808bab3b43902b70)
|
||||||
set(ICDLOADER_URI https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/${ICDLOADER_VERSION}.tar.gz)
|
set(ICDLOADER_URI https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/${ICDLOADER_VERSION}.tar.gz)
|
||||||
set(ICDLOADER_HASH e1880551d67bd8dc31d13de63b94bbfd6b1f315b6145dad1ffcd159b89bda93c)
|
set(ICDLOADER_HASH b33a0320d94bf300efa1da97931ded506d27813bd1148da6858fe79d412d1ea2)
|
||||||
set(ICDLOADER_HASH_TYPE SHA256)
|
set(ICDLOADER_HASH_TYPE SHA256)
|
||||||
set(ICDLOADER_FILE icdloader-${ICDLOADER_VERSION}.tar.gz)
|
set(ICDLOADER_FILE icdloader-${ICDLOADER_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -620,9 +618,9 @@ set(MP11_FILE mp11-${MP11_VERSION}.tar.gz)
|
|||||||
|
|
||||||
# Source llvm-spirv/CMakeLists.txt (repo)
|
# Source llvm-spirv/CMakeLists.txt (repo)
|
||||||
# Source llvm-spirv/spirv-headers-tag.conf (hash)
|
# Source llvm-spirv/spirv-headers-tag.conf (hash)
|
||||||
set(SPIRV_HEADERS_VERSION 36c0c1596225e728bd49abb7ef56a3953e7ed468)
|
set(SPIRV_HEADERS_VERSION 5a121866927a16ab9d49bed4788b532c7fcea766)
|
||||||
set(SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/${SPIRV_HEADERS_VERSION}.tar.gz)
|
set(SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/${SPIRV_HEADERS_VERSION}.tar.gz)
|
||||||
set(SPIRV_HEADERS_HASH 7a5c89633f8740456fe8adee052033e134476d267411d1336c0cb1e587a9229a)
|
set(SPIRV_HEADERS_HASH ec8ecb471a62672697846c436501638ab25447ae9d4a6761e0bfe8a9a839502a)
|
||||||
set(SPIRV_HEADERS_HASH_TYPE SHA256)
|
set(SPIRV_HEADERS_HASH_TYPE SHA256)
|
||||||
set(SPIRV_HEADERS_FILE SPIR-V-Headers-${SPIRV_HEADERS_VERSION}.tar.gz)
|
set(SPIRV_HEADERS_FILE SPIR-V-Headers-${SPIRV_HEADERS_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -637,9 +635,9 @@ set(SPIRV_HEADERS_FILE SPIR-V-Headers-${SPIRV_HEADERS_VERSION}.tar.gz)
|
|||||||
# compiler, the versions used are taken from the following location
|
# compiler, the versions used are taken from the following location
|
||||||
# https://github.com/intel/intel-graphics-compiler/releases
|
# https://github.com/intel/intel-graphics-compiler/releases
|
||||||
|
|
||||||
set(IGC_VERSION 1.0.11222)
|
set(IGC_VERSION 1.0.12149.1)
|
||||||
set(IGC_URI https://github.com/intel/intel-graphics-compiler/archive/refs/tags/igc-${IGC_VERSION}.tar.gz)
|
set(IGC_URI https://github.com/intel/intel-graphics-compiler/archive/refs/tags/igc-${IGC_VERSION}.tar.gz)
|
||||||
set(IGC_HASH d92f0608dcbb52690855685f9447282e5c09c0ba98ae35fabf114fcf8b1e9fcf)
|
set(IGC_HASH 44f67f24e3bc5130f9f062533abf8154782a9d0a992bc19b498639a8521ae836)
|
||||||
set(IGC_HASH_TYPE SHA256)
|
set(IGC_HASH_TYPE SHA256)
|
||||||
set(IGC_FILE igc-${IGC_VERSION}.tar.gz)
|
set(IGC_FILE igc-${IGC_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -659,15 +657,15 @@ set(IGC_LLVM_FILE ${IGC_LLVM_VERSION}.tar.gz)
|
|||||||
#
|
#
|
||||||
# WARNING WARNING WARNING
|
# WARNING WARNING WARNING
|
||||||
|
|
||||||
set(IGC_OPENCL_CLANG_VERSION bbdd1587f577397a105c900be114b56755d1f7dc)
|
set(IGC_OPENCL_CLANG_VERSION 363a5262d8c7cff3fb28f3bdb5d85c8d7e91c1bb)
|
||||||
set(IGC_OPENCL_CLANG_URI https://github.com/intel/opencl-clang/archive/${IGC_OPENCL_CLANG_VERSION}.tar.gz)
|
set(IGC_OPENCL_CLANG_URI https://github.com/intel/opencl-clang/archive/${IGC_OPENCL_CLANG_VERSION}.tar.gz)
|
||||||
set(IGC_OPENCL_CLANG_HASH d08315f1b0d8a6fef33de2b3e6aa7356534c324910634962c72523d970773efc)
|
set(IGC_OPENCL_CLANG_HASH aa8cf72bb239722ce8ce44f79413c6887ecc8ca18477dd520aa5c4809756da9a)
|
||||||
set(IGC_OPENCL_CLANG_HASH_TYPE SHA256)
|
set(IGC_OPENCL_CLANG_HASH_TYPE SHA256)
|
||||||
set(IGC_OPENCL_CLANG_FILE opencl-clang-${IGC_OPENCL_CLANG_VERSION}.tar.gz)
|
set(IGC_OPENCL_CLANG_FILE opencl-clang-${IGC_OPENCL_CLANG_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(IGC_VCINTRINSICS_VERSION v0.4.0)
|
set(IGC_VCINTRINSICS_VERSION v0.5.0)
|
||||||
set(IGC_VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/refs/tags/${IGC_VCINTRINSICS_VERSION}.tar.gz)
|
set(IGC_VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/refs/tags/${IGC_VCINTRINSICS_VERSION}.tar.gz)
|
||||||
set(IGC_VCINTRINSICS_HASH c8b92682ad5031cf9d5b82a40e7d5c0e763cd9278660adbcaa69aab988e4b589)
|
set(IGC_VCINTRINSICS_HASH 70bb47c5e32173cf61514941e83ae7c7eb4485e6d2fca60cfa1f50d4f42c41f2)
|
||||||
set(IGC_VCINTRINSICS_HASH_TYPE SHA256)
|
set(IGC_VCINTRINSICS_HASH_TYPE SHA256)
|
||||||
set(IGC_VCINTRINSICS_FILE vc-intrinsics-${IGC_VCINTRINSICS_VERSION}.tar.gz)
|
set(IGC_VCINTRINSICS_FILE vc-intrinsics-${IGC_VCINTRINSICS_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -683,9 +681,9 @@ set(IGC_SPIRV_TOOLS_HASH 6e19900e948944243024aedd0a201baf3854b377b9cc7a386553bc1
|
|||||||
set(IGC_SPIRV_TOOLS_HASH_TYPE SHA256)
|
set(IGC_SPIRV_TOOLS_HASH_TYPE SHA256)
|
||||||
set(IGC_SPIRV_TOOLS_FILE SPIR-V-Tools-${IGC_SPIRV_TOOLS_VERSION}.tar.gz)
|
set(IGC_SPIRV_TOOLS_FILE SPIR-V-Tools-${IGC_SPIRV_TOOLS_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(IGC_SPIRV_TRANSLATOR_VERSION 99420daab98998a7e36858befac9c5ed109d4920)
|
set(IGC_SPIRV_TRANSLATOR_VERSION a31ffaeef77e23d500b3ea3d35e0c42ff5648ad9)
|
||||||
set(IGC_SPIRV_TRANSLATOR_URI https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/${IGC_SPIRV_TRANSLATOR_VERSION}.tar.gz)
|
set(IGC_SPIRV_TRANSLATOR_URI https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/${IGC_SPIRV_TRANSLATOR_VERSION}.tar.gz)
|
||||||
set(IGC_SPIRV_TRANSLATOR_HASH 77dfb4ddb6bfb993535562c02ddea23f0a0d1c5a0258c1afe7e27c894ff783a8)
|
set(IGC_SPIRV_TRANSLATOR_HASH 9e26c96a45341b8f8af521bacea20e752623346340addd02af95d669f6e89252)
|
||||||
set(IGC_SPIRV_TRANSLATOR_HASH_TYPE SHA256)
|
set(IGC_SPIRV_TRANSLATOR_HASH_TYPE SHA256)
|
||||||
set(IGC_SPIRV_TRANSLATOR_FILE SPIR-V-Translator-${IGC_SPIRV_TRANSLATOR_VERSION}.tar.gz)
|
set(IGC_SPIRV_TRANSLATOR_FILE SPIR-V-Translator-${IGC_SPIRV_TRANSLATOR_VERSION}.tar.gz)
|
||||||
|
|
||||||
@@ -693,15 +691,15 @@ set(IGC_SPIRV_TRANSLATOR_FILE SPIR-V-Translator-${IGC_SPIRV_TRANSLATOR_VERSION}.
|
|||||||
### Intel Graphics Compiler DEPS END ###
|
### Intel Graphics Compiler DEPS END ###
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
set(GMMLIB_VERSION intel-gmmlib-22.1.2)
|
set(GMMLIB_VERSION intel-gmmlib-22.1.8)
|
||||||
set(GMMLIB_URI https://github.com/intel/gmmlib/archive/refs/tags/${GMMLIB_VERSION}.tar.gz)
|
set(GMMLIB_URI https://github.com/intel/gmmlib/archive/refs/tags/${GMMLIB_VERSION}.tar.gz)
|
||||||
set(GMMLIB_HASH 3b9a6d5e7e3f5748b3d0a2fb0e980ae943907fece0980bd9c0508e71c838e334)
|
set(GMMLIB_HASH bf23e9a3742b4fb98c7666c9e9b29f3219e4b2fb4d831aaf4eed71f5e2d17368)
|
||||||
set(GMMLIB_HASH_TYPE SHA256)
|
set(GMMLIB_HASH_TYPE SHA256)
|
||||||
set(GMMLIB_FILE ${GMMLIB_VERSION}.tar.gz)
|
set(GMMLIB_FILE ${GMMLIB_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(OCLOC_VERSION 22.20.23198)
|
set(OCLOC_VERSION 22.38.24278)
|
||||||
set(OCLOC_URI https://github.com/intel/compute-runtime/archive/refs/tags/${OCLOC_VERSION}.tar.gz)
|
set(OCLOC_URI https://github.com/intel/compute-runtime/archive/refs/tags/${OCLOC_VERSION}.tar.gz)
|
||||||
set(OCLOC_HASH ab22b8bf2560a57fdd3def0e35a62ca75991406f959c0263abb00cd6cd9ae998)
|
set(OCLOC_HASH db0c542fccd651e6404b15a74d46027f1ce0eda8dc9e25a40cbb6c0faef257ee)
|
||||||
set(OCLOC_HASH_TYPE SHA256)
|
set(OCLOC_HASH_TYPE SHA256)
|
||||||
set(OCLOC_FILE ocloc-${OCLOC_VERSION}.tar.gz)
|
set(OCLOC_FILE ocloc-${OCLOC_VERSION}.tar.gz)
|
||||||
|
|
||||||
|
@@ -7,10 +7,14 @@ ExternalProject_Add(external_wayland
|
|||||||
PREFIX ${BUILD_DIR}/wayland
|
PREFIX ${BUILD_DIR}/wayland
|
||||||
PATCH_COMMAND ${PATCH_CMD} -d ${BUILD_DIR}/wayland/src/external_wayland < ${PATCH_DIR}/wayland.diff
|
PATCH_COMMAND ${PATCH_CMD} -d ${BUILD_DIR}/wayland/src/external_wayland < ${PATCH_DIR}/wayland.diff
|
||||||
# Use `-E` so the `PKG_CONFIG_PATH` can be defined to link against our own LIBEXPAT & LIBXML2.
|
# Use `-E` so the `PKG_CONFIG_PATH` can be defined to link against our own LIBEXPAT & LIBXML2.
|
||||||
# Note that passing link args "ffi/lib" should not be needed, but
|
#
|
||||||
|
# NOTE: passing link args "ffi/lib" should not be needed, but
|
||||||
# `pkgconfig` would incorrectly look in "ffi/lib/../lib64" otherwise.
|
# `pkgconfig` would incorrectly look in "ffi/lib/../lib64" otherwise.
|
||||||
|
#
|
||||||
|
# NOTE: `-lm` is needed for `libxml2` which is a static library that uses `libm.so`,
|
||||||
|
# without this, math symbols such as `floor` aren't found.
|
||||||
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${LIBDIR}/expat/lib/pkgconfig:${LIBDIR}/xml2/lib/pkgconfig:${LIBDIR}/ffi/lib/pkgconfig:$PKG_CONFIG_PATH
|
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${LIBDIR}/expat/lib/pkgconfig:${LIBDIR}/xml2/lib/pkgconfig:${LIBDIR}/ffi/lib/pkgconfig:$PKG_CONFIG_PATH
|
||||||
meson --prefix ${LIBDIR}/wayland -Ddocumentation=false -Dtests=false -Dc_link_args=-L${LIBDIR}/ffi/lib . ../external_wayland
|
meson --prefix ${LIBDIR}/wayland -Ddocumentation=false -Dtests=false -D "c_link_args=-L${LIBDIR}/ffi/lib -lm" . ../external_wayland
|
||||||
BUILD_COMMAND ninja
|
BUILD_COMMAND ninja
|
||||||
INSTALL_COMMAND ninja install
|
INSTALL_COMMAND ninja install
|
||||||
)
|
)
|
||||||
|
@@ -5,7 +5,14 @@ ExternalProject_Add(external_wayland_protocols
|
|||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
URL_HASH ${WL_PROTOCOLS_HASH_TYPE}=${WL_PROTOCOLS_HASH}
|
URL_HASH ${WL_PROTOCOLS_HASH_TYPE}=${WL_PROTOCOLS_HASH}
|
||||||
PREFIX ${BUILD_DIR}/wayland-protocols
|
PREFIX ${BUILD_DIR}/wayland-protocols
|
||||||
CONFIGURE_COMMAND meson --prefix ${LIBDIR}/wayland-protocols . ../external_wayland_protocols -Dtests=false
|
# Use `-E` so the `PKG_CONFIG_PATH` can be defined to link against our own WAYLAND.
|
||||||
|
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${LIBDIR}/wayland/lib64/pkgconfig:$PKG_CONFIG_PATH
|
||||||
|
meson --prefix ${LIBDIR}/wayland-protocols . ../external_wayland_protocols -Dtests=false
|
||||||
BUILD_COMMAND ninja
|
BUILD_COMMAND ninja
|
||||||
INSTALL_COMMAND ninja install
|
INSTALL_COMMAND ninja install
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_dependencies(
|
||||||
|
external_wayland_protocols
|
||||||
|
external_wayland
|
||||||
|
)
|
||||||
|
@@ -1,5 +1,24 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set(XML2_EXTRA_ARGS
|
||||||
|
-DLIBXML2_WITH_ZLIB=OFF
|
||||||
|
-DLIBXML2_WITH_LZMA=OFF
|
||||||
|
-DLIBXML2_WITH_PYTHON=OFF
|
||||||
|
-DLIBXML2_WITH_ICONV=OFF
|
||||||
|
-DLIBXML2_WITH_TESTS=OFF
|
||||||
|
-DLIBXML2_WITH_PROGRAMS=OFF
|
||||||
|
-DBUILD_SHARED_LIBS=OFF
|
||||||
|
)
|
||||||
|
ExternalProject_Add(external_xml2
|
||||||
|
URL file://${PACKAGE_DIR}/${XML2_FILE}
|
||||||
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
|
URL_HASH ${XML2_HASH_TYPE}=${XML2_HASH}
|
||||||
|
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/xml2 ${DEFAULT_CMAKE_FLAGS} ${XML2_EXTRA_ARGS}
|
||||||
|
PREFIX ${BUILD_DIR}/xml2
|
||||||
|
INSTALL_DIR ${LIBDIR}/xml2
|
||||||
|
)
|
||||||
|
else()
|
||||||
ExternalProject_Add(external_xml2
|
ExternalProject_Add(external_xml2
|
||||||
URL file://${PACKAGE_DIR}/${XML2_FILE}
|
URL file://${PACKAGE_DIR}/${XML2_FILE}
|
||||||
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
DOWNLOAD_DIR ${DOWNLOAD_DIR}
|
||||||
@@ -18,3 +37,12 @@ ExternalProject_Add(external_xml2
|
|||||||
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/xml2/src/external_xml2/ && make install
|
INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/xml2/src/external_xml2/ && make install
|
||||||
INSTALL_DIR ${LIBDIR}/xml2
|
INSTALL_DIR ${LIBDIR}/xml2
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32 AND BUILD_MODE STREQUAL Release)
|
||||||
|
ExternalProject_Add_Step(external_xml2 after_install
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/xml2/include ${HARVEST_TARGET}/xml2/include
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/xml2/lib/libxml2s.lib ${HARVEST_TARGET}/xml2/lib/libxml2s.lib
|
||||||
|
DEPENDEES install
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
@@ -1,96 +1,114 @@
|
|||||||
strict graph {
|
strict graph {
|
||||||
graph[autosize = false, size = "25.7,8.3!", resolution = 300, overlap = false, splines = false, outputorder=edgesfirst ];
|
graph[autosize = false, size = "25.7,8.3!", resolution = 300];
|
||||||
node [style=filled fillcolor=white];
|
|
||||||
external_alembic -- external_boost;
|
|
||||||
external_alembic -- external_zlib;
|
|
||||||
external_alembic -- external_openexr;
|
external_alembic -- external_openexr;
|
||||||
|
external_alembic -- external_imath;
|
||||||
external_blosc -- external_zlib;
|
external_blosc -- external_zlib;
|
||||||
external_blosc -- external_pthreads;
|
external_blosc -- external_pthreads;
|
||||||
external_boost -- Make_Python_Environment;
|
external_boost -- external_python;
|
||||||
external_clang -- ll;
|
external_boost -- external_numpy;
|
||||||
|
external_dpcpp -- external_python;
|
||||||
|
external_dpcpp -- external_python_site_packages;
|
||||||
|
external_dpcpp -- external_vcintrinsics;
|
||||||
|
external_dpcpp -- external_openclheaders;
|
||||||
|
external_dpcpp -- external_icdloader;
|
||||||
|
external_dpcpp -- external_mp11;
|
||||||
|
external_dpcpp -- external_level_zero;
|
||||||
|
external_dpcpp -- external_spirvheaders;
|
||||||
|
external_embree -- external_tbb;
|
||||||
external_ffmpeg -- external_zlib;
|
external_ffmpeg -- external_zlib;
|
||||||
external_ffmpeg -- external_faad;
|
|
||||||
external_ffmpeg -- external_openjpeg;
|
external_ffmpeg -- external_openjpeg;
|
||||||
external_ffmpeg -- external_xvidcore;
|
external_ffmpeg -- external_xvidcore;
|
||||||
external_ffmpeg -- external_x264;
|
external_ffmpeg -- external_x264;
|
||||||
|
external_ffmpeg -- external_opus;
|
||||||
external_ffmpeg -- external_vpx;
|
external_ffmpeg -- external_vpx;
|
||||||
external_ffmpeg -- external_theora;
|
external_ffmpeg -- external_theora;
|
||||||
external_ffmpeg -- external_vorbis;
|
external_ffmpeg -- external_vorbis;
|
||||||
external_ffmpeg -- external_ogg;
|
external_ffmpeg -- external_ogg;
|
||||||
external_ffmpeg -- external_lame;
|
external_ffmpeg -- external_lame;
|
||||||
|
external_ffmpeg -- external_aom;
|
||||||
external_ffmpeg -- external_zlib_mingw;
|
external_ffmpeg -- external_zlib_mingw;
|
||||||
external_numpy -- Make_Python_Environment;
|
external_ffmpeg -- external_nasm;
|
||||||
|
external_freetype -- external_brotli;
|
||||||
|
external_freetype -- external_zlib;
|
||||||
|
external_gmpxx -- external_gmp;
|
||||||
|
external_igc_llvm -- external_igc_opencl_clang;
|
||||||
|
external_igc_spirv_translator -- external_igc_opencl_clang;
|
||||||
|
external_igc -- external_igc_vcintrinsics;
|
||||||
|
external_igc -- external_igc_llvm;
|
||||||
|
external_igc -- external_igc_opencl_clang;
|
||||||
|
external_igc -- external_igc_vcintrinsics;
|
||||||
|
external_igc -- external_igc_spirv_headers;
|
||||||
|
external_igc -- external_igc_spirv_tools;
|
||||||
|
external_igc -- external_igc_spirv_translator;
|
||||||
|
external_igc -- external_flex;
|
||||||
|
external_ispc -- ll;
|
||||||
|
external_ispc -- external_python;
|
||||||
|
external_ispc -- external_flexbison;
|
||||||
|
external_ispc -- external_flex;
|
||||||
|
ll -- external_xml2;
|
||||||
|
ll -- external_python;
|
||||||
|
external_mesa -- ll;
|
||||||
|
external_numpy -- external_python;
|
||||||
|
external_numpy -- external_python_site_packages;
|
||||||
|
external_ocloc -- external_igc;
|
||||||
|
external_ocloc -- external_gmmlib;
|
||||||
external_opencollada -- external_xml2;
|
external_opencollada -- external_xml2;
|
||||||
external_opencolorio -- external_boost;
|
|
||||||
external_opencolorio -- external_tinyxml;
|
|
||||||
external_opencolorio -- external_yamlcpp;
|
external_opencolorio -- external_yamlcpp;
|
||||||
|
external_opencolorio -- external_expat;
|
||||||
|
external_opencolorio -- external_imath;
|
||||||
|
external_opencolorio -- external_pystring;
|
||||||
external_openexr -- external_zlib;
|
external_openexr -- external_zlib;
|
||||||
|
external_openimagedenoise -- external_tbb;
|
||||||
|
external_openimagedenoise -- external_ispc;
|
||||||
|
external_openimagedenoise -- external_python;
|
||||||
external_openimageio -- external_png;
|
external_openimageio -- external_png;
|
||||||
external_openimageio -- external_zlib;
|
external_openimageio -- external_zlib;
|
||||||
external_openimageio -- external_openexr;
|
external_openimageio -- external_openexr;
|
||||||
external_openimageio -- external_openexr;
|
external_openimageio -- external_imath;
|
||||||
external_openimageio -- external_jpeg;
|
external_openimageio -- external_jpeg;
|
||||||
external_openimageio -- external_boost;
|
external_openimageio -- external_boost;
|
||||||
external_openimageio -- external_tiff;
|
external_openimageio -- external_tiff;
|
||||||
external_openimageio -- external_opencolorio;
|
external_openimageio -- external_pugixml;
|
||||||
|
external_openimageio -- external_fmt;
|
||||||
|
external_openimageio -- external_robinmap;
|
||||||
external_openimageio -- external_openjpeg;
|
external_openimageio -- external_openjpeg;
|
||||||
external_openimageio -- external_webp;
|
external_openimageio -- external_webp;
|
||||||
external_openimageio -- external_opencolorio_extra;
|
external_openmp -- ll;
|
||||||
external_openmp -- external_clang;
|
external_openpgl -- external_tbb;
|
||||||
external_opensubdiv -- external_tbb;
|
external_opensubdiv -- external_tbb;
|
||||||
openvdb -- external_tbb;
|
openvdb -- external_tbb;
|
||||||
openvdb -- external_boost;
|
openvdb -- external_boost;
|
||||||
openvdb -- external_openexr;
|
|
||||||
openvdb -- external_openexr;
|
|
||||||
openvdb -- external_zlib;
|
openvdb -- external_zlib;
|
||||||
openvdb -- external_blosc;
|
openvdb -- external_blosc;
|
||||||
external_osl -- external_boost;
|
external_osl -- external_boost;
|
||||||
external_osl -- ll;
|
external_osl -- ll;
|
||||||
external_osl -- external_clang;
|
|
||||||
external_osl -- external_openexr;
|
|
||||||
external_osl -- external_openexr;
|
external_osl -- external_openexr;
|
||||||
external_osl -- external_zlib;
|
external_osl -- external_zlib;
|
||||||
external_osl -- external_flexbison;
|
|
||||||
external_osl -- external_openimageio;
|
external_osl -- external_openimageio;
|
||||||
external_osl -- external_pugixml;
|
external_osl -- external_pugixml;
|
||||||
|
external_osl -- external_flexbison;
|
||||||
|
external_osl -- external_flex;
|
||||||
external_png -- external_zlib;
|
external_png -- external_zlib;
|
||||||
external_python_site_packages -- Make_Python_Environment;
|
external_python -- external_bzip2;
|
||||||
|
external_python -- external_ffi;
|
||||||
|
external_python -- external_lzma;
|
||||||
|
external_python -- external_ssl;
|
||||||
|
external_python -- external_sqlite;
|
||||||
|
external_python -- external_zlib;
|
||||||
|
external_python_site_packages -- external_python;
|
||||||
external_sndfile -- external_ogg;
|
external_sndfile -- external_ogg;
|
||||||
external_sndfile -- external_vorbis;
|
external_sndfile -- external_vorbis;
|
||||||
external_sndfile -- external_flac;
|
external_sndfile -- external_flac;
|
||||||
external_theora -- external_vorbis;
|
external_theora -- external_vorbis;
|
||||||
external_theora -- external_ogg;
|
external_theora -- external_ogg;
|
||||||
external_tiff -- external_zlib;
|
external_tiff -- external_zlib;
|
||||||
external_vorbis -- external_ogg;
|
|
||||||
blender-- external_ffmpeg;
|
|
||||||
blender-- external_alembic;
|
|
||||||
blender-- external_openjpeg;
|
|
||||||
blender-- external_opencolorio;
|
|
||||||
blender-- external_openexr;
|
|
||||||
blender-- external_opensubdiv;
|
|
||||||
blender-- openvdb;
|
|
||||||
blender-- external_osl;
|
|
||||||
blender-- external_boost;
|
|
||||||
blender-- external_jpeg;
|
|
||||||
blender-- external_png;
|
|
||||||
blender-- external_python;
|
|
||||||
blender-- external_sndfile;
|
|
||||||
blender-- external_iconv;
|
|
||||||
blender-- external_fftw3;
|
|
||||||
external_python-- external_python_site_packages;
|
|
||||||
external_python_site_packages-- requests;
|
|
||||||
external_python_site_packages-- idna;
|
|
||||||
external_python_site_packages-- chardet;
|
|
||||||
external_python_site_packages-- urllib3;
|
|
||||||
external_python_site_packages-- certifi;
|
|
||||||
external_python-- external_numpy;
|
|
||||||
external_usd-- external_boost;
|
|
||||||
external_usd -- external_tbb;
|
external_usd -- external_tbb;
|
||||||
blender-- external_opencollada;
|
external_usd -- external_boost;
|
||||||
blender-- external_sdl;
|
external_usd -- external_opensubdiv;
|
||||||
blender-- external_freetype;
|
external_vorbis -- external_ogg;
|
||||||
blender-- external_pthreads;
|
external_wayland -- external_expat;
|
||||||
blender-- external_zlib;
|
external_wayland -- external_xml2;
|
||||||
blender-- external_openal;
|
external_wayland -- external_ffi;
|
||||||
blender-- external_usd;
|
external_wayland_protocols -- external_wayland;
|
||||||
|
external_x264 -- external_nasm;
|
||||||
}
|
}
|
||||||
|
@@ -394,7 +394,7 @@ CLANG_FORMAT_VERSION="10.0"
|
|||||||
CLANG_FORMAT_VERSION_MIN="6.0"
|
CLANG_FORMAT_VERSION_MIN="6.0"
|
||||||
CLANG_FORMAT_VERSION_MEX="14.0"
|
CLANG_FORMAT_VERSION_MEX="14.0"
|
||||||
|
|
||||||
PYTHON_VERSION="3.10.2"
|
PYTHON_VERSION="3.10.8"
|
||||||
PYTHON_VERSION_SHORT="3.10"
|
PYTHON_VERSION_SHORT="3.10"
|
||||||
PYTHON_VERSION_MIN="3.10"
|
PYTHON_VERSION_MIN="3.10"
|
||||||
PYTHON_VERSION_MEX="3.12"
|
PYTHON_VERSION_MEX="3.12"
|
||||||
@@ -505,7 +505,7 @@ OPENEXR_FORCE_REBUILD=false
|
|||||||
OPENEXR_SKIP=false
|
OPENEXR_SKIP=false
|
||||||
_with_built_openexr=false
|
_with_built_openexr=false
|
||||||
|
|
||||||
OIIO_VERSION="2.3.13.0"
|
OIIO_VERSION="2.3.20.0"
|
||||||
OIIO_VERSION_SHORT="2.3"
|
OIIO_VERSION_SHORT="2.3"
|
||||||
OIIO_VERSION_MIN="2.1.12"
|
OIIO_VERSION_MIN="2.1.12"
|
||||||
OIIO_VERSION_MEX="2.4.0"
|
OIIO_VERSION_MEX="2.4.0"
|
||||||
@@ -523,8 +523,8 @@ LLVM_FORCE_REBUILD=false
|
|||||||
LLVM_SKIP=false
|
LLVM_SKIP=false
|
||||||
|
|
||||||
# OSL needs to be compiled for now!
|
# OSL needs to be compiled for now!
|
||||||
OSL_VERSION="1.11.17.0"
|
OSL_VERSION="1.12.6.2"
|
||||||
OSL_VERSION_SHORT="1.11"
|
OSL_VERSION_SHORT="1.12"
|
||||||
OSL_VERSION_MIN="1.11"
|
OSL_VERSION_MIN="1.11"
|
||||||
OSL_VERSION_MEX="2.0"
|
OSL_VERSION_MEX="2.0"
|
||||||
OSL_FORCE_BUILD=false
|
OSL_FORCE_BUILD=false
|
||||||
@@ -602,10 +602,10 @@ LEVEL_ZERO_FORCE_BUILD=false
|
|||||||
LEVEL_ZERO_FORCE_REBUILD=false
|
LEVEL_ZERO_FORCE_REBUILD=false
|
||||||
LEVEL_ZERO_SKIP=false
|
LEVEL_ZERO_SKIP=false
|
||||||
|
|
||||||
OPENPGL_VERSION="0.3.1"
|
OPENPGL_VERSION="0.4.0"
|
||||||
OPENPGL_VERSION_SHORT="0.3"
|
OPENPGL_VERSION_SHORT="0.4"
|
||||||
OPENPGL_VERSION_MIN="0.3.1"
|
OPENPGL_VERSION_MIN="0.3.1"
|
||||||
OPENPGL_VERSION_MEX="0.3.2"
|
OPENPGL_VERSION_MEX="0.5"
|
||||||
OPENPGL_FORCE_BUILD=false
|
OPENPGL_FORCE_BUILD=false
|
||||||
OPENPGL_FORCE_REBUILD=false
|
OPENPGL_FORCE_REBUILD=false
|
||||||
OPENPGL_SKIP=false
|
OPENPGL_SKIP=false
|
||||||
@@ -618,8 +618,8 @@ XR_OPENXR_FORCE_BUILD=false
|
|||||||
XR_OPENXR_FORCE_REBUILD=false
|
XR_OPENXR_FORCE_REBUILD=false
|
||||||
XR_OPENXR_SKIP=false
|
XR_OPENXR_SKIP=false
|
||||||
|
|
||||||
FFMPEG_VERSION="5.0"
|
FFMPEG_VERSION="5.1.2"
|
||||||
FFMPEG_VERSION_SHORT="5.0"
|
FFMPEG_VERSION_SHORT="5.1"
|
||||||
FFMPEG_VERSION_MIN="4.0"
|
FFMPEG_VERSION_MIN="4.0"
|
||||||
FFMPEG_VERSION_MEX="6.0"
|
FFMPEG_VERSION_MEX="6.0"
|
||||||
FFMPEG_FORCE_BUILD=false
|
FFMPEG_FORCE_BUILD=false
|
||||||
@@ -1139,7 +1139,7 @@ LLVM_SOURCE=( "$_LLVM_SOURCE_ROOT/llvm-$LLVM_VERSION.src.tar.xz" )
|
|||||||
LLVM_CLANG_SOURCE=( "$_LLVM_SOURCE_ROOT/clang-$LLVM_VERSION.src.tar.xz" "$_LLVM_SOURCE_ROOT/cfe-$LLVM_VERSION.src.tar.xz" )
|
LLVM_CLANG_SOURCE=( "$_LLVM_SOURCE_ROOT/clang-$LLVM_VERSION.src.tar.xz" "$_LLVM_SOURCE_ROOT/cfe-$LLVM_VERSION.src.tar.xz" )
|
||||||
|
|
||||||
OSL_USE_REPO=false
|
OSL_USE_REPO=false
|
||||||
OSL_SOURCE=( "https://github.com/imageworks/OpenShadingLanguage/archive/Release-$OSL_VERSION.tar.gz" )
|
OSL_SOURCE=( "https://github.com/imageworks/OpenShadingLanguage/archive/v$OSL_VERSION.tar.gz" )
|
||||||
#~ OSL_SOURCE_REPO=( "https://github.com/imageworks/OpenShadingLanguage.git" )
|
#~ OSL_SOURCE_REPO=( "https://github.com/imageworks/OpenShadingLanguage.git" )
|
||||||
#~ OSL_SOURCE_REPO_BRANCH="master"
|
#~ OSL_SOURCE_REPO_BRANCH="master"
|
||||||
#~ OSL_SOURCE_REPO_UID="85179714e1bc69cd25ecb6bb711c1a156685d395"
|
#~ OSL_SOURCE_REPO_UID="85179714e1bc69cd25ecb6bb711c1a156685d395"
|
||||||
@@ -1222,7 +1222,7 @@ Those libraries should be available as packages in all recent distributions (opt
|
|||||||
* Basics of dev environment (cmake, gcc, svn , git, ...).
|
* Basics of dev environment (cmake, gcc, svn , git, ...).
|
||||||
* libjpeg, libpng, libtiff, [openjpeg2], [libopenal].
|
* libjpeg, libpng, libtiff, [openjpeg2], [libopenal].
|
||||||
* libx11, libxcursor, libxi, libxrandr, libxinerama (and other libx... as needed).
|
* libx11, libxcursor, libxi, libxrandr, libxinerama (and other libx... as needed).
|
||||||
* libwayland-client0, libwayland-cursor0, libwayland-egl1, libxkbcommon0, libdbus-1-3, libegl1 (Wayland)
|
* libwayland-client0, libdecor, libwayland-cursor0, libwayland-egl1, libxkbcommon0, libdbus-1-3, libegl1 (Wayland)
|
||||||
* libsqlite3, libzstd, libbz2, libssl, libfftw3, libxml2, libtinyxml, yasm, libyaml-cpp, flex.
|
* libsqlite3, libzstd, libbz2, libssl, libfftw3, libxml2, libtinyxml, yasm, libyaml-cpp, flex.
|
||||||
* libsdl2, libepoxy, libpugixml, libpotrace, [libgmp], fontconfig, [libharu/libhpdf].\""
|
* libsdl2, libepoxy, libpugixml, libpotrace, [libgmp], fontconfig, [libharu/libhpdf].\""
|
||||||
|
|
||||||
@@ -4205,7 +4205,7 @@ install_DEB() {
|
|||||||
_packages="gawk cmake cmake-curses-gui build-essential libjpeg-dev libpng-dev libtiff-dev \
|
_packages="gawk cmake cmake-curses-gui build-essential libjpeg-dev libpng-dev libtiff-dev \
|
||||||
git libfreetype6-dev libfontconfig-dev libx11-dev flex bison libxxf86vm-dev \
|
git libfreetype6-dev libfontconfig-dev libx11-dev flex bison libxxf86vm-dev \
|
||||||
libxcursor-dev libxi-dev wget libsqlite3-dev libxrandr-dev libxinerama-dev \
|
libxcursor-dev libxi-dev wget libsqlite3-dev libxrandr-dev libxinerama-dev \
|
||||||
libwayland-dev wayland-protocols libegl-dev libxkbcommon-dev libdbus-1-dev linux-libc-dev \
|
libwayland-dev libdecor-0-dev wayland-protocols libegl-dev libxkbcommon-dev libdbus-1-dev linux-libc-dev \
|
||||||
libbz2-dev libncurses5-dev libssl-dev liblzma-dev libreadline-dev \
|
libbz2-dev libncurses5-dev libssl-dev liblzma-dev libreadline-dev \
|
||||||
libopenal-dev libepoxy-dev yasm \
|
libopenal-dev libepoxy-dev yasm \
|
||||||
libsdl2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev libjemalloc-dev \
|
libsdl2-dev libfftw3-dev patch bzip2 libxml2-dev libtinyxml-dev libjemalloc-dev \
|
||||||
@@ -4928,7 +4928,7 @@ install_RPM() {
|
|||||||
_packages="gcc gcc-c++ git make cmake tar bzip2 xz findutils flex bison fontconfig-devel \
|
_packages="gcc gcc-c++ git make cmake tar bzip2 xz findutils flex bison fontconfig-devel \
|
||||||
libtiff-devel libjpeg-devel libpng-devel sqlite-devel fftw-devel SDL2-devel \
|
libtiff-devel libjpeg-devel libpng-devel sqlite-devel fftw-devel SDL2-devel \
|
||||||
libX11-devel libXi-devel libXcursor-devel libXrandr-devel libXinerama-devel \
|
libX11-devel libXi-devel libXcursor-devel libXrandr-devel libXinerama-devel \
|
||||||
wayland-devel wayland-protocols-devel mesa-libEGL-devel libxkbcommon-devel dbus-devel kernel-headers \
|
wayland-devel libdecor-devel wayland-protocols-devel mesa-libEGL-devel libxkbcommon-devel dbus-devel kernel-headers \
|
||||||
wget ncurses-devel readline-devel $OPENJPEG_DEV openal-soft-devel \
|
wget ncurses-devel readline-devel $OPENJPEG_DEV openal-soft-devel \
|
||||||
libepoxy-devel yasm patch \
|
libepoxy-devel yasm patch \
|
||||||
libxml2-devel yaml-cpp-devel tinyxml-devel jemalloc-devel \
|
libxml2-devel yaml-cpp-devel tinyxml-devel jemalloc-devel \
|
||||||
@@ -5582,7 +5582,7 @@ install_ARCH() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
_packages="$BASE_DEVEL git cmake fontconfig flex \
|
_packages="$BASE_DEVEL git cmake fontconfig flex \
|
||||||
libxi libxcursor libxrandr libxinerama libepoxy libpng libtiff wget openal \
|
libxi libxcursor libxrandr libxinerama libepoxy libdecor libpng libtiff wget openal \
|
||||||
$OPENJPEG_DEV yasm sdl2 fftw \
|
$OPENJPEG_DEV yasm sdl2 fftw \
|
||||||
libxml2 yaml-cpp tinyxml python-requests jemalloc gmp potrace pugixml libharu \
|
libxml2 yaml-cpp tinyxml python-requests jemalloc gmp potrace pugixml libharu \
|
||||||
zstd pystring"
|
zstd pystring"
|
||||||
|
@@ -26,50 +26,79 @@ yum -y install centos-release-scl
|
|||||||
yum -y install devtoolset-9
|
yum -y install devtoolset-9
|
||||||
|
|
||||||
# Install packages needed for Blender's dependencies.
|
# Install packages needed for Blender's dependencies.
|
||||||
|
PACKAGES_FOR_LIBS=(
|
||||||
PACKAGES=(
|
# Used to checkout Blender's code.
|
||||||
git
|
git
|
||||||
|
# Used to checkout Blender's `../lib/` directory.
|
||||||
subversion
|
subversion
|
||||||
|
# Used to extract packages.
|
||||||
bzip2
|
bzip2
|
||||||
|
# Used to extract packages.
|
||||||
tar
|
tar
|
||||||
|
# Blender and some dependencies use `cmake`.
|
||||||
cmake3
|
cmake3
|
||||||
|
# Apply patches from Blender's: `./build_files/build_environment/patches`
|
||||||
patch
|
patch
|
||||||
|
# Use by `cmake` and `autoconf`.
|
||||||
make
|
make
|
||||||
|
|
||||||
|
# Required by: `external_nasm` which uses an `autoconf` build-system.
|
||||||
autoconf
|
autoconf
|
||||||
automake
|
automake
|
||||||
libtool
|
libtool
|
||||||
|
|
||||||
|
# Meta-build system used by various packages.
|
||||||
meson
|
meson
|
||||||
|
# Builds generated by meson use Ninja for the actual build.
|
||||||
ninja-build
|
ninja-build
|
||||||
|
|
||||||
|
# Required by Blender build option: `WITH_GHOST_X11`.
|
||||||
libXrandr-devel
|
libXrandr-devel
|
||||||
libXinerama-devel
|
libXinerama-devel
|
||||||
libXcursor-devel
|
libXcursor-devel
|
||||||
libXi-devel
|
libXi-devel
|
||||||
libX11-devel libXt-devel
|
libX11-devel
|
||||||
|
libXt-devel
|
||||||
|
|
||||||
|
# Required by Blender build option: `WITH_GHOST_WAYLAND`.
|
||||||
mesa-libEGL-devel
|
mesa-libEGL-devel
|
||||||
|
# Required by: Blender & `external_opensubdiv` (probably others).
|
||||||
mesa-libGL-devel
|
mesa-libGL-devel
|
||||||
mesa-libGLU-devel
|
mesa-libGLU-devel
|
||||||
|
|
||||||
|
# Required by: `external_ispc`.
|
||||||
zlib-devel
|
zlib-devel
|
||||||
|
# TODO: dependencies build without this, consider removal.
|
||||||
rubygem-asciidoctor
|
rubygem-asciidoctor
|
||||||
|
# TODO: dependencies build without this, consider removal.
|
||||||
wget
|
wget
|
||||||
|
# Required by: `external_sqlite` as a build-time dependency (needed for the `tclsh` command).
|
||||||
tcl
|
tcl
|
||||||
|
# Required by: `external_aom`.
|
||||||
|
# TODO: Blender is already building `external_nasm` which is listed as an alternative to `yasm`.
|
||||||
|
# Why are both needed?
|
||||||
yasm
|
yasm
|
||||||
|
|
||||||
|
# Required by: `meson` (Python based build system).
|
||||||
python36
|
python36
|
||||||
|
# Required by: `mako` (Python module used for building `external_mesa`)
|
||||||
python-setuptools
|
python-setuptools
|
||||||
|
|
||||||
|
# Required by: `external_igc` & `external_osl` as a build-time dependency.
|
||||||
bison
|
bison
|
||||||
|
# Required by: `external_osl` as a build-time dependency.
|
||||||
flex
|
flex
|
||||||
|
# TODO: dependencies build without this, consider removal.
|
||||||
ncurses-devel
|
ncurses-devel
|
||||||
|
|
||||||
wayland-devel
|
|
||||||
libwayland-client
|
|
||||||
libwayland-server
|
|
||||||
)
|
)
|
||||||
|
|
||||||
yum -y install -y ${PACKAGES[@]}
|
# Additional packages needed for building Blender.
|
||||||
|
PACKAGES_FOR_BLENDER=(
|
||||||
|
# Required by Blender build option: `WITH_GHOST_WAYLAND`.
|
||||||
|
libxkbcommon-devel
|
||||||
|
)
|
||||||
|
|
||||||
|
yum -y install -y ${PACKAGES_FOR_LIBS[@]} ${PACKAGES_FOR_BLENDER[@]}
|
||||||
|
|
||||||
# Dependencies for Mesa
|
# Dependencies for Mesa
|
||||||
yum -y install expat-devel
|
yum -y install expat-devel
|
||||||
|
18
build_files/build_environment/patches/aom.diff
Normal file
18
build_files/build_environment/patches/aom.diff
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
diff -Naur libaom-3.4.0/build/cmake/aom_configure.cmake external_aom/build/cmake/aom_configure.cmake
|
||||||
|
--- libaom-3.4.0/build/cmake/aom_configure.cmake 2022-06-17 11:46:18 -0600
|
||||||
|
+++ external_aom/build/cmake/aom_configure.cmake 2022-10-16 15:35:54 -0600
|
||||||
|
@@ -15,8 +15,12 @@
|
||||||
|
|
||||||
|
include(FindGit)
|
||||||
|
include(FindPerl)
|
||||||
|
-include(FindThreads)
|
||||||
|
-
|
||||||
|
+# Blender: This will drag in a dep on libwinpthreads which we prefer
|
||||||
|
+# not to have, aom will fallback on a native win32 thread wrapper
|
||||||
|
+# if pthreads are not found.
|
||||||
|
+if(NOT WIN32)
|
||||||
|
+ include(FindThreads)
|
||||||
|
+endif()
|
||||||
|
include("${AOM_ROOT}/build/cmake/aom_config_defaults.cmake")
|
||||||
|
include("${AOM_ROOT}/build/cmake/aom_experiment_deps.cmake")
|
||||||
|
include("${AOM_ROOT}/build/cmake/aom_optimization.cmake")
|
@@ -177,7 +177,8 @@ if(ILMBASE_INCLUDE_DIR)
|
|||||||
"\\1" XYZ ${ILMBASE_BUILD_SPECIFICATION})
|
"\\1" XYZ ${ILMBASE_BUILD_SPECIFICATION})
|
||||||
set("ILMBASE_VERSION" ${XYZ} CACHE STRING "Version of ILMBase lib")
|
set("ILMBASE_VERSION" ${XYZ} CACHE STRING "Version of ILMBase lib")
|
||||||
else()
|
else()
|
||||||
# Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though.
|
# Old versions (before 2.0?) do not have any version string,
|
||||||
|
# just assuming 2.0 should be fine though.
|
||||||
message(WARNING "Could not determine ILMBase library version, assuming 2.0.")
|
message(WARNING "Could not determine ILMBase library version, assuming 2.0.")
|
||||||
set("ILMBASE_VERSION" "2.0" CACHE STRING "Version of ILMBase lib")
|
set("ILMBASE_VERSION" "2.0" CACHE STRING "Version of ILMBase lib")
|
||||||
endif()
|
endif()
|
||||||
@@ -196,7 +197,12 @@ else()
|
|||||||
set(IlmBase_Libraries Half Iex Imath IlmThread)
|
set(IlmBase_Libraries Half Iex Imath IlmThread)
|
||||||
# else()
|
# else()
|
||||||
# string(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _ilmbase_libs_ver ${ILMBASE_VERSION})
|
# string(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _ilmbase_libs_ver ${ILMBASE_VERSION})
|
||||||
# set(IlmBase_Libraries Half Iex-${_ilmbase_libs_ver} Imath-${_ilmbase_libs_ver} IlmThread-${_ilmbase_libs_ver})
|
# set(IlmBase_Libraries
|
||||||
|
# Half
|
||||||
|
# Iex-${_ilmbase_libs_ver}
|
||||||
|
# Imath-${_ilmbase_libs_ver}
|
||||||
|
# IlmThread-${_ilmbase_libs_ver}
|
||||||
|
# )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
@@ -175,7 +175,8 @@ if(OPENEXR_INCLUDE_DIR)
|
|||||||
"\\1" XYZ ${OPENEXR_BUILD_SPECIFICATION})
|
"\\1" XYZ ${OPENEXR_BUILD_SPECIFICATION})
|
||||||
set("OPENEXR_VERSION" ${XYZ} CACHE STRING "Version of OpenEXR lib")
|
set("OPENEXR_VERSION" ${XYZ} CACHE STRING "Version of OpenEXR lib")
|
||||||
else()
|
else()
|
||||||
# Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though.
|
# Old versions (before 2.0?) do not have any version string,
|
||||||
|
# just assuming 2.0 should be fine though.
|
||||||
message(WARNING "Could not determine ILMBase library version, assuming 2.0.")
|
message(WARNING "Could not determine ILMBase library version, assuming 2.0.")
|
||||||
set("OPENEXR_VERSION" "2.0" CACHE STRING "Version of OpenEXR lib")
|
set("OPENEXR_VERSION" "2.0" CACHE STRING "Version of OpenEXR lib")
|
||||||
endif()
|
endif()
|
||||||
|
@@ -68,34 +68,18 @@
|
|||||||
+
|
+
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
--- a/libavcodec/rl.c
|
diff --git a/libavcodec/x86/simple_idct.asm b/libavcodec/x86/simple_idct.asm
|
||||||
+++ b/libavcodec/rl.c
|
index dcf0da6df121..982b2f0bbba1 100644
|
||||||
@@ -71,17 +71,19 @@
|
--- a/libavcodec/x86/simple_idct.asm
|
||||||
av_cold void ff_rl_init_vlc(RLTable *rl, unsigned static_size)
|
+++ b/libavcodec/x86/simple_idct.asm
|
||||||
{
|
@@ -25,9 +25,9 @@
|
||||||
int i, q;
|
|
||||||
- VLC_TYPE table[1500][2] = {{0}};
|
|
||||||
+ VLC_TYPE (*table)[2] = av_calloc(sizeof(VLC_TYPE), 1500 * 2);
|
|
||||||
VLC vlc = { .table = table, .table_allocated = static_size };
|
|
||||||
- av_assert0(static_size <= FF_ARRAY_ELEMS(table));
|
|
||||||
+ av_assert0(static_size < 1500);
|
|
||||||
init_vlc(&vlc, 9, rl->n + 1, &rl->table_vlc[0][1], 4, 2, &rl->table_vlc[0][0], 4, 2, INIT_VLC_USE_NEW_STATIC);
|
|
||||||
|
|
||||||
for (q = 0; q < 32; q++) {
|
%include "libavutil/x86/x86util.asm"
|
||||||
int qmul = q * 2;
|
|
||||||
int qadd = (q - 1) | 1;
|
|
||||||
|
|
||||||
- if (!rl->rl_vlc[q])
|
-%if ARCH_X86_32
|
||||||
+ if (!rl->rl_vlc[q]){
|
SECTION_RODATA
|
||||||
+ av_free(table);
|
|
||||||
return;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (q == 0) {
|
+%if ARCH_X86_32
|
||||||
qmul = 1;
|
cextern pb_80
|
||||||
@@ -113,4 +115,5 @@
|
|
||||||
rl->rl_vlc[q][i].run = run;
|
wm1010: dw 0, 0xffff, 0, 0xffff
|
||||||
}
|
|
||||||
}
|
|
||||||
+ av_free(table);
|
|
||||||
}
|
|
||||||
|
15
build_files/build_environment/patches/gmp.diff
Normal file
15
build_files/build_environment/patches/gmp.diff
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
--- a/mpz/inp_raw.c Tue Dec 22 23:49:51 2020 +0100
|
||||||
|
+++ b/mpz/inp_raw.c Thu Oct 21 19:06:49 2021 +0200
|
||||||
|
@@ -88,8 +88,11 @@
|
||||||
|
|
||||||
|
abs_csize = ABS (csize);
|
||||||
|
|
||||||
|
+ if (UNLIKELY (abs_csize > ~(mp_bitcnt_t) 0 / 8))
|
||||||
|
+ return 0; /* Bit size overflows */
|
||||||
|
+
|
||||||
|
/* round up to a multiple of limbs */
|
||||||
|
- abs_xsize = BITS_TO_LIMBS (abs_csize*8);
|
||||||
|
+ abs_xsize = BITS_TO_LIMBS ((mp_bitcnt_t) abs_csize * 8);
|
||||||
|
|
||||||
|
if (abs_xsize != 0)
|
||||||
|
{
|
@@ -130,3 +130,28 @@ index 715d903..24423ce 100644
|
|||||||
{
|
{
|
||||||
string id = node.attribute("id").value();
|
string id = node.attribute("id").value();
|
||||||
size_t line = node.line();
|
size_t line = node.line();
|
||||||
|
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -274,7 +274,7 @@
|
||||||
|
add_subdirectory(${EXTERNAL_LIBRARIES}/UTF)
|
||||||
|
add_subdirectory(common/libBuffer)
|
||||||
|
add_subdirectory(${EXTERNAL_LIBRARIES}/MathMLSolver)
|
||||||
|
-add_subdirectory(${EXTERNAL_LIBRARIES}/zlib)
|
||||||
|
+#add_subdirectory(${EXTERNAL_LIBRARIES}/zlib)
|
||||||
|
|
||||||
|
# building OpenCOLLADA libs
|
||||||
|
add_subdirectory(COLLADABaseUtils)
|
||||||
|
@@ -284,10 +284,10 @@
|
||||||
|
add_subdirectory(COLLADAStreamWriter)
|
||||||
|
|
||||||
|
# building COLLADAValidator app
|
||||||
|
-add_subdirectory(COLLADAValidator)
|
||||||
|
+#add_subdirectory(COLLADAValidator)
|
||||||
|
|
||||||
|
# DAE validator app
|
||||||
|
-add_subdirectory(DAEValidator)
|
||||||
|
+#add_subdirectory(DAEValidator)
|
||||||
|
|
||||||
|
# Library export
|
||||||
|
install(EXPORT LibraryExport DESTINATION ${OPENCOLLADA_INST_CMAKECONFIG} FILE OpenCOLLADATargets.cmake)
|
||||||
|
@@ -1,42 +1,7 @@
|
|||||||
diff -Naur OpenShadingLanguage-Release-1.9.9/src/include/OSL/llvm_util.h external_osl/src/include/OSL/llvm_util.h
|
diff -Naur OpenShadingLanguage-1.12.6.2/CMakeLists.txt external_osl/CMakeLists.txt
|
||||||
--- OpenShadingLanguage-Release-1.9.9/src/include/OSL/llvm_util.h 2018-05-01 16:39:02 -0600
|
--- OpenShadingLanguage-1.12.6.2/CMakeLists.txt 2022-09-30 17:43:53 -0600
|
||||||
+++ external_osl/src/include/OSL/llvm_util.h 2018-08-25 14:05:00 -0600
|
+++ external_osl/CMakeLists.txt 2022-10-15 14:49:26 -0600
|
||||||
@@ -33,6 +33,8 @@
|
@@ -101,6 +101,11 @@
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
+#define OSL_HAS_BLENDER_CLEANUP_FIX
|
|
||||||
+
|
|
||||||
#ifdef LLVM_NAMESPACE
|
|
||||||
namespace llvm = LLVM_NAMESPACE;
|
|
||||||
#endif
|
|
||||||
@@ -487,6 +489,7 @@
|
|
||||||
std::string func_name (llvm::Function *f);
|
|
||||||
|
|
||||||
static size_t total_jit_memory_held ();
|
|
||||||
+ static void Cleanup ();
|
|
||||||
|
|
||||||
private:
|
|
||||||
class MemoryManager;
|
|
||||||
diff -Naur OpenShadingLanguage-Release-1.9.9/src/liboslexec/llvm_util.cpp external_osl/src/liboslexec/llvm_util.cpp
|
|
||||||
--- OpenShadingLanguage-Release-1.9.9/src/liboslexec/llvm_util.cpp 2018-05-01 16:39:02 -0600
|
|
||||||
+++ external_osl/src/liboslexec/llvm_util.cpp 2018-08-25 14:04:27 -0600
|
|
||||||
@@ -140,7 +140,10 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
-
|
|
||||||
+void LLVM_Util::Cleanup ()
|
|
||||||
+{
|
|
||||||
+ if(jitmm_hold) jitmm_hold->clear();
|
|
||||||
+}
|
|
||||||
|
|
||||||
size_t
|
|
||||||
LLVM_Util::total_jit_memory_held ()
|
|
||||||
diff -Naur org/CMakeLists.txt external_osl/CMakeLists.txt
|
|
||||||
--- org/CMakeLists.txt 2020-12-01 12:37:15 -0700
|
|
||||||
+++ external_osl/CMakeLists.txt 2021-01-20 13:26:50 -0700
|
|
||||||
@@ -84,6 +84,11 @@
|
|
||||||
CACHE STRING "Directory where OptiX PTX files will be installed")
|
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 (CMAKE_DEBUG_POSTFIX "" CACHE STRING "Library naming postfix for Debug builds (e.g., '_debug')")
|
||||||
|
|
||||||
@@ -48,10 +13,10 @@ diff -Naur org/CMakeLists.txt external_osl/CMakeLists.txt
|
|||||||
|
|
||||||
set (OSL_NO_DEFAULT_TEXTURESYSTEM OFF CACHE BOOL "Do not use create a raw OIIO::TextureSystem")
|
set (OSL_NO_DEFAULT_TEXTURESYSTEM OFF CACHE BOOL "Do not use create a raw OIIO::TextureSystem")
|
||||||
if (OSL_NO_DEFAULT_TEXTURESYSTEM)
|
if (OSL_NO_DEFAULT_TEXTURESYSTEM)
|
||||||
diff -Naur external_osl_orig/src/cmake/externalpackages.cmake external_osl/src/cmake/externalpackages.cmake
|
diff -Naur OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake external_osl/src/cmake/externalpackages.cmake
|
||||||
--- external_osl_orig/src/cmake/externalpackages.cmake 2021-06-01 13:44:18 -0600
|
--- OpenShadingLanguage-1.12.6.2/src/cmake/externalpackages.cmake 2022-09-30 17:43:53 -0600
|
||||||
+++ external_osl/src/cmake/externalpackages.cmake 2021-06-28 07:44:32 -0600
|
+++ external_osl/src/cmake/externalpackages.cmake 2022-10-15 14:49:26 -0600
|
||||||
@@ -80,6 +80,7 @@
|
@@ -77,6 +77,7 @@
|
||||||
|
|
||||||
|
|
||||||
checked_find_package (ZLIB REQUIRED) # Needed by several packages
|
checked_find_package (ZLIB REQUIRED) # Needed by several packages
|
||||||
@@ -59,9 +24,30 @@ diff -Naur external_osl_orig/src/cmake/externalpackages.cmake external_osl/src/c
|
|||||||
|
|
||||||
# IlmBase & OpenEXR
|
# IlmBase & OpenEXR
|
||||||
checked_find_package (OpenEXR REQUIRED
|
checked_find_package (OpenEXR REQUIRED
|
||||||
diff -Naur external_osl_orig/src/liboslcomp/oslcomp.cpp external_osl/src/liboslcomp/oslcomp.cpp
|
diff -Naur OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h external_osl/src/include/OSL/llvm_util.h
|
||||||
--- external_osl_orig/src/liboslcomp/oslcomp.cpp 2021-06-01 13:44:18 -0600
|
--- OpenShadingLanguage-1.12.6.2/src/include/OSL/llvm_util.h 2022-09-30 17:43:53 -0600
|
||||||
+++ external_osl/src/liboslcomp/oslcomp.cpp 2021-06-28 09:11:06 -0600
|
+++ external_osl/src/include/OSL/llvm_util.h 2022-10-15 15:37:24 -0600
|
||||||
|
@@ -9,6 +9,8 @@
|
||||||
|
#include <unordered_set>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
+#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 @@
|
@@ -21,6 +21,13 @@
|
||||||
#if !defined(__STDC_CONSTANT_MACROS)
|
#if !defined(__STDC_CONSTANT_MACROS)
|
||||||
# define __STDC_CONSTANT_MACROS 1
|
# define __STDC_CONSTANT_MACROS 1
|
||||||
@@ -76,3 +62,50 @@ diff -Naur external_osl_orig/src/liboslcomp/oslcomp.cpp external_osl/src/liboslc
|
|||||||
#include <clang/Basic/TargetInfo.h>
|
#include <clang/Basic/TargetInfo.h>
|
||||||
#include <clang/Frontend/CompilerInstance.h>
|
#include <clang/Frontend/CompilerInstance.h>
|
||||||
#include <clang/Frontend/TextDiagnosticPrinter.h>
|
#include <clang/Frontend/TextDiagnosticPrinter.h>
|
||||||
|
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 <immintrin.h>
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include <OSL/oslconfig.h>
|
||||||
|
@@ -23,6 +22,8 @@ using std::countr_zero;
|
||||||
|
|
||||||
|
#elif OSL_INTEL_CLASSIC_COMPILER_VERSION
|
||||||
|
|
||||||
|
+#include <immintrin.h>
|
||||||
|
+
|
||||||
|
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); }
|
||||||
|
@@ -1,24 +0,0 @@
|
|||||||
diff -Naur orig/PCbuild/get_externals.bat Python-3.10.2/PCbuild/get_externals.bat
|
|
||||||
--- orig/PCbuild/get_externals.bat 2022-01-13 11:52:14 -0700
|
|
||||||
+++ Python-3.10.2/PCbuild/get_externals.bat 2022-08-17 11:24:42 -0600
|
|
||||||
@@ -51,7 +51,7 @@
|
|
||||||
echo.Fetching external libraries...
|
|
||||||
|
|
||||||
set libraries=
|
|
||||||
-set libraries=%libraries% bzip2-1.0.6
|
|
||||||
+set libraries=%libraries% bzip2-1.0.8
|
|
||||||
if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.3.0
|
|
||||||
if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-1.1.1m
|
|
||||||
set libraries=%libraries% sqlite-3.35.5.0
|
|
||||||
diff -Naur orig/PCbuild/python.props external_python/PCbuild/python.props
|
|
||||||
--- orig/PCbuild/python.props 2022-01-13 11:52:14 -0700
|
|
||||||
+++ external_python/PCbuild/python.props 2022-08-17 11:38:38 -0600
|
|
||||||
@@ -58,7 +58,7 @@
|
|
||||||
<ExternalsDir Condition="$(ExternalsDir) == ''">$([System.IO.Path]::GetFullPath(`$(PySourcePath)externals`))</ExternalsDir>
|
|
||||||
<ExternalsDir Condition="!HasTrailingSlash($(ExternalsDir))">$(ExternalsDir)\</ExternalsDir>
|
|
||||||
<sqlite3Dir>$(ExternalsDir)sqlite-3.35.5.0\</sqlite3Dir>
|
|
||||||
- <bz2Dir>$(ExternalsDir)bzip2-1.0.6\</bz2Dir>
|
|
||||||
+ <bz2Dir>$(ExternalsDir)bzip2-1.0.8\</bz2Dir>
|
|
||||||
<lzmaDir>$(ExternalsDir)xz-5.2.2\</lzmaDir>
|
|
||||||
<libffiDir>$(ExternalsDir)libffi-3.3.0\</libffiDir>
|
|
||||||
<libffiOutDir>$(ExternalsDir)libffi-3.3.0\$(ArchName)\</libffiOutDir>
|
|
@@ -1,42 +0,0 @@
|
|||||||
--- src/Makefile.in 2017-09-26 01:28:47.000000000 +0300
|
|
||||||
+++ src/Makefile.in 2017-09-26 01:19:06.000000000 +0300
|
|
||||||
@@ -513,7 +513,7 @@
|
|
||||||
libcommon_la_SOURCES = common.c file_io.c command.c pcm.c ulaw.c alaw.c \
|
|
||||||
float32.c double64.c ima_adpcm.c ms_adpcm.c gsm610.c dwvw.c vox_adpcm.c \
|
|
||||||
interleave.c strings.c dither.c cart.c broadcast.c audio_detect.c \
|
|
||||||
- ima_oki_adpcm.c ima_oki_adpcm.h alac.c chunk.c ogg.c chanmap.c \
|
|
||||||
+ ima_oki_adpcm.c ima_oki_adpcm.h alac.c chunk.c ogg.c chanmap.c \
|
|
||||||
windows.c id3.c $(WIN_VERSION_FILE)
|
|
||||||
|
|
||||||
|
|
||||||
@@ -719,10 +719,10 @@
|
|
||||||
$(AM_V_CCLD)$(LINK) $(GSM610_libgsm_la_OBJECTS) $(GSM610_libgsm_la_LIBADD) $(LIBS)
|
|
||||||
|
|
||||||
libcommon.la: $(libcommon_la_OBJECTS) $(libcommon_la_DEPENDENCIES) $(EXTRA_libcommon_la_DEPENDENCIES)
|
|
||||||
- $(AM_V_CCLD)$(LINK) $(libcommon_la_OBJECTS) $(libcommon_la_LIBADD) $(LIBS)
|
|
||||||
+ $(AM_V_CCLD)$(LINK) $(libcommon_la_OBJECTS) $(libcommon_la_LIBADD) $(LIBS) $(EXTERNAL_XIPH_LIBS)
|
|
||||||
|
|
||||||
libsndfile.la: $(libsndfile_la_OBJECTS) $(libsndfile_la_DEPENDENCIES) $(EXTRA_libsndfile_la_DEPENDENCIES)
|
|
||||||
- $(AM_V_CCLD)$(libsndfile_la_LINK) -rpath $(libdir) $(libsndfile_la_OBJECTS) $(libsndfile_la_LIBADD) $(LIBS)
|
|
||||||
+ $(AM_V_CCLD)$(libsndfile_la_LINK) -rpath $(libdir) $(libsndfile_la_OBJECTS) $(libsndfile_la_LIBADD) $(LIBS) $(EXTERNAL_XIPH_LIBS)
|
|
||||||
|
|
||||||
clean-checkPROGRAMS:
|
|
||||||
@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
|
|
||||||
@@ -924,7 +924,7 @@
|
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsndfile_la_CPPFLAGS) $(CPPFLAGS) $(libsndfile_la_CFLAGS) $(CFLAGS) -c -o libsndfile_la-dwd.lo `test -f 'dwd.c' || echo '$(srcdir)/'`dwd.c
|
|
||||||
|
|
||||||
libsndfile_la-flac.lo: flac.c
|
|
||||||
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsndfile_la_CPPFLAGS) $(CPPFLAGS) $(libsndfile_la_CFLAGS) $(CFLAGS) -MT libsndfile_la-flac.lo -MD -MP -MF $(DEPDIR)/libsndfile_la-flac.Tpo -c -o libsndfile_la-flac.lo `test -f 'flac.c' || echo '$(srcdir)/'`flac.c
|
|
||||||
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsndfile_la_CPPFLAGS) $(CPPFLAGS) $(libsndfile_la_CFLAGS) $(CFLAGS) $(EXTERNAL_XIPH_CFLAGS) -MT libsndfile_la-flac.lo -MD -MP -MF $(DEPDIR)/libsndfile_la-flac.Tpo -c -o libsndfile_la-flac.lo `test -f 'flac.c' || echo '$(srcdir)/'`flac.c
|
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsndfile_la-flac.Tpo $(DEPDIR)/libsndfile_la-flac.Plo
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='flac.c' object='libsndfile_la-flac.lo' libtool=yes @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
@@ -1092,7 +1092,7 @@
|
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsndfile_la_CPPFLAGS) $(CPPFLAGS) $(libsndfile_la_CFLAGS) $(CFLAGS) -c -o libsndfile_la-rf64.lo `test -f 'rf64.c' || echo '$(srcdir)/'`rf64.c
|
|
||||||
|
|
||||||
libsndfile_la-ogg_vorbis.lo: ogg_vorbis.c
|
|
||||||
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsndfile_la_CPPFLAGS) $(CPPFLAGS) $(libsndfile_la_CFLAGS) $(CFLAGS) -MT libsndfile_la-ogg_vorbis.lo -MD -MP -MF $(DEPDIR)/libsndfile_la-ogg_vorbis.Tpo -c -o libsndfile_la-ogg_vorbis.lo `test -f 'ogg_vorbis.c' || echo '$(srcdir)/'`ogg_vorbis.c
|
|
||||||
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsndfile_la_CPPFLAGS) $(CPPFLAGS) $(libsndfile_la_CFLAGS) $(CFLAGS) $(EXTERNAL_XIPH_CFLAGS) -MT libsndfile_la-ogg_vorbis.lo -MD -MP -MF $(DEPDIR)/libsndfile_la-ogg_vorbis.Tpo -c -o libsndfile_la-ogg_vorbis.lo `test -f 'ogg_vorbis.c' || echo '$(srcdir)/'`ogg_vorbis.c
|
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsndfile_la-ogg_vorbis.Tpo $(DEPDIR)/libsndfile_la-ogg_vorbis.Plo
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ogg_vorbis.c' object='libsndfile_la-ogg_vorbis.lo' libtool=yes @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
@@ -1,14 +0,0 @@
|
|||||||
Only in external_sqlite_orig: config.log
|
|
||||||
diff -ru external_sqlite_orig/config.sub external_sqlite/config.sub
|
|
||||||
--- external_sqlite_orig/config.sub 2020-07-10 14:06:42.000000000 +0200
|
|
||||||
+++ external_sqlite/config.sub 2020-07-10 14:10:24.000000000 +0200
|
|
||||||
@@ -314,6 +314,7 @@
|
|
||||||
# Recognize the basic CPU types with company name.
|
|
||||||
580-* \
|
|
||||||
| a29k-* \
|
|
||||||
+ | aarch64-* \
|
|
||||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
|
||||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
|
||||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
|
||||||
Only in external_sqlite: mksourceid
|
|
||||||
Only in external_sqlite: sqlite3session.h
|
|
10
build_files/build_environment/patches/ssl.diff
Normal file
10
build_files/build_environment/patches/ssl.diff
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
--- ./test/v3ext.c 2022-07-05 11:08:33.000000000 +0200
|
||||||
|
+++ ./test/v3ext.c 2022-10-18 13:58:05.000000000 +0200
|
||||||
|
@@ -8,6 +8,7 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
+#include <string.h>
|
||||||
|
#include <openssl/x509.h>
|
||||||
|
#include <openssl/x509v3.h>
|
||||||
|
#include <openssl/pem.h>
|
@@ -20,6 +20,7 @@ IF(NOT OSL_ROOT_DIR AND NOT $ENV{OSL_ROOT_DIR} STREQUAL "")
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
SET(_osl_FIND_COMPONENTS
|
SET(_osl_FIND_COMPONENTS
|
||||||
|
oslnoise
|
||||||
oslcomp
|
oslcomp
|
||||||
oslexec
|
oslexec
|
||||||
oslquery
|
oslquery
|
||||||
@@ -39,7 +40,6 @@ FIND_PATH(OSL_INCLUDE_DIR
|
|||||||
include
|
include
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(_osl_LIBRARIES)
|
|
||||||
FOREACH(COMPONENT ${_osl_FIND_COMPONENTS})
|
FOREACH(COMPONENT ${_osl_FIND_COMPONENTS})
|
||||||
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
||||||
|
|
||||||
@@ -51,9 +51,20 @@ FOREACH(COMPONENT ${_osl_FIND_COMPONENTS})
|
|||||||
PATH_SUFFIXES
|
PATH_SUFFIXES
|
||||||
lib64 lib
|
lib64 lib
|
||||||
)
|
)
|
||||||
LIST(APPEND _osl_LIBRARIES "${OSL_${UPPERCOMPONENT}_LIBRARY}")
|
|
||||||
ENDFOREACH()
|
ENDFOREACH()
|
||||||
|
|
||||||
|
# Note linking order matters, and oslnoise existence depends on version.
|
||||||
|
SET(_osl_LIBRARIES ${OSL_OSLCOMP_LIBRARY})
|
||||||
|
IF(APPLE)
|
||||||
|
list(APPEND _osl_LIBRARIES -force_load ${OSL_OSLEXEC_LIBRARY})
|
||||||
|
ELSE()
|
||||||
|
list(APPEND _osl_LIBRARIES ${OSL_OSLEXEC_LIBRARY})
|
||||||
|
ENDIF()
|
||||||
|
list(APPEND _osl_LIBRARIES ${OSL_OSLQUERY_LIBRARY})
|
||||||
|
IF(OSL_OSLNOISE_LIBRARY)
|
||||||
|
list(APPEND _osl_LIBRARIES ${OSL_OSLNOISE_LIBRARY})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
FIND_PROGRAM(OSL_COMPILER oslc
|
FIND_PROGRAM(OSL_COMPILER oslc
|
||||||
HINTS ${_osl_SEARCH_DIRS}
|
HINTS ${_osl_SEARCH_DIRS}
|
||||||
PATH_SUFFIXES bin)
|
PATH_SUFFIXES bin)
|
||||||
|
@@ -26,7 +26,8 @@ IF(NOT OPENEXR_ROOT_DIR AND NOT $ENV{OPENEXR_ROOT_DIR} STREQUAL "")
|
|||||||
SET(OPENEXR_ROOT_DIR $ENV{OPENEXR_ROOT_DIR})
|
SET(OPENEXR_ROOT_DIR $ENV{OPENEXR_ROOT_DIR})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
# Old versions (before 2.0?) do not have any version string, just assuming this should be fine though.
|
# Old versions (before 2.0?) do not have any version string,
|
||||||
|
# just assuming this should be fine though.
|
||||||
SET(_openexr_libs_ver_init "2.0")
|
SET(_openexr_libs_ver_init "2.0")
|
||||||
|
|
||||||
SET(_openexr_SEARCH_DIRS
|
SET(_openexr_SEARCH_DIRS
|
||||||
|
@@ -71,21 +71,6 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenSubdiv DEFAULT_MSG
|
|||||||
IF(OPENSUBDIV_FOUND)
|
IF(OPENSUBDIV_FOUND)
|
||||||
SET(OPENSUBDIV_LIBRARIES ${_opensubdiv_LIBRARIES})
|
SET(OPENSUBDIV_LIBRARIES ${_opensubdiv_LIBRARIES})
|
||||||
SET(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
|
SET(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
|
||||||
|
|
||||||
# Find available compute controllers.
|
|
||||||
|
|
||||||
FIND_PACKAGE(OpenMP)
|
|
||||||
IF(OPENMP_FOUND)
|
|
||||||
SET(OPENSUBDIV_HAS_OPENMP TRUE)
|
|
||||||
ELSE()
|
|
||||||
SET(OPENSUBDIV_HAS_OPENMP FALSE)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("tbbEvaluator.h" OPENSUBDIV_HAS_TBB)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("clEvaluator.h" OPENSUBDIV_HAS_OPENCL)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("cudaEvaluator.h" OPENSUBDIV_HAS_CUDA)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("glXFBEvaluator.h" OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK)
|
|
||||||
OPENSUBDIV_CHECK_CONTROLLER("glComputeEvaluator.h" OPENSUBDIV_HAS_GLSL_COMPUTE)
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
MARK_AS_ADVANCED(
|
||||||
|
@@ -30,6 +30,7 @@ SET(_sycl_search_dirs
|
|||||||
# dpcpp binary.
|
# dpcpp binary.
|
||||||
FIND_PROGRAM(SYCL_COMPILER
|
FIND_PROGRAM(SYCL_COMPILER
|
||||||
NAMES
|
NAMES
|
||||||
|
icpx
|
||||||
dpcpp
|
dpcpp
|
||||||
clang++
|
clang++
|
||||||
HINTS
|
HINTS
|
||||||
@@ -45,6 +46,7 @@ FIND_PROGRAM(SYCL_COMPILER
|
|||||||
if(NOT SYCL_COMPILER)
|
if(NOT SYCL_COMPILER)
|
||||||
FIND_PROGRAM(SYCL_COMPILER
|
FIND_PROGRAM(SYCL_COMPILER
|
||||||
NAMES
|
NAMES
|
||||||
|
icpx
|
||||||
dpcpp
|
dpcpp
|
||||||
HINTS
|
HINTS
|
||||||
${_sycl_search_dirs}
|
${_sycl_search_dirs}
|
||||||
@@ -55,6 +57,8 @@ endif()
|
|||||||
|
|
||||||
FIND_LIBRARY(SYCL_LIBRARY
|
FIND_LIBRARY(SYCL_LIBRARY
|
||||||
NAMES
|
NAMES
|
||||||
|
sycl7
|
||||||
|
sycl6
|
||||||
sycl
|
sycl
|
||||||
HINTS
|
HINTS
|
||||||
${_sycl_search_dirs}
|
${_sycl_search_dirs}
|
||||||
@@ -63,34 +67,51 @@ FIND_LIBRARY(SYCL_LIBRARY
|
|||||||
)
|
)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
string(REPLACE ".lib" "d.lib" SYCL_LIBRARY_DEBUG ${SYCL_LIBRARY})
|
FIND_LIBRARY(SYCL_LIBRARY_DEBUG
|
||||||
set(SYCL_LIBRARY_DEBUG ${SYCL_LIBRARY_DEBUG} CACHE FILEPATH "Path to SYCL debug library")
|
NAMES
|
||||||
else()
|
sycl7d
|
||||||
set(SYCL_LIBRARY_DEBUG ${SYCL_LIBRARY} CACHE FILEPATH "Path to SYCL debug library")
|
sycl6d
|
||||||
|
sycld
|
||||||
|
HINTS
|
||||||
|
${_sycl_search_dirs}
|
||||||
|
PATH_SUFFIXES
|
||||||
|
lib64 lib
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
FIND_PATH(SYCL_INCLUDE_DIR
|
FIND_PATH(SYCL_INCLUDE_DIR
|
||||||
NAMES
|
NAMES
|
||||||
CL/sycl.hpp
|
sycl/sycl.hpp
|
||||||
HINTS
|
HINTS
|
||||||
${_sycl_search_dirs}
|
${_sycl_search_dirs}
|
||||||
PATH_SUFFIXES
|
PATH_SUFFIXES
|
||||||
include
|
include
|
||||||
include/sycl
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
IF(EXISTS "${SYCL_INCLUDE_DIR}/sycl/version.hpp")
|
||||||
|
FILE(STRINGS "${SYCL_INCLUDE_DIR}/sycl/version.hpp" _libsycl_major_version REGEX "^#define __LIBSYCL_MAJOR_VERSION[ \t].*$")
|
||||||
|
STRING(REGEX MATCHALL "[0-9]+" _libsycl_major_version ${_libsycl_major_version})
|
||||||
|
FILE(STRINGS "${SYCL_INCLUDE_DIR}/sycl/version.hpp" _libsycl_minor_version REGEX "^#define __LIBSYCL_MINOR_VERSION[ \t].*$")
|
||||||
|
STRING(REGEX MATCHALL "[0-9]+" _libsycl_minor_version ${_libsycl_minor_version})
|
||||||
|
FILE(STRINGS "${SYCL_INCLUDE_DIR}/sycl/version.hpp" _libsycl_patch_version REGEX "^#define __LIBSYCL_PATCH_VERSION[ \t].*$")
|
||||||
|
STRING(REGEX MATCHALL "[0-9]+" _libsycl_patch_version ${_libsycl_patch_version})
|
||||||
|
|
||||||
|
SET(SYCL_VERSION "${_libsycl_major_version}.${_libsycl_minor_version}.${_libsycl_patch_version}")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
INCLUDE(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SYCL DEFAULT_MSG SYCL_LIBRARY SYCL_INCLUDE_DIR)
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SYCL
|
||||||
|
REQUIRED_VARS SYCL_LIBRARY SYCL_INCLUDE_DIR
|
||||||
|
VERSION_VAR SYCL_VERSION
|
||||||
|
)
|
||||||
|
|
||||||
IF(SYCL_FOUND)
|
IF(SYCL_FOUND)
|
||||||
get_filename_component(_SYCL_INCLUDE_PARENT_DIR ${SYCL_INCLUDE_DIR} DIRECTORY)
|
SET(SYCL_INCLUDE_DIR ${SYCL_INCLUDE_DIR} ${SYCL_INCLUDE_DIR}/sycl)
|
||||||
SET(SYCL_INCLUDE_DIR ${SYCL_INCLUDE_DIR} ${_SYCL_INCLUDE_PARENT_DIR})
|
|
||||||
ELSE()
|
ELSE()
|
||||||
SET(SYCL_SYCL_FOUND FALSE)
|
SET(SYCL_SYCL_FOUND FALSE)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
MARK_AS_ADVANCED(
|
MARK_AS_ADVANCED(
|
||||||
_SYCL_INCLUDE_PARENT_DIR
|
_SYCL_INCLUDE_PARENT_DIR
|
||||||
SYCL_LIBRARY_DEBUG
|
|
||||||
)
|
)
|
||||||
|
@@ -32,7 +32,8 @@ FIND_PATH(USD_INCLUDE_DIR
|
|||||||
DOC "Universal Scene Description (USD) header files"
|
DOC "Universal Scene Description (USD) header files"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Since USD 21.11 the libraries are prefixed with "usd_", i.e. "libusd_m.a" became "libusd_usd_m.a".
|
# Since USD 21.11 the libraries are prefixed with "usd_", i.e.
|
||||||
|
# "libusd_m.a" became "libusd_usd_m.a".
|
||||||
# See https://github.com/PixarAnimationStudios/USD/blob/release/CHANGELOG.md#2111---2021-11-01
|
# See https://github.com/PixarAnimationStudios/USD/blob/release/CHANGELOG.md#2111---2021-11-01
|
||||||
FIND_LIBRARY(USD_LIBRARY
|
FIND_LIBRARY(USD_LIBRARY
|
||||||
NAMES
|
NAMES
|
||||||
|
@@ -8,7 +8,11 @@
|
|||||||
|
|
||||||
set(WITH_ASSERT_ABORT ON CACHE BOOL "" FORCE)
|
set(WITH_ASSERT_ABORT ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_BUILDINFO OFF CACHE BOOL "" FORCE)
|
set(WITH_BUILDINFO OFF CACHE BOOL "" FORCE)
|
||||||
|
# Sadly ASAN is more often broken than working with MSVC do not enable it in the
|
||||||
|
# developer profile for now.
|
||||||
|
if(NOT WIN32)
|
||||||
set(WITH_COMPILER_ASAN ON CACHE BOOL "" FORCE)
|
set(WITH_COMPILER_ASAN ON CACHE BOOL "" FORCE)
|
||||||
|
endif()
|
||||||
set(WITH_CYCLES_NATIVE_ONLY ON CACHE BOOL "" FORCE)
|
set(WITH_CYCLES_NATIVE_ONLY ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE)
|
set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE)
|
||||||
set(WITH_GTESTS ON CACHE BOOL "" FORCE)
|
set(WITH_GTESTS ON CACHE BOOL "" FORCE)
|
||||||
|
@@ -66,13 +66,11 @@ set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE)
|
|||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(WITH_COREAUDIO ON CACHE BOOL "" FORCE)
|
set(WITH_COREAUDIO ON CACHE BOOL "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
if(NOT WIN32)
|
|
||||||
set(WITH_JACK ON CACHE BOOL "" FORCE)
|
|
||||||
endif()
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(WITH_WASAPI ON CACHE BOOL "" FORCE)
|
set(WITH_WASAPI ON CACHE BOOL "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
|
set(WITH_JACK ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
|
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
|
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
|
set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
|
||||||
|
@@ -67,13 +67,11 @@ if(APPLE)
|
|||||||
set(WITH_COREAUDIO ON CACHE BOOL "" FORCE)
|
set(WITH_COREAUDIO ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_CYCLES_DEVICE_METAL ON CACHE BOOL "" FORCE)
|
set(WITH_CYCLES_DEVICE_METAL ON CACHE BOOL "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
if(NOT WIN32)
|
|
||||||
set(WITH_JACK ON CACHE BOOL "" FORCE)
|
|
||||||
endif()
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(WITH_WASAPI ON CACHE BOOL "" FORCE)
|
set(WITH_WASAPI ON CACHE BOOL "" FORCE)
|
||||||
endif()
|
endif()
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
|
set(WITH_JACK ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
|
set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
|
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
|
||||||
set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
|
set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
|
||||||
|
@@ -57,6 +57,25 @@ macro(path_ensure_trailing_slash
|
|||||||
unset(_path_sep)
|
unset(_path_sep)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
# Our own version of `cmake_path(IS_PREFIX ..)`.
|
||||||
|
# This can be removed when 3.20 or greater is the minimum supported version.
|
||||||
|
macro(path_is_prefix
|
||||||
|
path_prefix path result_var
|
||||||
|
)
|
||||||
|
# Remove when CMAKE version is bumped to "3.20" or greater.
|
||||||
|
# `cmake_path(IS_PREFIX ${path_prefix} ${path} NORMALIZE result_var)`
|
||||||
|
# Get the normalized paths (needed to remove `..`).
|
||||||
|
get_filename_component(_abs_prefix "${${path_prefix}}" ABSOLUTE)
|
||||||
|
get_filename_component(_abs_suffix "${${path}}" ABSOLUTE)
|
||||||
|
string(LENGTH "${_abs_prefix}" _len)
|
||||||
|
string(SUBSTRING "${_abs_suffix}" 0 "${_len}" _substr)
|
||||||
|
string(COMPARE EQUAL "${_abs_prefix}" "${_substr}" "${result_var}")
|
||||||
|
unset(_abs_prefix)
|
||||||
|
unset(_abs_suffix)
|
||||||
|
unset(_len)
|
||||||
|
unset(_substr)
|
||||||
|
endmacro()
|
||||||
|
|
||||||
# foo_bar.spam --> foo_barMySuffix.spam
|
# foo_bar.spam --> foo_barMySuffix.spam
|
||||||
macro(file_suffix
|
macro(file_suffix
|
||||||
file_name_new file_name file_suffix
|
file_name_new file_name file_suffix
|
||||||
@@ -995,7 +1014,8 @@ function(data_to_c_simple_icons
|
|||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${_file_from} ${_file_to}
|
OUTPUT ${_file_from} ${_file_to}
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
|
||||||
# COMMAND python3 ${CMAKE_SOURCE_DIR}/source/blender/datatoc/datatoc_icon.py ${_path_from_abs} ${_file_from}
|
# COMMAND python3 ${CMAKE_SOURCE_DIR}/source/blender/datatoc/datatoc_icon.py
|
||||||
|
# ${_path_from_abs} ${_file_from}
|
||||||
COMMAND "$<TARGET_FILE:datatoc_icon>" ${_path_from_abs} ${_file_from}
|
COMMAND "$<TARGET_FILE:datatoc_icon>" ${_path_from_abs} ${_file_from}
|
||||||
COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to}
|
COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to}
|
||||||
DEPENDS
|
DEPENDS
|
||||||
@@ -1079,15 +1099,19 @@ function(find_python_package
|
|||||||
|
|
||||||
string(TOUPPER ${package} _upper_package)
|
string(TOUPPER ${package} _upper_package)
|
||||||
|
|
||||||
# set but invalid
|
# Set but invalid.
|
||||||
if((NOT ${PYTHON_${_upper_package}_PATH} STREQUAL "") AND
|
if((NOT ${PYTHON_${_upper_package}_PATH} STREQUAL "") AND
|
||||||
(NOT ${PYTHON_${_upper_package}_PATH} MATCHES NOTFOUND))
|
(NOT ${PYTHON_${_upper_package}_PATH} MATCHES NOTFOUND))
|
||||||
# if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}/${package}")
|
# if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}/${package}")
|
||||||
# message(WARNING "PYTHON_${_upper_package}_PATH is invalid, ${package} not found in '${PYTHON_${_upper_package}_PATH}' "
|
# message(
|
||||||
# "WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python")
|
# WARNING
|
||||||
|
# "PYTHON_${_upper_package}_PATH is invalid, ${package} not found in "
|
||||||
|
# "'${PYTHON_${_upper_package}_PATH}' "
|
||||||
|
# "WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing Python"
|
||||||
|
# )
|
||||||
# set(WITH_PYTHON_INSTALL${_upper_package} OFF)
|
# set(WITH_PYTHON_INSTALL${_upper_package} OFF)
|
||||||
# endif()
|
# endif()
|
||||||
# not set, so initialize
|
# Not set, so initialize.
|
||||||
else()
|
else()
|
||||||
string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
|
string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
|
||||||
list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
|
list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
|
||||||
@@ -1205,11 +1229,27 @@ macro(set_and_warn_dependency
|
|||||||
_dependency _setting _val)
|
_dependency _setting _val)
|
||||||
# when $_dependency is disabled, forces $_setting = $_val
|
# when $_dependency is disabled, forces $_setting = $_val
|
||||||
if(NOT ${${_dependency}} AND ${${_setting}})
|
if(NOT ${${_dependency}} AND ${${_setting}})
|
||||||
message(STATUS "'${_dependency}' is disabled: forcing 'set(${_setting} ${_val})'")
|
if(WITH_STRICT_BUILD_OPTIONS)
|
||||||
|
message(SEND_ERROR "${_dependency} disabled but required by ${_setting}")
|
||||||
|
else()
|
||||||
|
message(STATUS "${_dependency} is disabled, setting ${_setting}=${_val}")
|
||||||
|
endif()
|
||||||
set(${_setting} ${_val})
|
set(${_setting} ${_val})
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
macro(set_and_warn_library_found
|
||||||
|
_library_name _library_found _setting)
|
||||||
|
if(NOT ${${_library_found}} AND ${${_setting}})
|
||||||
|
if(WITH_STRICT_BUILD_OPTIONS)
|
||||||
|
message(SEND_ERROR "${_library_name} required but not found")
|
||||||
|
else()
|
||||||
|
message(STATUS "${_library_name} not found, disabling ${_setting}")
|
||||||
|
endif()
|
||||||
|
set(${_setting} OFF)
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
macro(without_system_libs_begin)
|
macro(without_system_libs_begin)
|
||||||
set(CMAKE_IGNORE_PATH "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES};${CMAKE_SYSTEM_INCLUDE_PATH};${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES};${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}")
|
set(CMAKE_IGNORE_PATH "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES};${CMAKE_SYSTEM_INCLUDE_PATH};${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES};${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}")
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@@ -43,22 +43,18 @@ find_package(BZip2 REQUIRED)
|
|||||||
list(APPEND ZLIB_LIBRARIES ${BZIP2_LIBRARIES})
|
list(APPEND ZLIB_LIBRARIES ${BZIP2_LIBRARIES})
|
||||||
|
|
||||||
if(WITH_OPENAL)
|
if(WITH_OPENAL)
|
||||||
find_package(OpenAL)
|
find_package(OpenAL REQUIRED)
|
||||||
if(NOT OPENAL_FOUND)
|
|
||||||
message(WARNING "OpenAL not found, disabling WITH_OPENAL")
|
|
||||||
set(WITH_OPENAL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_JACK)
|
if(WITH_JACK)
|
||||||
find_library(JACK_FRAMEWORK
|
find_library(JACK_FRAMEWORK
|
||||||
NAMES jackmp
|
NAMES jackmp
|
||||||
)
|
)
|
||||||
if(NOT JACK_FRAMEWORK)
|
|
||||||
message(STATUS "JACK not found, disabling WITH_JACK")
|
if(JACK_FRAMEWORK)
|
||||||
set(WITH_JACK OFF)
|
|
||||||
else()
|
|
||||||
set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
|
set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
|
||||||
|
else()
|
||||||
|
set_and_warn_library_found("JACK" JACK_FRAMEWORK WITH_JACK)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -101,11 +97,7 @@ if(WITH_ALEMBIC)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_USD)
|
if(WITH_USD)
|
||||||
find_package(USD)
|
find_package(USD REQUIRED)
|
||||||
if(NOT USD_FOUND)
|
|
||||||
message(STATUS "USD not found, disabling WITH_USD")
|
|
||||||
set(WITH_USD OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENSUBDIV)
|
if(WITH_OPENSUBDIV)
|
||||||
@@ -227,20 +219,12 @@ find_package(JPEG REQUIRED)
|
|||||||
|
|
||||||
if(WITH_IMAGE_TIFF)
|
if(WITH_IMAGE_TIFF)
|
||||||
set(TIFF_ROOT ${LIBDIR}/tiff)
|
set(TIFF_ROOT ${LIBDIR}/tiff)
|
||||||
find_package(TIFF)
|
find_package(TIFF REQUIRED)
|
||||||
if(NOT TIFF_FOUND)
|
|
||||||
message(WARNING "TIFF not found, disabling WITH_IMAGE_TIFF")
|
|
||||||
set(WITH_IMAGE_TIFF OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_IMAGE_WEBP)
|
if(WITH_IMAGE_WEBP)
|
||||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||||
find_package(WebP)
|
find_package(WebP REQUIRED)
|
||||||
if(NOT WEBP_FOUND)
|
|
||||||
message(WARNING "WebP not found, disabling WITH_IMAGE_WEBP")
|
|
||||||
set(WITH_IMAGE_WEBP OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_BOOST)
|
if(WITH_BOOST)
|
||||||
@@ -270,11 +254,7 @@ if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_PUGIXML)
|
if(WITH_PUGIXML)
|
||||||
find_package(PugiXML)
|
find_package(PugiXML REQUIRED)
|
||||||
if(NOT PUGIXML_FOUND)
|
|
||||||
message(WARNING "PugiXML not found, disabling WITH_PUGIXML")
|
|
||||||
set(WITH_PUGIXML OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENIMAGEIO)
|
if(WITH_OPENIMAGEIO)
|
||||||
@@ -292,12 +272,7 @@ if(WITH_OPENIMAGEIO)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENCOLORIO)
|
if(WITH_OPENCOLORIO)
|
||||||
find_package(OpenColorIO 2.0.0)
|
find_package(OpenColorIO 2.0.0 REQUIRED)
|
||||||
|
|
||||||
if(NOT OPENCOLORIO_FOUND)
|
|
||||||
set(WITH_OPENCOLORIO OFF)
|
|
||||||
message(STATUS "OpenColorIO not found, disabling WITH_OPENCOLORIO")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENVDB)
|
if(WITH_OPENVDB)
|
||||||
@@ -331,23 +306,7 @@ if(WITH_LLVM)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
||||||
set(CYCLES_OSL ${LIBDIR}/osl)
|
find_package(OSL REQUIRED)
|
||||||
|
|
||||||
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
|
|
||||||
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
|
|
||||||
# WARNING! depends on correct order of OSL libs linking
|
|
||||||
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
|
|
||||||
find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
|
|
||||||
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
|
|
||||||
find_path(OSL_SHADER_DIR NAMES stdosl.h PATHS ${CYCLES_OSL}/share/OSL/shaders)
|
|
||||||
|
|
||||||
if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER AND OSL_SHADER_DIR)
|
|
||||||
set(OSL_FOUND TRUE)
|
|
||||||
else()
|
|
||||||
message(WARNING "OSL not found, disabling WITH_CYCLES_OSL")
|
|
||||||
set(WITH_CYCLES_OSL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||||
@@ -365,28 +324,15 @@ if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENIMAGEDENOISE)
|
if(WITH_OPENIMAGEDENOISE)
|
||||||
find_package(OpenImageDenoise)
|
find_package(OpenImageDenoise REQUIRED)
|
||||||
|
|
||||||
if(NOT OPENIMAGEDENOISE_FOUND)
|
|
||||||
set(WITH_OPENIMAGEDENOISE OFF)
|
|
||||||
message(STATUS "OpenImageDenoise not found, disabling WITH_OPENIMAGEDENOISE")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_TBB)
|
if(WITH_TBB)
|
||||||
find_package(TBB)
|
find_package(TBB REQUIRED)
|
||||||
if(NOT TBB_FOUND)
|
|
||||||
message(WARNING "TBB not found, disabling WITH_TBB")
|
|
||||||
set(WITH_TBB OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_POTRACE)
|
if(WITH_POTRACE)
|
||||||
find_package(Potrace)
|
find_package(Potrace REQUIRED)
|
||||||
if(NOT POTRACE_FOUND)
|
|
||||||
message(WARNING "potrace not found, disabling WITH_POTRACE")
|
|
||||||
set(WITH_POTRACE OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# CMake FindOpenMP doesn't know about AppleClang before 3.12, so provide custom flags.
|
# CMake FindOpenMP doesn't know about AppleClang before 3.12, so provide custom flags.
|
||||||
@@ -406,30 +352,18 @@ if(WITH_OPENMP)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_XR_OPENXR)
|
if(WITH_XR_OPENXR)
|
||||||
find_package(XR_OpenXR_SDK)
|
find_package(XR_OpenXR_SDK REQUIRED)
|
||||||
if(NOT XR_OPENXR_SDK_FOUND)
|
|
||||||
message(WARNING "OpenXR-SDK was not found, disabling WITH_XR_OPENXR")
|
|
||||||
set(WITH_XR_OPENXR OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_GMP)
|
if(WITH_GMP)
|
||||||
find_package(GMP)
|
find_package(GMP REQUIRED)
|
||||||
if(NOT GMP_FOUND)
|
|
||||||
message(WARNING "GMP not found, disabling WITH_GMP")
|
|
||||||
set(WITH_GMP OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_HARU)
|
if(WITH_HARU)
|
||||||
find_package(Haru)
|
find_package(Haru REQUIRED)
|
||||||
if(NOT HARU_FOUND)
|
|
||||||
message(WARNING "Haru not found, disabling WITH_HARU")
|
|
||||||
set(WITH_HARU OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES_PATH_GUIDING)
|
if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
|
||||||
find_package(openpgl QUIET)
|
find_package(openpgl QUIET)
|
||||||
if(openpgl_FOUND)
|
if(openpgl_FOUND)
|
||||||
get_target_property(OPENPGL_LIBRARIES openpgl::openpgl LOCATION)
|
get_target_property(OPENPGL_LIBRARIES openpgl::openpgl LOCATION)
|
||||||
|
@@ -151,7 +151,7 @@ if(WITH_PYTHON)
|
|||||||
# Installing into `site-packages`, warn when installing into `./../lib/`
|
# Installing into `site-packages`, warn when installing into `./../lib/`
|
||||||
# which script authors almost certainly don't want.
|
# which script authors almost certainly don't want.
|
||||||
if(EXISTS ${LIBDIR})
|
if(EXISTS ${LIBDIR})
|
||||||
cmake_path(IS_PREFIX LIBDIR "${PYTHON_SITE_PACKAGES}" NORMALIZE _is_prefix)
|
path_is_prefix(LIBDIR PYTHON_SITE_PACKAGES _is_prefix)
|
||||||
if(_is_prefix)
|
if(_is_prefix)
|
||||||
message(WARNING "
|
message(WARNING "
|
||||||
Building Blender with the following configuration:
|
Building Blender with the following configuration:
|
||||||
@@ -174,32 +174,24 @@ endif()
|
|||||||
|
|
||||||
if(WITH_IMAGE_OPENEXR)
|
if(WITH_IMAGE_OPENEXR)
|
||||||
find_package_wrapper(OpenEXR) # our own module
|
find_package_wrapper(OpenEXR) # our own module
|
||||||
if(NOT OPENEXR_FOUND)
|
set_and_warn_library_found("OpenEXR" OPENEXR_FOUND WITH_IMAGE_OPENEXR)
|
||||||
set(WITH_IMAGE_OPENEXR OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_IMAGE_OPENJPEG)
|
if(WITH_IMAGE_OPENJPEG)
|
||||||
find_package_wrapper(OpenJPEG)
|
find_package_wrapper(OpenJPEG)
|
||||||
if(NOT OPENJPEG_FOUND)
|
set_and_warn_library_found("OpenJPEG" OPENJPEG_FOUND WITH_IMAGE_OPENJPEG)
|
||||||
set(WITH_IMAGE_OPENJPEG OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_IMAGE_TIFF)
|
if(WITH_IMAGE_TIFF)
|
||||||
# XXX Linking errors with debian static tiff :/
|
# XXX Linking errors with debian static tiff :/
|
||||||
# find_package_wrapper(TIFF)
|
# find_package_wrapper(TIFF)
|
||||||
find_package(TIFF)
|
find_package(TIFF)
|
||||||
if(NOT TIFF_FOUND)
|
set_and_warn_library_found("TIFF" TIFF_FOUND WITH_IMAGE_TIFF)
|
||||||
set(WITH_IMAGE_TIFF OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENAL)
|
if(WITH_OPENAL)
|
||||||
find_package_wrapper(OpenAL)
|
find_package_wrapper(OpenAL)
|
||||||
if(NOT OPENAL_FOUND)
|
set_and_warn_library_found("OpenAL" OPENAL_FOUND WITH_OPENAL)
|
||||||
set(WITH_OPENAL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_SDL)
|
if(WITH_SDL)
|
||||||
@@ -221,18 +213,14 @@ if(WITH_SDL)
|
|||||||
SDL_LIBRARY
|
SDL_LIBRARY
|
||||||
)
|
)
|
||||||
# unset(SDLMAIN_LIBRARY CACHE)
|
# unset(SDLMAIN_LIBRARY CACHE)
|
||||||
if(NOT SDL_FOUND)
|
set_and_warn_library_found("SDL" SDL_FOUND WITH_SDL)
|
||||||
set(WITH_SDL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Codecs
|
# Codecs
|
||||||
if(WITH_CODEC_SNDFILE)
|
if(WITH_CODEC_SNDFILE)
|
||||||
find_package_wrapper(SndFile)
|
find_package_wrapper(SndFile)
|
||||||
if(NOT SNDFILE_FOUND)
|
set_and_warn_library_found("libsndfile" SNDFILE_FOUND WITH_CODEC_SNDFILE)
|
||||||
set(WITH_CODEC_SNDFILE OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CODEC_FFMPEG)
|
if(WITH_CODEC_FFMPEG)
|
||||||
@@ -260,17 +248,12 @@ if(WITH_CODEC_FFMPEG)
|
|||||||
endif()
|
endif()
|
||||||
find_package(FFmpeg)
|
find_package(FFmpeg)
|
||||||
|
|
||||||
if(NOT FFMPEG_FOUND)
|
set_and_warn_library_found("FFmpeg" FFMPEG_FOUND WITH_CODEC_FFMPEG)
|
||||||
set(WITH_CODEC_FFMPEG OFF)
|
|
||||||
message(STATUS "FFmpeg not found, disabling it")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_FFTW3)
|
if(WITH_FFTW3)
|
||||||
find_package_wrapper(Fftw3)
|
find_package_wrapper(Fftw3)
|
||||||
if(NOT FFTW3_FOUND)
|
set_and_warn_library_found("fftw3" FFTW3_FOUND WITH_FFTW3)
|
||||||
set(WITH_FFTW3 OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENCOLLADA)
|
if(WITH_OPENCOLLADA)
|
||||||
@@ -285,25 +268,23 @@ if(WITH_OPENCOLLADA)
|
|||||||
endif()
|
endif()
|
||||||
find_package_wrapper(XML2)
|
find_package_wrapper(XML2)
|
||||||
else()
|
else()
|
||||||
set(WITH_OPENCOLLADA OFF)
|
set_and_warn_library_found("OpenCollada" OPENCOLLADA_FOUND WITH_OPENCOLLADA)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_MEM_JEMALLOC)
|
if(WITH_MEM_JEMALLOC)
|
||||||
find_package_wrapper(JeMalloc)
|
find_package_wrapper(JeMalloc)
|
||||||
if(NOT JEMALLOC_FOUND)
|
set_and_warn_library_found("JeMalloc" JEMALLOC_FOUND WITH_MEM_JEMALLOC)
|
||||||
set(WITH_MEM_JEMALLOC OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_INPUT_NDOF)
|
if(WITH_INPUT_NDOF)
|
||||||
find_package_wrapper(Spacenav)
|
find_package_wrapper(Spacenav)
|
||||||
|
set_and_warn_library_found("SpaceNav" SPACENAV_FOUND WITH_INPUT_NDOF)
|
||||||
|
|
||||||
if(SPACENAV_FOUND)
|
if(SPACENAV_FOUND)
|
||||||
# use generic names within blenders buildsystem.
|
# use generic names within blenders buildsystem.
|
||||||
set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
|
set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
|
||||||
set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
|
set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
|
||||||
else()
|
|
||||||
set(WITH_INPUT_NDOF OFF)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -313,6 +294,8 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||||||
set(OSL_ROOT ${CYCLES_OSL})
|
set(OSL_ROOT ${CYCLES_OSL})
|
||||||
endif()
|
endif()
|
||||||
find_package_wrapper(OSL)
|
find_package_wrapper(OSL)
|
||||||
|
set_and_warn_library_found("OSL" OSL_FOUND WITH_CYCLES_OSL)
|
||||||
|
|
||||||
if(OSL_FOUND)
|
if(OSL_FOUND)
|
||||||
if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
|
if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
|
||||||
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
|
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
|
||||||
@@ -323,13 +306,10 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||||||
-Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY}
|
-Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
else()
|
|
||||||
message(STATUS "OSL not found, disabling it from Cycles")
|
|
||||||
set(WITH_CYCLES_OSL OFF)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES_DEVICE_ONEAPI)
|
if(WITH_CYCLES AND WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
set(CYCLES_LEVEL_ZERO ${LIBDIR}/level-zero CACHE PATH "Path to Level Zero installation")
|
set(CYCLES_LEVEL_ZERO ${LIBDIR}/level-zero CACHE PATH "Path to Level Zero installation")
|
||||||
if(EXISTS ${CYCLES_LEVEL_ZERO} AND NOT LEVEL_ZERO_ROOT_DIR)
|
if(EXISTS ${CYCLES_LEVEL_ZERO} AND NOT LEVEL_ZERO_ROOT_DIR)
|
||||||
set(LEVEL_ZERO_ROOT_DIR ${CYCLES_LEVEL_ZERO})
|
set(LEVEL_ZERO_ROOT_DIR ${CYCLES_LEVEL_ZERO})
|
||||||
@@ -341,35 +321,27 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
endif()
|
endif()
|
||||||
file(GLOB _sycl_runtime_libraries
|
file(GLOB _sycl_runtime_libraries
|
||||||
${SYCL_ROOT_DIR}/lib/libsycl.so
|
${SYCL_ROOT_DIR}/lib/libsycl.so
|
||||||
${SYCL_ROOT_DIR}/lib/libsycl.so.[0-9]
|
${SYCL_ROOT_DIR}/lib/libsycl.so.*
|
||||||
${SYCL_ROOT_DIR}/lib/libsycl.so.[0-9].[0-9].[0-9]-[0-9]
|
|
||||||
${SYCL_ROOT_DIR}/lib/libpi_level_zero.so
|
${SYCL_ROOT_DIR}/lib/libpi_level_zero.so
|
||||||
)
|
)
|
||||||
|
list(FILTER _sycl_runtime_libraries EXCLUDE REGEX ".*\.py")
|
||||||
list(APPEND PLATFORM_BUNDLED_LIBRARIES ${_sycl_runtime_libraries})
|
list(APPEND PLATFORM_BUNDLED_LIBRARIES ${_sycl_runtime_libraries})
|
||||||
unset(_sycl_runtime_libraries)
|
unset(_sycl_runtime_libraries)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENVDB)
|
if(WITH_OPENVDB)
|
||||||
find_package_wrapper(OpenVDB)
|
find_package_wrapper(OpenVDB)
|
||||||
find_package_wrapper(Blosc)
|
set_and_warn_library_found("OpenVDB" OPENVDB_FOUND WITH_OPENVDB)
|
||||||
|
|
||||||
if(NOT OPENVDB_FOUND)
|
if(OPENVDB_FOUND)
|
||||||
set(WITH_OPENVDB OFF)
|
find_package_wrapper(Blosc)
|
||||||
set(WITH_OPENVDB_BLOSC OFF)
|
set_and_warn_library_found("Blosc" BLOSC_FOUND WITH_OPENVDB_BLOSC)
|
||||||
message(STATUS "OpenVDB not found, disabling it")
|
|
||||||
elseif(NOT BLOSC_FOUND)
|
|
||||||
set(WITH_OPENVDB_BLOSC OFF)
|
|
||||||
message(STATUS "Blosc not found, disabling it for OpenVBD")
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_NANOVDB)
|
if(WITH_NANOVDB)
|
||||||
find_package_wrapper(NanoVDB)
|
find_package_wrapper(NanoVDB)
|
||||||
|
set_and_warn_library_found("NanoVDB" NANOVDB_FOUND WITH_NANOVDB)
|
||||||
if(NOT NANOVDB_FOUND)
|
|
||||||
set(WITH_NANOVDB OFF)
|
|
||||||
message(STATUS "NanoVDB not found, disabling it")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CPU_SIMD AND SUPPORT_NEON_BUILD)
|
if(WITH_CPU_SIMD AND SUPPORT_NEON_BUILD)
|
||||||
@@ -378,18 +350,12 @@ endif()
|
|||||||
|
|
||||||
if(WITH_ALEMBIC)
|
if(WITH_ALEMBIC)
|
||||||
find_package_wrapper(Alembic)
|
find_package_wrapper(Alembic)
|
||||||
|
set_and_warn_library_found("Alembic" ALEMBIC_FOUND WITH_ALEMBIC)
|
||||||
if(NOT ALEMBIC_FOUND)
|
|
||||||
set(WITH_ALEMBIC OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_USD)
|
if(WITH_USD)
|
||||||
find_package_wrapper(USD)
|
find_package_wrapper(USD)
|
||||||
|
set_and_warn_library_found("USD" USD_FOUND WITH_USD)
|
||||||
if(NOT USD_FOUND)
|
|
||||||
set(WITH_USD OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_BOOST)
|
if(WITH_BOOST)
|
||||||
@@ -442,20 +408,13 @@ endif()
|
|||||||
|
|
||||||
if(WITH_PUGIXML)
|
if(WITH_PUGIXML)
|
||||||
find_package_wrapper(PugiXML)
|
find_package_wrapper(PugiXML)
|
||||||
|
set_and_warn_library_found("PugiXML" PUGIXML_FOUND WITH_PUGIXML)
|
||||||
if(NOT PUGIXML_FOUND)
|
|
||||||
set(WITH_PUGIXML OFF)
|
|
||||||
message(STATUS "PugiXML not found, disabling WITH_PUGIXML")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_IMAGE_WEBP)
|
if(WITH_IMAGE_WEBP)
|
||||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||||
find_package_wrapper(WebP)
|
find_package_wrapper(WebP)
|
||||||
if(NOT WEBP_FOUND)
|
set_and_warn_library_found("WebP" WEBP_FOUND WITH_IMAGE_WEBP)
|
||||||
set(WITH_IMAGE_WEBP OFF)
|
|
||||||
message(WARNING "WebP not found, disabling WITH_IMAGE_WEBP")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENIMAGEIO)
|
if(WITH_OPENIMAGEIO)
|
||||||
@@ -480,10 +439,7 @@ if(WITH_OPENIMAGEIO)
|
|||||||
list(APPEND OPENIMAGEIO_LIBRARIES "${WEBP_LIBRARIES}")
|
list(APPEND OPENIMAGEIO_LIBRARIES "${WEBP_LIBRARIES}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT OPENIMAGEIO_FOUND)
|
set_and_warn_library_found("OPENIMAGEIO" OPENIMAGEIO_FOUND WITH_OPENIMAGEIO)
|
||||||
set(WITH_OPENIMAGEIO OFF)
|
|
||||||
message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENCOLORIO)
|
if(WITH_OPENCOLORIO)
|
||||||
@@ -493,10 +449,7 @@ if(WITH_OPENCOLORIO)
|
|||||||
set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
||||||
set(OPENCOLORIO_DEFINITIONS)
|
set(OPENCOLORIO_DEFINITIONS)
|
||||||
|
|
||||||
if(NOT OPENCOLORIO_FOUND)
|
set_and_warn_library_found("OpenColorIO" OPENCOLORIO_FOUND WITH_OPENCOLORIO)
|
||||||
set(WITH_OPENCOLORIO OFF)
|
|
||||||
message(STATUS "OpenColorIO not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||||
@@ -505,11 +458,7 @@ endif()
|
|||||||
|
|
||||||
if(WITH_OPENIMAGEDENOISE)
|
if(WITH_OPENIMAGEDENOISE)
|
||||||
find_package_wrapper(OpenImageDenoise)
|
find_package_wrapper(OpenImageDenoise)
|
||||||
|
set_and_warn_library_found("OpenImageDenoise" OPENIMAGEDENOISE_FOUND WITH_OPENIMAGEDENOISE)
|
||||||
if(NOT OPENIMAGEDENOISE_FOUND)
|
|
||||||
set(WITH_OPENIMAGEDENOISE OFF)
|
|
||||||
message(STATUS "OpenImageDenoise not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_LLVM)
|
if(WITH_LLVM)
|
||||||
@@ -518,25 +467,20 @@ if(WITH_LLVM)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package_wrapper(LLVM)
|
find_package_wrapper(LLVM)
|
||||||
|
set_and_warn_library_found("LLVM" LLVM_FOUND WITH_LLVM)
|
||||||
|
|
||||||
|
if(LLVM_FOUND)
|
||||||
if(WITH_CLANG)
|
if(WITH_CLANG)
|
||||||
find_package_wrapper(Clang)
|
find_package_wrapper(Clang)
|
||||||
|
set_and_warn_library_found("Clang" CLANG_FOUND WITH_CLANG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Symbol conflicts with same UTF library used by OpenCollada
|
# Symbol conflicts with same UTF library used by OpenCollada
|
||||||
if(EXISTS ${LIBDIR})
|
if(EXISTS ${LIBDIR})
|
||||||
if(WITH_OPENCOLLADA AND (${LLVM_VERSION} VERSION_LESS "4.0.0"))
|
if(WITH_OPENCOLLADA AND (${LLVM_VERSION} VERSION_LESS "4.0.0"))
|
||||||
list(REMOVE_ITEM OPENCOLLADA_LIBRARIES ${OPENCOLLADA_UTF_LIBRARY})
|
list(REMOVE_ITEM OPENCOLLADA_LIBRARIES ${OPENCOLLADA_UTF_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT LLVM_FOUND)
|
|
||||||
set(WITH_LLVM OFF)
|
|
||||||
set(WITH_CLANG OFF)
|
|
||||||
message(STATUS "LLVM not found")
|
|
||||||
else()
|
|
||||||
if(NOT CLANG_FOUND)
|
|
||||||
set(WITH_CLANG OFF)
|
|
||||||
message(STATUS "Clang not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -546,53 +490,35 @@ if(WITH_OPENSUBDIV)
|
|||||||
set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
|
set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
|
||||||
set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
|
||||||
|
|
||||||
if(NOT OPENSUBDIV_FOUND)
|
set_and_warn_library_found("OpenSubdiv" OPENSUBDIV_FOUND WITH_OPENSUBDIV)
|
||||||
set(WITH_OPENSUBDIV OFF)
|
|
||||||
message(STATUS "OpenSubdiv not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_TBB)
|
if(WITH_TBB)
|
||||||
find_package_wrapper(TBB)
|
find_package_wrapper(TBB)
|
||||||
if(NOT TBB_FOUND)
|
set_and_warn_library_found("TBB" TBB_FOUND WITH_TBB)
|
||||||
message(WARNING "TBB not found, disabling WITH_TBB")
|
|
||||||
set(WITH_TBB OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_XR_OPENXR)
|
if(WITH_XR_OPENXR)
|
||||||
find_package(XR_OpenXR_SDK)
|
find_package(XR_OpenXR_SDK)
|
||||||
if(NOT XR_OPENXR_SDK_FOUND)
|
set_and_warn_library_found("OpenXR-SDK" XR_OPENXR_SDK_FOUND WITH_XR_OPENXR)
|
||||||
message(WARNING "OpenXR-SDK not found, disabling WITH_XR_OPENXR")
|
|
||||||
set(WITH_XR_OPENXR OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_GMP)
|
if(WITH_GMP)
|
||||||
find_package_wrapper(GMP)
|
find_package_wrapper(GMP)
|
||||||
if(NOT GMP_FOUND)
|
set_and_warn_library_found("GMP" GMP_FOUND WITH_GMP)
|
||||||
message(WARNING "GMP not found, disabling WITH_GMP")
|
|
||||||
set(WITH_GMP OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_POTRACE)
|
if(WITH_POTRACE)
|
||||||
find_package_wrapper(Potrace)
|
find_package_wrapper(Potrace)
|
||||||
if(NOT POTRACE_FOUND)
|
set_and_warn_library_found("Potrace" POTRACE_FOUND WITH_POTRACE)
|
||||||
message(WARNING "potrace not found, disabling WITH_POTRACE")
|
|
||||||
set(WITH_POTRACE OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_HARU)
|
if(WITH_HARU)
|
||||||
find_package_wrapper(Haru)
|
find_package_wrapper(Haru)
|
||||||
if(NOT HARU_FOUND)
|
set_and_warn_library_found("Haru" HARU_FOUND WITH_HARU)
|
||||||
message(WARNING "Haru not found, disabling WITH_HARU")
|
|
||||||
set(WITH_HARU OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES_PATH_GUIDING)
|
if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
|
||||||
find_package_wrapper(openpgl)
|
find_package_wrapper(openpgl)
|
||||||
if(openpgl_FOUND)
|
if(openpgl_FOUND)
|
||||||
get_target_property(OPENPGL_LIBRARIES openpgl::openpgl LOCATION)
|
get_target_property(OPENPGL_LIBRARIES openpgl::openpgl LOCATION)
|
||||||
@@ -676,25 +602,20 @@ endif()
|
|||||||
# Jack is intended to use the system library.
|
# Jack is intended to use the system library.
|
||||||
if(WITH_JACK)
|
if(WITH_JACK)
|
||||||
find_package_wrapper(Jack)
|
find_package_wrapper(Jack)
|
||||||
if(NOT JACK_FOUND)
|
set_and_warn_library_found("JACK" JACK_FOUND WITH_JACK)
|
||||||
set(WITH_JACK OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Pulse is intended to use the system library.
|
# Pulse is intended to use the system library.
|
||||||
if(WITH_PULSEAUDIO)
|
if(WITH_PULSEAUDIO)
|
||||||
find_package_wrapper(Pulse)
|
find_package_wrapper(Pulse)
|
||||||
if(NOT PULSE_FOUND)
|
set_and_warn_library_found("PulseAudio" PULSE_FOUND WITH_PULSEAUDIO)
|
||||||
set(WITH_PULSEAUDIO OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Audio IO
|
# Audio IO
|
||||||
if(WITH_SYSTEM_AUDASPACE)
|
if(WITH_SYSTEM_AUDASPACE)
|
||||||
find_package_wrapper(Audaspace)
|
find_package_wrapper(Audaspace)
|
||||||
if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND)
|
set(AUDASPACE_FOUND ${AUDASPACE_FOUND} AND ${AUDASPACE_C_FOUND})
|
||||||
message(FATAL_ERROR "Audaspace external library not found!")
|
set_and_warn_library_found("External Audaspace" AUDASPACE_FOUND WITH_SYSTEM_AUDASPACE)
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_GHOST_WAYLAND)
|
if(WITH_GHOST_WAYLAND)
|
||||||
@@ -739,31 +660,14 @@ if(WITH_GHOST_WAYLAND)
|
|||||||
set(wayland-scanner_FOUND ON)
|
set(wayland-scanner_FOUND ON)
|
||||||
set(wayland-cursor_FOUND ON)
|
set(wayland-cursor_FOUND ON)
|
||||||
endif()
|
endif()
|
||||||
|
mark_as_advanced(WAYLAND_PROTOCOLS_DIR)
|
||||||
|
|
||||||
if (NOT ${wayland-client_FOUND})
|
set_and_warn_library_found("wayland-client" wayland-client_FOUND WITH_GHOST_WAYLAND)
|
||||||
message(STATUS "wayland-client not found, disabling WITH_GHOST_WAYLAND")
|
set_and_warn_library_found("wayland-egl" wayland-egl_FOUND WITH_GHOST_WAYLAND)
|
||||||
set(WITH_GHOST_WAYLAND OFF)
|
set_and_warn_library_found("wayland-scanner" wayland-scanner_FOUND WITH_GHOST_WAYLAND)
|
||||||
endif()
|
set_and_warn_library_found("wayland-cursor" wayland-cursor_FOUND WITH_GHOST_WAYLAND)
|
||||||
if (NOT ${wayland-egl_FOUND})
|
set_and_warn_library_found("wayland-protocols" wayland-protocols_FOUND WITH_GHOST_WAYLAND)
|
||||||
message(STATUS "wayland-egl not found, disabling WITH_GHOST_WAYLAND")
|
set_and_warn_library_found("xkbcommon" xkbcommon_FOUND WITH_GHOST_WAYLAND)
|
||||||
set(WITH_GHOST_WAYLAND OFF)
|
|
||||||
endif()
|
|
||||||
if (NOT ${wayland-scanner_FOUND})
|
|
||||||
message(STATUS "wayland-scanner not found, disabling WITH_GHOST_WAYLAND")
|
|
||||||
set(WITH_GHOST_WAYLAND OFF)
|
|
||||||
endif()
|
|
||||||
if (NOT ${wayland-cursor_FOUND})
|
|
||||||
message(STATUS "wayland-cursor not found, disabling WITH_GHOST_WAYLAND")
|
|
||||||
set(WITH_GHOST_WAYLAND OFF)
|
|
||||||
endif()
|
|
||||||
if (NOT ${wayland-protocols_FOUND})
|
|
||||||
message(STATUS "wayland-protocols not found, disabling WITH_GHOST_WAYLAND")
|
|
||||||
set(WITH_GHOST_WAYLAND OFF)
|
|
||||||
endif()
|
|
||||||
if (NOT ${xkbcommon_FOUND})
|
|
||||||
message(STATUS "xkbcommon not found, disabling WITH_GHOST_WAYLAND")
|
|
||||||
set(WITH_GHOST_WAYLAND OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_GHOST_WAYLAND)
|
if(WITH_GHOST_WAYLAND)
|
||||||
if(WITH_GHOST_WAYLAND_DBUS)
|
if(WITH_GHOST_WAYLAND_DBUS)
|
||||||
@@ -791,6 +695,7 @@ if(WITH_GHOST_WAYLAND)
|
|||||||
else()
|
else()
|
||||||
pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner)
|
pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner)
|
||||||
endif()
|
endif()
|
||||||
|
mark_as_advanced(WAYLAND_SCANNER)
|
||||||
|
|
||||||
# When using dynamic loading, headers generated
|
# When using dynamic loading, headers generated
|
||||||
# from older versions of `wayland-scanner` aren't compatible.
|
# from older versions of `wayland-scanner` aren't compatible.
|
||||||
|
@@ -150,10 +150,11 @@ endif()
|
|||||||
|
|
||||||
# Debug Symbol format
|
# Debug Symbol format
|
||||||
# sccache # MSVC_ASAN # format # why
|
# sccache # MSVC_ASAN # format # why
|
||||||
# ON # ON # Z7 # sccache will only play nice with Z7
|
# ON # ON # Z7 # sccache will only play nice with Z7.
|
||||||
# ON # OFF # Z7 # sccache will only play nice with Z7
|
# ON # OFF # Z7 # sccache will only play nice with Z7.
|
||||||
# OFF # ON # Zi # Asan will not play nice with Edit and Continue
|
# OFF # ON # Zi # Asan will not play nice with Edit and Continue.
|
||||||
# OFF # OFF # ZI # Neither asan nor sscache is enabled Edit and Continue is available
|
# OFF # OFF # ZI # Neither ASAN nor sscache is enabled Edit and
|
||||||
|
# Continue is available.
|
||||||
|
|
||||||
# Release Symbol format
|
# Release Symbol format
|
||||||
# sccache # MSVC_ASAN # format # why
|
# sccache # MSVC_ASAN # format # why
|
||||||
@@ -326,18 +327,10 @@ if(WITH_FFTW3)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_IMAGE_WEBP)
|
if(WITH_IMAGE_WEBP)
|
||||||
windows_find_package(WebP)
|
|
||||||
if(NOT WEBP_FOUND)
|
|
||||||
if(EXISTS ${LIBDIR}/webp)
|
|
||||||
set(WEBP_INCLUDE_DIRS ${LIBDIR}/webp/include)
|
set(WEBP_INCLUDE_DIRS ${LIBDIR}/webp/include)
|
||||||
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
set(WEBP_ROOT_DIR ${LIBDIR}/webp)
|
||||||
set(WEBP_LIBRARIES ${LIBDIR}/webp/lib/webp.lib ${LIBDIR}/webp/lib/webpdemux.lib ${LIBDIR}/webp/lib/webpmux.lib)
|
set(WEBP_LIBRARIES ${LIBDIR}/webp/lib/webp.lib ${LIBDIR}/webp/lib/webpdemux.lib ${LIBDIR}/webp/lib/webpmux.lib)
|
||||||
set(WEBP_FOUND ON)
|
set(WEBP_FOUND ON)
|
||||||
else()
|
|
||||||
message(STATUS "WITH_IMAGE_WEBP is ON but WEBP libraries are not found, setting WITH_IMAGE_WEBP=OFF")
|
|
||||||
set(WITH_IMAGE_WEBP OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENCOLLADA)
|
if(WITH_OPENCOLLADA)
|
||||||
@@ -358,7 +351,6 @@ if(WITH_OPENCOLLADA)
|
|||||||
optimized ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
|
optimized ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
|
||||||
optimized ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
|
optimized ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
|
||||||
optimized ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
|
optimized ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
|
||||||
optimized ${OPENCOLLADA}/lib/opencollada/xml.lib
|
|
||||||
optimized ${OPENCOLLADA}/lib/opencollada/buffer.lib
|
optimized ${OPENCOLLADA}/lib/opencollada/buffer.lib
|
||||||
optimized ${OPENCOLLADA}/lib/opencollada/ftoa.lib
|
optimized ${OPENCOLLADA}/lib/opencollada/ftoa.lib
|
||||||
|
|
||||||
@@ -368,10 +360,14 @@ if(WITH_OPENCOLLADA)
|
|||||||
debug ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter_d.lib
|
debug ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter_d.lib
|
||||||
debug ${OPENCOLLADA}/lib/opencollada/MathMLSolver_d.lib
|
debug ${OPENCOLLADA}/lib/opencollada/MathMLSolver_d.lib
|
||||||
debug ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser_d.lib
|
debug ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser_d.lib
|
||||||
debug ${OPENCOLLADA}/lib/opencollada/xml_d.lib
|
|
||||||
debug ${OPENCOLLADA}/lib/opencollada/buffer_d.lib
|
debug ${OPENCOLLADA}/lib/opencollada/buffer_d.lib
|
||||||
debug ${OPENCOLLADA}/lib/opencollada/ftoa_d.lib
|
debug ${OPENCOLLADA}/lib/opencollada/ftoa_d.lib
|
||||||
)
|
)
|
||||||
|
if(EXISTS ${LIBDIR}/xml2/lib/libxml2s.lib) # 3.4 libraries
|
||||||
|
list(APPEND OPENCOLLADA_LIBRARIES ${LIBDIR}/xml2/lib/libxml2s.lib)
|
||||||
|
else()
|
||||||
|
list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/xml.lib)
|
||||||
|
endif()
|
||||||
|
|
||||||
list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
|
list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
|
||||||
|
|
||||||
@@ -679,11 +675,11 @@ endif()
|
|||||||
|
|
||||||
if(WITH_IMAGE_OPENJPEG)
|
if(WITH_IMAGE_OPENJPEG)
|
||||||
set(OPENJPEG ${LIBDIR}/openjpeg)
|
set(OPENJPEG ${LIBDIR}/openjpeg)
|
||||||
set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include/openjpeg-2.4)
|
set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include/openjpeg-2.5)
|
||||||
if(NOT EXISTS "${OPENJPEG_INCLUDE_DIRS}")
|
if(NOT EXISTS "${OPENJPEG_INCLUDE_DIRS}")
|
||||||
# when not found, could be an older lib folder with openjpeg 2.3
|
# when not found, could be an older lib folder with openjpeg 2.4
|
||||||
# to ease the transition period, fall back if 2.4 is not found.
|
# to ease the transition period, fall back if 2.5 is not found.
|
||||||
set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include/openjpeg-2.3)
|
set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include/openjpeg-2.4)
|
||||||
endif()
|
endif()
|
||||||
set(OPENJPEG_LIBRARIES ${OPENJPEG}/lib/openjp2.lib)
|
set(OPENJPEG_LIBRARIES ${OPENJPEG}/lib/openjp2.lib)
|
||||||
endif()
|
endif()
|
||||||
@@ -700,12 +696,6 @@ if(WITH_OPENSUBDIV)
|
|||||||
debug ${OPENSUBDIV_LIBPATH}/osdCPU_d.lib
|
debug ${OPENSUBDIV_LIBPATH}/osdCPU_d.lib
|
||||||
debug ${OPENSUBDIV_LIBPATH}/osdGPU_d.lib
|
debug ${OPENSUBDIV_LIBPATH}/osdGPU_d.lib
|
||||||
)
|
)
|
||||||
set(OPENSUBDIV_HAS_OPENMP TRUE)
|
|
||||||
set(OPENSUBDIV_HAS_TBB FALSE)
|
|
||||||
set(OPENSUBDIV_HAS_OPENCL TRUE)
|
|
||||||
set(OPENSUBDIV_HAS_CUDA FALSE)
|
|
||||||
set(OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK TRUE)
|
|
||||||
set(OPENSUBDIV_HAS_GLSL_COMPUTE TRUE)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -773,9 +763,11 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||||||
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
|
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
|
||||||
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
|
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
|
||||||
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
|
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
|
||||||
|
find_library(OSL_LIB_NOISE NAMES oslnoise PATHS ${CYCLES_OSL}/lib)
|
||||||
find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
|
find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
|
||||||
find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
|
find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
|
||||||
find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
|
find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
|
||||||
|
find_library(OSL_LIB_NOISE_DEBUG NAMES oslnoise_d PATHS ${CYCLES_OSL}/lib)
|
||||||
list(APPEND OSL_LIBRARIES
|
list(APPEND OSL_LIBRARIES
|
||||||
optimized ${OSL_LIB_COMP}
|
optimized ${OSL_LIB_COMP}
|
||||||
optimized ${OSL_LIB_EXEC}
|
optimized ${OSL_LIB_EXEC}
|
||||||
@@ -785,15 +777,14 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
|
|||||||
debug ${OSL_LIB_QUERY_DEBUG}
|
debug ${OSL_LIB_QUERY_DEBUG}
|
||||||
${PUGIXML_LIBRARIES}
|
${PUGIXML_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
if(OSL_LIB_NOISE)
|
||||||
|
list(APPEND OSL_LIBRARIES optimized ${OSL_LIB_NOISE})
|
||||||
|
endif()
|
||||||
|
if(OSL_LIB_NOISE_DEBUG)
|
||||||
|
list(APPEND OSL_LIBRARIES debug ${OSL_LIB_NOISE_DEBUG})
|
||||||
|
endif()
|
||||||
find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
|
find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
|
||||||
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
|
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
|
||||||
|
|
||||||
if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
|
|
||||||
set(OSL_FOUND TRUE)
|
|
||||||
else()
|
|
||||||
message(STATUS "OSL not found")
|
|
||||||
set(WITH_CYCLES_OSL OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)
|
||||||
@@ -893,7 +884,6 @@ if(WINDOWS_PYTHON_DEBUG)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_XR_OPENXR)
|
if(WITH_XR_OPENXR)
|
||||||
if(EXISTS ${LIBDIR}/xr_openxr_sdk)
|
|
||||||
set(XR_OPENXR_SDK ${LIBDIR}/xr_openxr_sdk)
|
set(XR_OPENXR_SDK ${LIBDIR}/xr_openxr_sdk)
|
||||||
set(XR_OPENXR_SDK_LIBPATH ${LIBDIR}/xr_openxr_sdk/lib)
|
set(XR_OPENXR_SDK_LIBPATH ${LIBDIR}/xr_openxr_sdk/lib)
|
||||||
set(XR_OPENXR_SDK_INCLUDE_DIR ${XR_OPENXR_SDK}/include)
|
set(XR_OPENXR_SDK_INCLUDE_DIR ${XR_OPENXR_SDK}/include)
|
||||||
@@ -905,10 +895,6 @@ if(WITH_XR_OPENXR)
|
|||||||
else()
|
else()
|
||||||
set(XR_OPENXR_SDK_LIBRARIES optimized ${XR_OPENXR_SDK_LIBPATH}/openxr_loader.lib debug ${XR_OPENXR_SDK_LIBPATH}/openxr_loaderd.lib)
|
set(XR_OPENXR_SDK_LIBRARIES optimized ${XR_OPENXR_SDK_LIBPATH}/openxr_loader.lib debug ${XR_OPENXR_SDK_LIBPATH}/openxr_loaderd.lib)
|
||||||
endif()
|
endif()
|
||||||
else()
|
|
||||||
message(WARNING "OpenXR-SDK was not found, disabling WITH_XR_OPENXR")
|
|
||||||
set(WITH_XR_OPENXR OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_GMP)
|
if(WITH_GMP)
|
||||||
@@ -925,18 +911,13 @@ if(WITH_POTRACE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_HARU)
|
if(WITH_HARU)
|
||||||
if(EXISTS ${LIBDIR}/haru)
|
|
||||||
set(HARU_FOUND ON)
|
set(HARU_FOUND ON)
|
||||||
set(HARU_ROOT_DIR ${LIBDIR}/haru)
|
set(HARU_ROOT_DIR ${LIBDIR}/haru)
|
||||||
set(HARU_INCLUDE_DIRS ${HARU_ROOT_DIR}/include)
|
set(HARU_INCLUDE_DIRS ${HARU_ROOT_DIR}/include)
|
||||||
set(HARU_LIBRARIES ${HARU_ROOT_DIR}/lib/libhpdfs.lib)
|
set(HARU_LIBRARIES ${HARU_ROOT_DIR}/lib/libhpdfs.lib)
|
||||||
else()
|
|
||||||
message(WARNING "Haru was not found, disabling WITH_HARU")
|
|
||||||
set(WITH_HARU OFF)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES_PATH_GUIDING)
|
if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
|
||||||
find_package(openpgl QUIET)
|
find_package(openpgl QUIET)
|
||||||
if(openpgl_FOUND)
|
if(openpgl_FOUND)
|
||||||
get_target_property(OPENPGL_LIBRARIES_RELEASE openpgl::openpgl LOCATION_RELEASE)
|
get_target_property(OPENPGL_LIBRARIES_RELEASE openpgl::openpgl LOCATION_RELEASE)
|
||||||
@@ -952,7 +933,7 @@ endif()
|
|||||||
set(ZSTD_INCLUDE_DIRS ${LIBDIR}/zstd/include)
|
set(ZSTD_INCLUDE_DIRS ${LIBDIR}/zstd/include)
|
||||||
set(ZSTD_LIBRARIES ${LIBDIR}/zstd/lib/zstd_static.lib)
|
set(ZSTD_LIBRARIES ${LIBDIR}/zstd/lib/zstd_static.lib)
|
||||||
|
|
||||||
if(WITH_CYCLES_DEVICE_ONEAPI)
|
if(WITH_CYCLES AND WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
set(LEVEL_ZERO_ROOT_DIR ${LIBDIR}/level_zero)
|
set(LEVEL_ZERO_ROOT_DIR ${LIBDIR}/level_zero)
|
||||||
set(CYCLES_SYCL ${LIBDIR}/dpcpp CACHE PATH "Path to oneAPI DPC++ compiler")
|
set(CYCLES_SYCL ${LIBDIR}/dpcpp CACHE PATH "Path to oneAPI DPC++ compiler")
|
||||||
if(EXISTS ${CYCLES_SYCL} AND NOT SYCL_ROOT_DIR)
|
if(EXISTS ${CYCLES_SYCL} AND NOT SYCL_ROOT_DIR)
|
||||||
|
@@ -58,6 +58,8 @@ buildbot:
|
|||||||
version: '5.2.21440'
|
version: '5.2.21440'
|
||||||
optix:
|
optix:
|
||||||
version: '7.3.0'
|
version: '7.3.0'
|
||||||
|
ocloc:
|
||||||
|
version: '101.3430'
|
||||||
cmake:
|
cmake:
|
||||||
default:
|
default:
|
||||||
version: any
|
version: any
|
||||||
|
@@ -208,12 +208,15 @@ def main() -> None:
|
|||||||
dist_dir = os.path.join(install_dir, "dist")
|
dist_dir = os.path.join(install_dir, "dist")
|
||||||
for f in os.listdir(dist_dir):
|
for f in os.listdir(dist_dir):
|
||||||
if f.endswith(".whl"):
|
if f.endswith(".whl"):
|
||||||
# No apparent way to override this ABI version with setuptools, so rename.
|
|
||||||
sys_py = "cp%d%d" % (sys.version_info.major, sys.version_info.minor)
|
|
||||||
sys_py_abi = sys_py + sys.abiflags
|
|
||||||
blender_py = "cp%d%d" % (python_version_number[0], python_version_number[1])
|
blender_py = "cp%d%d" % (python_version_number[0], python_version_number[1])
|
||||||
|
|
||||||
|
# No apparent way to override this ABI version with setuptools, so rename.
|
||||||
|
sys_py = "cp%d%d" % (sys.version_info.major, sys.version_info.minor)
|
||||||
|
if hasattr(sys, "abiflags"):
|
||||||
|
sys_py_abi = sys_py + sys.abiflags
|
||||||
renamed_f = f.replace(sys_py_abi, blender_py).replace(sys_py, blender_py)
|
renamed_f = f.replace(sys_py_abi, blender_py).replace(sys_py, blender_py)
|
||||||
|
else:
|
||||||
|
renamed_f = f.replace(sys_py, blender_py)
|
||||||
|
|
||||||
os.rename(os.path.join(dist_dir, f), os.path.join(output_dir, renamed_f))
|
os.rename(os.path.join(dist_dir, f), os.path.join(output_dir, renamed_f))
|
||||||
|
|
||||||
|
@@ -18,8 +18,13 @@ import sys
|
|||||||
import make_utils
|
import make_utils
|
||||||
from make_utils import call, check_output
|
from make_utils import call, check_output
|
||||||
|
|
||||||
|
from typing import (
|
||||||
|
List,
|
||||||
|
Optional,
|
||||||
|
)
|
||||||
|
|
||||||
def print_stage(text):
|
|
||||||
|
def print_stage(text: str) -> None:
|
||||||
print("")
|
print("")
|
||||||
print(text)
|
print(text)
|
||||||
print("")
|
print("")
|
||||||
@@ -27,7 +32,7 @@ def print_stage(text):
|
|||||||
# Parse arguments
|
# Parse arguments
|
||||||
|
|
||||||
|
|
||||||
def parse_arguments():
|
def parse_arguments() -> argparse.Namespace:
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("--no-libraries", action="store_true")
|
parser.add_argument("--no-libraries", action="store_true")
|
||||||
parser.add_argument("--no-blender", action="store_true")
|
parser.add_argument("--no-blender", action="store_true")
|
||||||
@@ -40,13 +45,13 @@ def parse_arguments():
|
|||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
def get_blender_git_root():
|
def get_blender_git_root() -> str:
|
||||||
return check_output([args.git_command, "rev-parse", "--show-toplevel"])
|
return check_output([args.git_command, "rev-parse", "--show-toplevel"])
|
||||||
|
|
||||||
# Setup for precompiled libraries and tests from svn.
|
# Setup for precompiled libraries and tests from svn.
|
||||||
|
|
||||||
|
|
||||||
def svn_update(args, release_version):
|
def svn_update(args: argparse.Namespace, release_version: Optional[str]) -> None:
|
||||||
svn_non_interactive = [args.svn_command, '--non-interactive']
|
svn_non_interactive = [args.svn_command, '--non-interactive']
|
||||||
|
|
||||||
lib_dirpath = os.path.join(get_blender_git_root(), '..', 'lib')
|
lib_dirpath = os.path.join(get_blender_git_root(), '..', 'lib')
|
||||||
@@ -99,42 +104,42 @@ def svn_update(args, release_version):
|
|||||||
call(svn_non_interactive + ["checkout", svn_url_tests, lib_tests_dirpath])
|
call(svn_non_interactive + ["checkout", svn_url_tests, lib_tests_dirpath])
|
||||||
|
|
||||||
# Update precompiled libraries and tests
|
# Update precompiled libraries and tests
|
||||||
print_stage("Updating Precompiled Libraries and Tests")
|
|
||||||
|
|
||||||
if os.path.isdir(lib_dirpath):
|
if not os.path.isdir(lib_dirpath):
|
||||||
|
print("Library path: %r, not found, skipping" % lib_dirpath)
|
||||||
|
else:
|
||||||
|
paths_local_and_remote = []
|
||||||
|
if os.path.exists(os.path.join(lib_dirpath, ".svn")):
|
||||||
|
print_stage("Updating Precompiled Libraries and Tests (one repository)")
|
||||||
|
paths_local_and_remote.append((lib_dirpath, svn_url))
|
||||||
|
else:
|
||||||
|
print_stage("Updating Precompiled Libraries and Tests (multiple repositories)")
|
||||||
|
# Separate paths checked out.
|
||||||
for dirname in os.listdir(lib_dirpath):
|
for dirname in os.listdir(lib_dirpath):
|
||||||
dirpath = os.path.join(lib_dirpath, dirname)
|
if dirname.startswith("."):
|
||||||
|
|
||||||
if dirname == ".svn":
|
|
||||||
# Cleanup must be run from svn root directory if it exists.
|
|
||||||
if not make_utils.command_missing(args.svn_command):
|
|
||||||
call(svn_non_interactive + ["cleanup", lib_dirpath])
|
|
||||||
continue
|
|
||||||
elif dirname.startswith("."):
|
|
||||||
# Temporary paths such as ".mypy_cache" will report a warning, skip hidden directories.
|
# Temporary paths such as ".mypy_cache" will report a warning, skip hidden directories.
|
||||||
continue
|
continue
|
||||||
|
|
||||||
svn_dirpath = os.path.join(dirpath, ".svn")
|
dirpath = os.path.join(lib_dirpath, dirname)
|
||||||
svn_root_dirpath = os.path.join(lib_dirpath, ".svn")
|
if not (os.path.isdir(dirpath) and os.path.exists(os.path.join(dirpath, ".svn"))):
|
||||||
|
continue
|
||||||
|
|
||||||
if (
|
paths_local_and_remote.append((dirpath, svn_url + dirname))
|
||||||
os.path.isdir(dirpath) and
|
|
||||||
(os.path.exists(svn_dirpath) or os.path.exists(svn_root_dirpath))
|
if paths_local_and_remote:
|
||||||
):
|
|
||||||
if make_utils.command_missing(args.svn_command):
|
if make_utils.command_missing(args.svn_command):
|
||||||
sys.stderr.write("svn not found, can't update libraries\n")
|
sys.stderr.write("svn not found, can't update libraries\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Cleanup to continue with interrupted downloads.
|
for dirpath, svn_url_full in paths_local_and_remote:
|
||||||
if os.path.exists(svn_dirpath):
|
|
||||||
call(svn_non_interactive + ["cleanup", dirpath])
|
call(svn_non_interactive + ["cleanup", dirpath])
|
||||||
# Switch to appropriate branch and update.
|
# Switch to appropriate branch and update.
|
||||||
call(svn_non_interactive + ["switch", svn_url + dirname, dirpath], exit_on_error=False)
|
call(svn_non_interactive + ["switch", svn_url_full, dirpath], exit_on_error=False)
|
||||||
call(svn_non_interactive + ["update", dirpath])
|
call(svn_non_interactive + ["update", dirpath])
|
||||||
|
|
||||||
|
|
||||||
# Test if git repo can be updated.
|
# Test if git repo can be updated.
|
||||||
def git_update_skip(args, check_remote_exists=True):
|
def git_update_skip(args: argparse.Namespace, check_remote_exists: bool = True) -> str:
|
||||||
if make_utils.command_missing(args.git_command):
|
if make_utils.command_missing(args.git_command):
|
||||||
sys.stderr.write("git not found, can't update code\n")
|
sys.stderr.write("git not found, can't update code\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@@ -166,13 +171,17 @@ def git_update_skip(args, check_remote_exists=True):
|
|||||||
|
|
||||||
|
|
||||||
# Update blender repository.
|
# Update blender repository.
|
||||||
def blender_update(args):
|
def blender_update(args: argparse.Namespace) -> None:
|
||||||
print_stage("Updating Blender Git Repository")
|
print_stage("Updating Blender Git Repository")
|
||||||
call([args.git_command, "pull", "--rebase"])
|
call([args.git_command, "pull", "--rebase"])
|
||||||
|
|
||||||
|
|
||||||
# Update submodules.
|
# Update submodules.
|
||||||
def submodules_update(args, release_version, branch):
|
def submodules_update(
|
||||||
|
args: argparse.Namespace,
|
||||||
|
release_version: Optional[str],
|
||||||
|
branch: Optional[str],
|
||||||
|
) -> str:
|
||||||
print_stage("Updating Submodules")
|
print_stage("Updating Submodules")
|
||||||
if make_utils.command_missing(args.git_command):
|
if make_utils.command_missing(args.git_command):
|
||||||
sys.stderr.write("git not found, can't update code\n")
|
sys.stderr.write("git not found, can't update code\n")
|
||||||
@@ -214,7 +223,8 @@ def submodules_update(args, release_version, branch):
|
|||||||
elif make_utils.git_branch_exists(args.git_command, submodule_branch_fallback):
|
elif make_utils.git_branch_exists(args.git_command, submodule_branch_fallback):
|
||||||
submodule_branch = submodule_branch_fallback
|
submodule_branch = submodule_branch_fallback
|
||||||
else:
|
else:
|
||||||
submodule_branch = None
|
# Skip.
|
||||||
|
submodule_branch = ""
|
||||||
|
|
||||||
# Switch to branch and pull.
|
# Switch to branch and pull.
|
||||||
if submodule_branch:
|
if submodule_branch:
|
||||||
|
@@ -80,7 +80,7 @@ def git_tag(git_command: str) -> Optional[str]:
|
|||||||
return tag.strip().decode('utf8')
|
return tag.strip().decode('utf8')
|
||||||
|
|
||||||
|
|
||||||
def git_branch_release_version(branch: str, tag: str) -> Optional[str]:
|
def git_branch_release_version(branch: str, tag: Optional[str]) -> Optional[str]:
|
||||||
re_match = re.search("^blender-v(.*)-release$", branch)
|
re_match = re.search("^blender-v(.*)-release$", branch)
|
||||||
release_version = None
|
release_version = None
|
||||||
if re_match:
|
if re_match:
|
||||||
|
@@ -80,9 +80,11 @@ if NOT "%1" == "" (
|
|||||||
REM Non-Build Commands
|
REM Non-Build Commands
|
||||||
) else if "%1" == "update" (
|
) else if "%1" == "update" (
|
||||||
SET BUILD_UPDATE=1
|
SET BUILD_UPDATE=1
|
||||||
|
SET BUILD_UPDATE_SVN=1
|
||||||
set BUILD_UPDATE_ARGS=
|
set BUILD_UPDATE_ARGS=
|
||||||
) else if "%1" == "code_update" (
|
) else if "%1" == "code_update" (
|
||||||
SET BUILD_UPDATE=1
|
SET BUILD_UPDATE=1
|
||||||
|
SET BUILD_UPDATE_SVN=0
|
||||||
set BUILD_UPDATE_ARGS="--no-libraries"
|
set BUILD_UPDATE_ARGS="--no-libraries"
|
||||||
) else if "%1" == "ninja" (
|
) else if "%1" == "ninja" (
|
||||||
SET BUILD_WITH_NINJA=1
|
SET BUILD_WITH_NINJA=1
|
||||||
|
@@ -34,3 +34,4 @@ set BUILD_WITH_SCCACHE=
|
|||||||
set ICONS=
|
set ICONS=
|
||||||
set ICONS_GEOM=
|
set ICONS_GEOM=
|
||||||
set DOC_PY=
|
set DOC_PY=
|
||||||
|
SET BUILD_UPDATE_SVN=
|
24
build_files/windows/svn_update.cmd
Normal file
24
build_files/windows/svn_update.cmd
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
if "%BUILD_VS_YEAR%"=="2019" set BUILD_VS_LIBDIRPOST=vc15
|
||||||
|
if "%BUILD_VS_YEAR%"=="2022" set BUILD_VS_LIBDIRPOST=vc15
|
||||||
|
|
||||||
|
set BUILD_VS_SVNDIR=win64_%BUILD_VS_LIBDIRPOST%
|
||||||
|
set BUILD_VS_LIBDIR="%BLENDER_DIR%..\lib\%BUILD_VS_SVNDIR%"
|
||||||
|
|
||||||
|
cd %BUILD_VS_LIBDIR%
|
||||||
|
:RETRY
|
||||||
|
"%SVN%" update
|
||||||
|
if errorlevel 1 (
|
||||||
|
set /p LibRetry= "Error during update, retry? y/n"
|
||||||
|
if /I "!LibRetry!"=="Y" (
|
||||||
|
"%SVN%" cleanup
|
||||||
|
goto RETRY
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
echo Error: Download of external libraries failed.
|
||||||
|
echo This is needed for building, please manually run 'svn cleanup' and 'svn update' in
|
||||||
|
echo %BUILD_VS_LIBDIR% , until this is resolved you CANNOT make a successful blender build
|
||||||
|
echo.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
cd %BLENDER_DIR%
|
@@ -38,7 +38,7 @@ PROJECT_NAME = Blender
|
|||||||
# could be handy for archiving the generated documentation or if some version
|
# could be handy for archiving the generated documentation or if some version
|
||||||
# control system is used.
|
# control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = V3.4
|
PROJECT_NUMBER = V3.5
|
||||||
|
|
||||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||||
# for a project that appears at the top of each page and should give viewer a
|
# for a project that appears at the top of each page and should give viewer a
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
sphinx==5.2.3
|
sphinx==5.3.0
|
||||||
|
|
||||||
# Sphinx dependencies that are important
|
# Sphinx dependencies that are important
|
||||||
Jinja2==3.1.2
|
Jinja2==3.1.2
|
||||||
Pygments==2.13.0
|
Pygments==2.13.0
|
||||||
docutils==0.17.1
|
docutils==0.17.1
|
||||||
snowballstemmer==2.2.0
|
snowballstemmer==2.2.0
|
||||||
babel==2.10.3
|
babel==2.11.0
|
||||||
requests==2.28.1
|
requests==2.28.1
|
||||||
|
|
||||||
# Only needed to match the theme used for the official documentation.
|
# Only needed to match the theme used for the official documentation.
|
||||||
# Without this theme, the default theme will be used.
|
# Without this theme, the default theme will be used.
|
||||||
sphinx_rtd_theme==1.0.0
|
sphinx_rtd_theme==1.1.0
|
||||||
|
@@ -1459,15 +1459,15 @@ def pyrna2sphinx(basepath):
|
|||||||
# If the link has been written, no need to inline the enum items.
|
# If the link has been written, no need to inline the enum items.
|
||||||
enum_text = "" if enum_descr_override else pyrna_enum2sphinx(prop)
|
enum_text = "" if enum_descr_override else pyrna_enum2sphinx(prop)
|
||||||
if prop.name or prop.description or enum_text:
|
if prop.name or prop.description or enum_text:
|
||||||
fw(ident + ":%s%s:\n\n" % (id_name, identifier))
|
fw(ident + ":%s%s: " % (id_name, identifier))
|
||||||
|
|
||||||
if prop.name or prop.description:
|
if prop.name or prop.description:
|
||||||
fw(indent(", ".join(val for val in (prop.name, prop.description) if val), ident + " ") + "\n\n")
|
fw(", ".join(val for val in (prop.name, prop.description.replace("\n", "")) if val) + "\n")
|
||||||
|
|
||||||
# Special exception, can't use generic code here for enums.
|
# Special exception, can't use generic code here for enums.
|
||||||
if enum_text:
|
if enum_text:
|
||||||
write_indented_lines(ident + " ", fw, enum_text)
|
|
||||||
fw("\n")
|
fw("\n")
|
||||||
|
write_indented_lines(ident + " ", fw, enum_text)
|
||||||
del enum_text
|
del enum_text
|
||||||
# end enum exception
|
# end enum exception
|
||||||
|
|
||||||
|
2
extern/hipew/src/hipew.c
vendored
2
extern/hipew/src/hipew.c
vendored
@@ -253,7 +253,7 @@ static int hipewHipInit(void) {
|
|||||||
/* Default installation path. */
|
/* Default installation path. */
|
||||||
const char *hip_paths[] = {"", NULL};
|
const char *hip_paths[] = {"", NULL};
|
||||||
#else
|
#else
|
||||||
const char *hip_paths[] = {"/opt/rocm/hip/lib/libamdhip64.so", NULL};
|
const char *hip_paths[] = {"libamdhip64.so", "/opt/rocm/hip/lib/libamdhip64.so", NULL};
|
||||||
#endif
|
#endif
|
||||||
static int initialized = 0;
|
static int initialized = 0;
|
||||||
static int result = 0;
|
static int result = 0;
|
||||||
|
3
extern/mantaflow/CMakeLists.txt
vendored
3
extern/mantaflow/CMakeLists.txt
vendored
@@ -25,7 +25,8 @@ set(MANTAVERSION "0.13")
|
|||||||
add_definitions(-DWITH_FLUID=1)
|
add_definitions(-DWITH_FLUID=1)
|
||||||
|
|
||||||
# Compile Mantaflow dependencies too (e.g. cnpy for numpy file IO).
|
# Compile Mantaflow dependencies too (e.g. cnpy for numpy file IO).
|
||||||
# Make sure that dependencies exist before enabling this option by updating the source files in extern/
|
# Make sure that dependencies exist before enabling this option
|
||||||
|
# by updating the source files in `extern/`.
|
||||||
set(WITH_MANTA_DEPENDENCIES 0)
|
set(WITH_MANTA_DEPENDENCIES 0)
|
||||||
|
|
||||||
# Enable Mantaflow numpy support
|
# Enable Mantaflow numpy support
|
||||||
|
@@ -263,8 +263,7 @@ if(WITH_CYCLES_DEVICE_OPTIX)
|
|||||||
${OPTIX_INCLUDE_DIR}
|
${OPTIX_INCLUDE_DIR}
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
message(STATUS "OptiX not found, disabling it from Cycles")
|
set_and_warn_library_found("OptiX" OPTIX_FOUND WITH_CYCLES_DEVICE_OPTIX)
|
||||||
set(WITH_CYCLES_DEVICE_OPTIX OFF)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -387,8 +386,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND (NOT WITH_USD))
|
if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND (NOT WITH_USD))
|
||||||
message(STATUS "USD not found, disabling WITH_CYCLES_HYDRA_RENDER_DELEGATE")
|
set_and_warn_library_found("USD" WITH_USD WITH_CYCLES_HYDRA_RENDER_DELEGATE)
|
||||||
set(WITH_CYCLES_HYDRA_RENDER_DELEGATE OFF)
|
|
||||||
endif()
|
endif()
|
||||||
if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND (NOT WITH_BLENDER) AND (NOT WITH_CYCLES_STANDALONE))
|
if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND (NOT WITH_BLENDER) AND (NOT WITH_CYCLES_STANDALONE))
|
||||||
set(CYCLES_INSTALL_PATH ${CYCLES_INSTALL_PATH}/hdCycles/resources)
|
set(CYCLES_INSTALL_PATH ${CYCLES_INSTALL_PATH}/hdCycles/resources)
|
||||||
|
@@ -43,7 +43,10 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
|
if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
|
||||||
list(APPEND INC_SYS ${Epoxy_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS})
|
list(APPEND INC_SYS
|
||||||
|
${Epoxy_INCLUDE_DIRS}
|
||||||
|
${SDL2_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
list(APPEND LIB ${Epoxy_LIBRARIES} ${SDL2_LIBRARIES})
|
list(APPEND LIB ${Epoxy_LIBRARIES} ${SDL2_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -209,22 +209,25 @@ def list_render_passes(scene, srl):
|
|||||||
yield ("Debug Sample Count", "X", 'VALUE')
|
yield ("Debug Sample Count", "X", 'VALUE')
|
||||||
|
|
||||||
# Cryptomatte passes.
|
# Cryptomatte passes.
|
||||||
crypto_depth = (srl.pass_cryptomatte_depth + 1) // 2
|
# NOTE: Name channels are lowercase RGBA so that compression rules check in OpenEXR DWA code
|
||||||
|
# uses lossless compression. Reportedly this naming is the only one which works good from the
|
||||||
|
# interoperability point of view. Using XYZW naming is not portable.
|
||||||
|
crypto_depth = (min(16, srl.pass_cryptomatte_depth) + 1) // 2
|
||||||
if srl.use_pass_cryptomatte_object:
|
if srl.use_pass_cryptomatte_object:
|
||||||
for i in range(0, crypto_depth):
|
for i in range(0, crypto_depth):
|
||||||
yield ("CryptoObject" + '{:02d}'.format(i), "RGBA", 'COLOR')
|
yield ("CryptoObject" + '{:02d}'.format(i), "rgba", 'COLOR')
|
||||||
if srl.use_pass_cryptomatte_material:
|
if srl.use_pass_cryptomatte_material:
|
||||||
for i in range(0, crypto_depth):
|
for i in range(0, crypto_depth):
|
||||||
yield ("CryptoMaterial" + '{:02d}'.format(i), "RGBA", 'COLOR')
|
yield ("CryptoMaterial" + '{:02d}'.format(i), "rgba", 'COLOR')
|
||||||
if srl.use_pass_cryptomatte_asset:
|
if srl.use_pass_cryptomatte_asset:
|
||||||
for i in range(0, crypto_depth):
|
for i in range(0, crypto_depth):
|
||||||
yield ("CryptoAsset" + '{:02d}'.format(i), "RGBA", 'COLOR')
|
yield ("CryptoAsset" + '{:02d}'.format(i), "rgba", 'COLOR')
|
||||||
|
|
||||||
# Denoising passes.
|
# Denoising passes.
|
||||||
if scene.cycles.use_denoising and crl.use_denoising:
|
if scene.cycles.use_denoising and crl.use_denoising:
|
||||||
yield ("Noisy Image", "RGBA", 'COLOR')
|
yield ("Noisy Image", "RGBA", 'COLOR')
|
||||||
if crl.use_pass_shadow_catcher:
|
if crl.use_pass_shadow_catcher:
|
||||||
yield ("Noisy Shadow Catcher", "RGBA", 'COLOR')
|
yield ("Noisy Shadow Catcher", "RGB", 'COLOR')
|
||||||
if crl.denoising_store_passes:
|
if crl.denoising_store_passes:
|
||||||
yield ("Denoising Normal", "XYZ", 'VECTOR')
|
yield ("Denoising Normal", "XYZ", 'VECTOR')
|
||||||
yield ("Denoising Albedo", "RGB", 'COLOR')
|
yield ("Denoising Albedo", "RGB", 'COLOR')
|
||||||
@@ -232,6 +235,8 @@ def list_render_passes(scene, srl):
|
|||||||
|
|
||||||
# Custom AOV passes.
|
# Custom AOV passes.
|
||||||
for aov in srl.aovs:
|
for aov in srl.aovs:
|
||||||
|
if not aov.is_valid:
|
||||||
|
continue
|
||||||
if aov.type == 'VALUE':
|
if aov.type == 'VALUE':
|
||||||
yield (aov.name, "X", 'VALUE')
|
yield (aov.name, "X", 'VALUE')
|
||||||
else:
|
else:
|
||||||
|
@@ -60,13 +60,14 @@ enum_filter_types = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
enum_panorama_types = (
|
enum_panorama_types = (
|
||||||
('EQUIRECTANGULAR', "Equirectangular", "Render the scene with a spherical camera, also known as Lat Long panorama"),
|
('EQUIRECTANGULAR', "Equirectangular", "Spherical camera for environment maps, also known as Lat Long panorama", 0),
|
||||||
('FISHEYE_EQUIDISTANT', "Fisheye Equidistant", "Ideal for fulldomes, ignore the sensor dimensions"),
|
('EQUIANGULAR_CUBEMAP_FACE', "Equiangular Cubemap Face", "Single face of an equiangular cubemap", 5),
|
||||||
|
('MIRRORBALL', "Mirror Ball", "Mirror ball mapping for environment maps", 3),
|
||||||
|
('FISHEYE_EQUIDISTANT', "Fisheye Equidistant", "Ideal for fulldomes, ignore the sensor dimensions", 1),
|
||||||
('FISHEYE_EQUISOLID', "Fisheye Equisolid",
|
('FISHEYE_EQUISOLID', "Fisheye Equisolid",
|
||||||
"Similar to most fisheye modern lens, takes sensor dimensions into consideration"),
|
"Similar to most fisheye modern lens, takes sensor dimensions into consideration", 2),
|
||||||
('MIRRORBALL', "Mirror Ball", "Uses the mirror ball mapping"),
|
|
||||||
('FISHEYE_LENS_POLYNOMIAL', "Fisheye Lens Polynomial",
|
('FISHEYE_LENS_POLYNOMIAL', "Fisheye Lens Polynomial",
|
||||||
"Defines the lens projection as polynomial to allow real world camera lenses to be mimicked"),
|
"Defines the lens projection as polynomial to allow real world camera lenses to be mimicked", 4),
|
||||||
)
|
)
|
||||||
|
|
||||||
enum_curve_shape = (
|
enum_curve_shape = (
|
||||||
@@ -1636,11 +1637,13 @@ class CyclesPreferences(bpy.types.AddonPreferences):
|
|||||||
col.label(text="and AMD driver version 22.10 or newer", icon='BLANK1')
|
col.label(text="and AMD driver version 22.10 or newer", icon='BLANK1')
|
||||||
elif device_type == 'ONEAPI':
|
elif device_type == 'ONEAPI':
|
||||||
import sys
|
import sys
|
||||||
col.label(text="Requires Intel GPU with Xe-HPG architecture", icon='BLANK1')
|
|
||||||
if sys.platform.startswith("win"):
|
if sys.platform.startswith("win"):
|
||||||
|
col.label(text="Requires Intel GPU with Xe-HPG architecture", icon='BLANK1')
|
||||||
col.label(text="and Windows driver version 101.3430 or newer", icon='BLANK1')
|
col.label(text="and Windows driver version 101.3430 or newer", icon='BLANK1')
|
||||||
elif sys.platform.startswith("linux"):
|
elif sys.platform.startswith("linux"):
|
||||||
col.label(text="and Linux driver version xx.xx.23904 or newer", icon='BLANK1')
|
col.label(text="Requires Intel GPU with Xe-HPG architecture and", icon='BLANK1')
|
||||||
|
col.label(text=" - Linux driver version xx.xx.23904 or newer", icon='BLANK1')
|
||||||
|
col.label(text=" - oneAPI Level-Zero Loader", icon='BLANK1')
|
||||||
elif device_type == 'METAL':
|
elif device_type == 'METAL':
|
||||||
col.label(text="Requires Apple Silicon with macOS 12.2 or newer", icon='BLANK1')
|
col.label(text="Requires Apple Silicon with macOS 12.2 or newer", icon='BLANK1')
|
||||||
col.label(text="or AMD with macOS 12.3 or newer", icon='BLANK1')
|
col.label(text="or AMD with macOS 12.3 or newer", icon='BLANK1')
|
||||||
@@ -1651,6 +1654,7 @@ class CyclesPreferences(bpy.types.AddonPreferences):
|
|||||||
box.prop(
|
box.prop(
|
||||||
device, "use", text=device.name
|
device, "use", text=device.name
|
||||||
.replace('(TM)', unicodedata.lookup('TRADE MARK SIGN'))
|
.replace('(TM)', unicodedata.lookup('TRADE MARK SIGN'))
|
||||||
|
.replace('(tm)', unicodedata.lookup('TRADE MARK SIGN'))
|
||||||
.replace('(R)', unicodedata.lookup('REGISTERED SIGN'))
|
.replace('(R)', unicodedata.lookup('REGISTERED SIGN'))
|
||||||
.replace('(C)', unicodedata.lookup('COPYRIGHT SIGN'))
|
.replace('(C)', unicodedata.lookup('COPYRIGHT SIGN'))
|
||||||
)
|
)
|
||||||
|
@@ -150,6 +150,16 @@ def get_effective_preview_denoiser(context):
|
|||||||
return 'OIDN'
|
return 'OIDN'
|
||||||
|
|
||||||
|
|
||||||
|
def use_mnee(context):
|
||||||
|
# The MNEE kernel doesn't compile on macOS < 13.
|
||||||
|
if use_metal(context):
|
||||||
|
import platform
|
||||||
|
v, _, _ = platform.mac_ver()
|
||||||
|
if float(v) < 13.0:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
class CYCLES_RENDER_PT_sampling(CyclesButtonsPanel, Panel):
|
class CYCLES_RENDER_PT_sampling(CyclesButtonsPanel, Panel):
|
||||||
bl_label = "Sampling"
|
bl_label = "Sampling"
|
||||||
|
|
||||||
@@ -1235,7 +1245,7 @@ class CYCLES_OBJECT_PT_shading_caustics(CyclesButtonsPanel, Panel):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
return CyclesButtonsPanel.poll(context) and not use_metal(context) and context.object.type != 'LIGHT'
|
return CyclesButtonsPanel.poll(context) and use_mnee(context) and context.object.type != 'LIGHT'
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
@@ -1449,7 +1459,7 @@ class CYCLES_LIGHT_PT_light(CyclesButtonsPanel, Panel):
|
|||||||
sub.active = not (light.type == 'AREA' and clamp.is_portal)
|
sub.active = not (light.type == 'AREA' and clamp.is_portal)
|
||||||
sub.prop(clamp, "cast_shadow")
|
sub.prop(clamp, "cast_shadow")
|
||||||
sub.prop(clamp, "use_multiple_importance_sampling", text="Multiple Importance")
|
sub.prop(clamp, "use_multiple_importance_sampling", text="Multiple Importance")
|
||||||
if not use_metal(context):
|
if use_mnee(context):
|
||||||
sub.prop(clamp, "is_caustics_light", text="Shadow Caustics")
|
sub.prop(clamp, "is_caustics_light", text="Shadow Caustics")
|
||||||
|
|
||||||
if light.type == 'AREA':
|
if light.type == 'AREA':
|
||||||
|
@@ -232,7 +232,7 @@ static void export_pointcloud_motion(PointCloud *pointcloud,
|
|||||||
|
|
||||||
for (int i = 0; i < std::min(num_points, b_points_num); i++) {
|
for (int i = 0; i < std::min(num_points, b_points_num); i++) {
|
||||||
const float3 co = get_float3(b_attr_position.data[i].vector());
|
const float3 co = get_float3(b_attr_position.data[i].vector());
|
||||||
const float radius = b_attr_radius ? b_attr_radius->data[i].value() : 0.0f;
|
const float radius = b_attr_radius ? b_attr_radius->data[i].value() : 0.01f;
|
||||||
float3 P = co;
|
float3 P = co;
|
||||||
P.w = radius;
|
P.w = radius;
|
||||||
mP[i] = P;
|
mP[i] = P;
|
||||||
|
@@ -497,9 +497,9 @@ void BlenderSession::render_frame_finish()
|
|||||||
session->full_buffer_written_cb = function_null;
|
session->full_buffer_written_cb = function_null;
|
||||||
|
|
||||||
/* The display driver is the source of drawing context for both drawing and possible graphics
|
/* The display driver is the source of drawing context for both drawing and possible graphics
|
||||||
* interop objects in the path trace. Once the frame is finished the OpenGL context might be
|
* interoperability objects in the path trace. Once the frame is finished the OpenGL context
|
||||||
* freed form Blender side. Need to ensure that all GPU resources are freed prior to that
|
* might be freed form Blender side. Need to ensure that all GPU resources are freed prior to
|
||||||
* point.
|
* that point.
|
||||||
* Ideally would only do this when OpenGL context is actually destroyed, but there is no way to
|
* Ideally would only do this when OpenGL context is actually destroyed, but there is no way to
|
||||||
* know when this happens (at least in the code at the time when this comment was written).
|
* know when this happens (at least in the code at the time when this comment was written).
|
||||||
* The penalty of re-creating resources on every frame is unlikely to be noticed. */
|
* The penalty of re-creating resources on every frame is unlikely to be noticed. */
|
||||||
|
@@ -575,68 +575,72 @@ void BlenderSync::sync_images()
|
|||||||
|
|
||||||
/* Passes */
|
/* Passes */
|
||||||
|
|
||||||
static PassType get_blender_pass_type(BL::RenderPass &b_pass)
|
static bool get_known_pass_type(BL::RenderPass &b_pass, PassType &type, PassMode &mode)
|
||||||
{
|
{
|
||||||
string name = b_pass.name();
|
string name = b_pass.name();
|
||||||
#define MAP_PASS(passname, passtype) \
|
#define MAP_PASS(passname, passtype, noisy) \
|
||||||
if (name == passname) { \
|
if (name == passname) { \
|
||||||
return passtype; \
|
type = passtype; \
|
||||||
|
mode = (noisy) ? PassMode::NOISY : PassMode::DENOISED; \
|
||||||
|
return true; \
|
||||||
} \
|
} \
|
||||||
((void)0)
|
((void)0)
|
||||||
|
|
||||||
/* NOTE: Keep in sync with defined names from DNA_scene_types.h */
|
/* NOTE: Keep in sync with defined names from engine.py */
|
||||||
|
|
||||||
MAP_PASS("Combined", PASS_COMBINED);
|
MAP_PASS("Combined", PASS_COMBINED, false);
|
||||||
MAP_PASS("Noisy Image", PASS_COMBINED);
|
MAP_PASS("Noisy Image", PASS_COMBINED, true);
|
||||||
|
|
||||||
MAP_PASS("Depth", PASS_DEPTH);
|
MAP_PASS("Depth", PASS_DEPTH, false);
|
||||||
MAP_PASS("Mist", PASS_MIST);
|
MAP_PASS("Mist", PASS_MIST, false);
|
||||||
MAP_PASS("Position", PASS_POSITION);
|
MAP_PASS("Position", PASS_POSITION, false);
|
||||||
MAP_PASS("Normal", PASS_NORMAL);
|
MAP_PASS("Normal", PASS_NORMAL, false);
|
||||||
MAP_PASS("IndexOB", PASS_OBJECT_ID);
|
MAP_PASS("IndexOB", PASS_OBJECT_ID, false);
|
||||||
MAP_PASS("UV", PASS_UV);
|
MAP_PASS("UV", PASS_UV, false);
|
||||||
MAP_PASS("Vector", PASS_MOTION);
|
MAP_PASS("Vector", PASS_MOTION, false);
|
||||||
MAP_PASS("IndexMA", PASS_MATERIAL_ID);
|
MAP_PASS("IndexMA", PASS_MATERIAL_ID, false);
|
||||||
|
|
||||||
MAP_PASS("DiffDir", PASS_DIFFUSE_DIRECT);
|
MAP_PASS("DiffDir", PASS_DIFFUSE_DIRECT, false);
|
||||||
MAP_PASS("GlossDir", PASS_GLOSSY_DIRECT);
|
MAP_PASS("GlossDir", PASS_GLOSSY_DIRECT, false);
|
||||||
MAP_PASS("TransDir", PASS_TRANSMISSION_DIRECT);
|
MAP_PASS("TransDir", PASS_TRANSMISSION_DIRECT, false);
|
||||||
MAP_PASS("VolumeDir", PASS_VOLUME_DIRECT);
|
MAP_PASS("VolumeDir", PASS_VOLUME_DIRECT, false);
|
||||||
|
|
||||||
MAP_PASS("DiffInd", PASS_DIFFUSE_INDIRECT);
|
MAP_PASS("DiffInd", PASS_DIFFUSE_INDIRECT, false);
|
||||||
MAP_PASS("GlossInd", PASS_GLOSSY_INDIRECT);
|
MAP_PASS("GlossInd", PASS_GLOSSY_INDIRECT, false);
|
||||||
MAP_PASS("TransInd", PASS_TRANSMISSION_INDIRECT);
|
MAP_PASS("TransInd", PASS_TRANSMISSION_INDIRECT, false);
|
||||||
MAP_PASS("VolumeInd", PASS_VOLUME_INDIRECT);
|
MAP_PASS("VolumeInd", PASS_VOLUME_INDIRECT, false);
|
||||||
|
|
||||||
MAP_PASS("DiffCol", PASS_DIFFUSE_COLOR);
|
MAP_PASS("DiffCol", PASS_DIFFUSE_COLOR, false);
|
||||||
MAP_PASS("GlossCol", PASS_GLOSSY_COLOR);
|
MAP_PASS("GlossCol", PASS_GLOSSY_COLOR, false);
|
||||||
MAP_PASS("TransCol", PASS_TRANSMISSION_COLOR);
|
MAP_PASS("TransCol", PASS_TRANSMISSION_COLOR, false);
|
||||||
|
|
||||||
MAP_PASS("Emit", PASS_EMISSION);
|
MAP_PASS("Emit", PASS_EMISSION, false);
|
||||||
MAP_PASS("Env", PASS_BACKGROUND);
|
MAP_PASS("Env", PASS_BACKGROUND, false);
|
||||||
MAP_PASS("AO", PASS_AO);
|
MAP_PASS("AO", PASS_AO, false);
|
||||||
MAP_PASS("Shadow", PASS_SHADOW);
|
MAP_PASS("Shadow", PASS_SHADOW, false);
|
||||||
|
|
||||||
MAP_PASS("BakePrimitive", PASS_BAKE_PRIMITIVE);
|
MAP_PASS("BakePrimitive", PASS_BAKE_PRIMITIVE, false);
|
||||||
MAP_PASS("BakeDifferential", PASS_BAKE_DIFFERENTIAL);
|
MAP_PASS("BakeDifferential", PASS_BAKE_DIFFERENTIAL, false);
|
||||||
|
|
||||||
MAP_PASS("Denoising Normal", PASS_DENOISING_NORMAL);
|
MAP_PASS("Denoising Normal", PASS_DENOISING_NORMAL, true);
|
||||||
MAP_PASS("Denoising Albedo", PASS_DENOISING_ALBEDO);
|
MAP_PASS("Denoising Albedo", PASS_DENOISING_ALBEDO, true);
|
||||||
MAP_PASS("Denoising Depth", PASS_DENOISING_DEPTH);
|
MAP_PASS("Denoising Depth", PASS_DENOISING_DEPTH, true);
|
||||||
|
|
||||||
MAP_PASS("Shadow Catcher", PASS_SHADOW_CATCHER);
|
MAP_PASS("Shadow Catcher", PASS_SHADOW_CATCHER, false);
|
||||||
MAP_PASS("Noisy Shadow Catcher", PASS_SHADOW_CATCHER);
|
MAP_PASS("Noisy Shadow Catcher", PASS_SHADOW_CATCHER, true);
|
||||||
|
|
||||||
MAP_PASS("AdaptiveAuxBuffer", PASS_ADAPTIVE_AUX_BUFFER);
|
MAP_PASS("AdaptiveAuxBuffer", PASS_ADAPTIVE_AUX_BUFFER, false);
|
||||||
MAP_PASS("Debug Sample Count", PASS_SAMPLE_COUNT);
|
MAP_PASS("Debug Sample Count", PASS_SAMPLE_COUNT, false);
|
||||||
|
|
||||||
if (string_startswith(name, cryptomatte_prefix)) {
|
if (string_startswith(name, cryptomatte_prefix)) {
|
||||||
return PASS_CRYPTOMATTE;
|
type = PASS_CRYPTOMATTE;
|
||||||
|
mode = PassMode::DENOISED;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef MAP_PASS
|
#undef MAP_PASS
|
||||||
|
|
||||||
return PASS_NONE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Pass *pass_add(Scene *scene,
|
static Pass *pass_add(Scene *scene,
|
||||||
@@ -655,8 +659,6 @@ static Pass *pass_add(Scene *scene,
|
|||||||
|
|
||||||
void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_view_layer)
|
void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_view_layer)
|
||||||
{
|
{
|
||||||
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
|
|
||||||
|
|
||||||
/* Delete all existing passes. */
|
/* Delete all existing passes. */
|
||||||
set<Pass *> clear_passes(scene->passes.begin(), scene->passes.end());
|
set<Pass *> clear_passes(scene->passes.begin(), scene->passes.end());
|
||||||
scene->delete_nodes(clear_passes);
|
scene->delete_nodes(clear_passes);
|
||||||
@@ -664,103 +666,23 @@ void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_v
|
|||||||
/* Always add combined pass. */
|
/* Always add combined pass. */
|
||||||
pass_add(scene, PASS_COMBINED, "Combined");
|
pass_add(scene, PASS_COMBINED, "Combined");
|
||||||
|
|
||||||
/* Blender built-in data and light passes. */
|
|
||||||
for (BL::RenderPass &b_pass : b_rlay.passes) {
|
|
||||||
const PassType pass_type = get_blender_pass_type(b_pass);
|
|
||||||
|
|
||||||
if (pass_type == PASS_NONE) {
|
|
||||||
LOG(ERROR) << "Unknown pass " << b_pass.name();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pass_type == PASS_MOTION &&
|
|
||||||
(b_view_layer.use_motion_blur() && b_scene.render().use_motion_blur())) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
pass_add(scene, pass_type, b_pass.name().c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
PointerRNA crl = RNA_pointer_get(&b_view_layer.ptr, "cycles");
|
|
||||||
|
|
||||||
/* Debug passes. */
|
|
||||||
if (get_boolean(crl, "pass_debug_sample_count")) {
|
|
||||||
b_engine.add_pass("Debug Sample Count", 1, "X", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_SAMPLE_COUNT, "Debug Sample Count");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cycles specific passes. */
|
|
||||||
if (get_boolean(crl, "use_pass_volume_direct")) {
|
|
||||||
b_engine.add_pass("VolumeDir", 3, "RGB", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_VOLUME_DIRECT, "VolumeDir");
|
|
||||||
}
|
|
||||||
if (get_boolean(crl, "use_pass_volume_indirect")) {
|
|
||||||
b_engine.add_pass("VolumeInd", 3, "RGB", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_VOLUME_INDIRECT, "VolumeInd");
|
|
||||||
}
|
|
||||||
if (get_boolean(crl, "use_pass_shadow_catcher")) {
|
|
||||||
b_engine.add_pass("Shadow Catcher", 3, "RGB", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_SHADOW_CATCHER, "Shadow Catcher");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cryptomatte stores two ID/weight pairs per RGBA layer.
|
/* Cryptomatte stores two ID/weight pairs per RGBA layer.
|
||||||
* User facing parameter is the number of pairs.
|
* User facing parameter is the number of pairs. */
|
||||||
*
|
|
||||||
* NOTE: Name channels lowercase RGBA so that compression rules check in OpenEXR DWA code uses
|
|
||||||
* lossless compression. Reportedly this naming is the only one which works good from the
|
|
||||||
* interoperability point of view. Using XYZW naming is not portable. */
|
|
||||||
int crypto_depth = divide_up(min(16, b_view_layer.pass_cryptomatte_depth()), 2);
|
int crypto_depth = divide_up(min(16, b_view_layer.pass_cryptomatte_depth()), 2);
|
||||||
scene->film->set_cryptomatte_depth(crypto_depth);
|
scene->film->set_cryptomatte_depth(crypto_depth);
|
||||||
CryptomatteType cryptomatte_passes = CRYPT_NONE;
|
CryptomatteType cryptomatte_passes = CRYPT_NONE;
|
||||||
if (b_view_layer.use_pass_cryptomatte_object()) {
|
if (b_view_layer.use_pass_cryptomatte_object()) {
|
||||||
for (int i = 0; i < crypto_depth; i++) {
|
|
||||||
string passname = cryptomatte_prefix + string_printf("Object%02d", i);
|
|
||||||
b_engine.add_pass(passname.c_str(), 4, "rgba", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_CRYPTOMATTE, passname.c_str());
|
|
||||||
}
|
|
||||||
cryptomatte_passes = (CryptomatteType)(cryptomatte_passes | CRYPT_OBJECT);
|
cryptomatte_passes = (CryptomatteType)(cryptomatte_passes | CRYPT_OBJECT);
|
||||||
}
|
}
|
||||||
if (b_view_layer.use_pass_cryptomatte_material()) {
|
if (b_view_layer.use_pass_cryptomatte_material()) {
|
||||||
for (int i = 0; i < crypto_depth; i++) {
|
|
||||||
string passname = cryptomatte_prefix + string_printf("Material%02d", i);
|
|
||||||
b_engine.add_pass(passname.c_str(), 4, "rgba", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_CRYPTOMATTE, passname.c_str());
|
|
||||||
}
|
|
||||||
cryptomatte_passes = (CryptomatteType)(cryptomatte_passes | CRYPT_MATERIAL);
|
cryptomatte_passes = (CryptomatteType)(cryptomatte_passes | CRYPT_MATERIAL);
|
||||||
}
|
}
|
||||||
if (b_view_layer.use_pass_cryptomatte_asset()) {
|
if (b_view_layer.use_pass_cryptomatte_asset()) {
|
||||||
for (int i = 0; i < crypto_depth; i++) {
|
|
||||||
string passname = cryptomatte_prefix + string_printf("Asset%02d", i);
|
|
||||||
b_engine.add_pass(passname.c_str(), 4, "rgba", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_CRYPTOMATTE, passname.c_str());
|
|
||||||
}
|
|
||||||
cryptomatte_passes = (CryptomatteType)(cryptomatte_passes | CRYPT_ASSET);
|
cryptomatte_passes = (CryptomatteType)(cryptomatte_passes | CRYPT_ASSET);
|
||||||
}
|
}
|
||||||
scene->film->set_cryptomatte_passes(cryptomatte_passes);
|
scene->film->set_cryptomatte_passes(cryptomatte_passes);
|
||||||
|
|
||||||
/* Denoising passes. */
|
/* Path guiding debug passes. */
|
||||||
const bool use_denoising = get_boolean(cscene, "use_denoising") &&
|
|
||||||
get_boolean(crl, "use_denoising");
|
|
||||||
const bool store_denoising_passes = get_boolean(crl, "denoising_store_passes");
|
|
||||||
if (use_denoising) {
|
|
||||||
b_engine.add_pass("Noisy Image", 4, "RGBA", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_COMBINED, "Noisy Image", PassMode::NOISY);
|
|
||||||
if (get_boolean(crl, "use_pass_shadow_catcher")) {
|
|
||||||
b_engine.add_pass("Noisy Shadow Catcher", 3, "RGB", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_SHADOW_CATCHER, "Noisy Shadow Catcher", PassMode::NOISY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (store_denoising_passes) {
|
|
||||||
b_engine.add_pass("Denoising Normal", 3, "XYZ", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_DENOISING_NORMAL, "Denoising Normal", PassMode::NOISY);
|
|
||||||
|
|
||||||
b_engine.add_pass("Denoising Albedo", 3, "RGB", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_DENOISING_ALBEDO, "Denoising Albedo", PassMode::NOISY);
|
|
||||||
|
|
||||||
b_engine.add_pass("Denoising Depth", 1, "Z", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_DENOISING_DEPTH, "Denoising Depth", PassMode::NOISY);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef WITH_CYCLES_DEBUG
|
#ifdef WITH_CYCLES_DEBUG
|
||||||
b_engine.add_pass("Guiding Color", 3, "RGB", b_view_layer.name().c_str());
|
b_engine.add_pass("Guiding Color", 3, "RGB", b_view_layer.name().c_str());
|
||||||
pass_add(scene, PASS_GUIDING_COLOR, "Guiding Color", PassMode::NOISY);
|
pass_add(scene, PASS_GUIDING_COLOR, "Guiding Color", PassMode::NOISY);
|
||||||
@@ -772,6 +694,8 @@ void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_v
|
|||||||
pass_add(scene, PASS_GUIDING_AVG_ROUGHNESS, "Guiding Average Roughness", PassMode::NOISY);
|
pass_add(scene, PASS_GUIDING_AVG_ROUGHNESS, "Guiding Average Roughness", PassMode::NOISY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
unordered_set<string> expected_passes;
|
||||||
|
|
||||||
/* Custom AOV passes. */
|
/* Custom AOV passes. */
|
||||||
BL::ViewLayer::aovs_iterator b_aov_iter;
|
BL::ViewLayer::aovs_iterator b_aov_iter;
|
||||||
for (b_view_layer.aovs.begin(b_aov_iter); b_aov_iter != b_view_layer.aovs.end(); ++b_aov_iter) {
|
for (b_view_layer.aovs.begin(b_aov_iter); b_aov_iter != b_view_layer.aovs.end(); ++b_aov_iter) {
|
||||||
@@ -781,16 +705,10 @@ void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_v
|
|||||||
}
|
}
|
||||||
|
|
||||||
string name = b_aov.name();
|
string name = b_aov.name();
|
||||||
bool is_color = b_aov.type() == BL::AOV::type_COLOR;
|
PassType type = (b_aov.type() == BL::AOV::type_COLOR) ? PASS_AOV_COLOR : PASS_AOV_VALUE;
|
||||||
|
|
||||||
if (is_color) {
|
pass_add(scene, type, name.c_str());
|
||||||
b_engine.add_pass(name.c_str(), 4, "RGBA", b_view_layer.name().c_str());
|
expected_passes.insert(name);
|
||||||
pass_add(scene, PASS_AOV_COLOR, name.c_str());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
b_engine.add_pass(name.c_str(), 1, "X", b_view_layer.name().c_str());
|
|
||||||
pass_add(scene, PASS_AOV_VALUE, name.c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Light Group passes. */
|
/* Light Group passes. */
|
||||||
@@ -802,9 +720,29 @@ void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_v
|
|||||||
|
|
||||||
string name = string_printf("Combined_%s", b_lightgroup.name().c_str());
|
string name = string_printf("Combined_%s", b_lightgroup.name().c_str());
|
||||||
|
|
||||||
b_engine.add_pass(name.c_str(), 3, "RGB", b_view_layer.name().c_str());
|
|
||||||
Pass *pass = pass_add(scene, PASS_COMBINED, name.c_str(), PassMode::NOISY);
|
Pass *pass = pass_add(scene, PASS_COMBINED, name.c_str(), PassMode::NOISY);
|
||||||
pass->set_lightgroup(ustring(b_lightgroup.name()));
|
pass->set_lightgroup(ustring(b_lightgroup.name()));
|
||||||
|
expected_passes.insert(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sync the passes that were defined in engine.py. */
|
||||||
|
for (BL::RenderPass &b_pass : b_rlay.passes) {
|
||||||
|
PassType pass_type = PASS_NONE;
|
||||||
|
PassMode pass_mode = PassMode::DENOISED;
|
||||||
|
|
||||||
|
if (!get_known_pass_type(b_pass, pass_type, pass_mode)) {
|
||||||
|
if (!expected_passes.count(b_pass.name())) {
|
||||||
|
LOG(ERROR) << "Unknown pass " << b_pass.name();
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pass_type == PASS_MOTION &&
|
||||||
|
(b_view_layer.use_motion_blur() && b_scene.render().use_motion_blur())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
pass_add(scene, pass_type, b_pass.name().c_str(), pass_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
scene->film->set_pass_alpha_threshold(b_view_layer.pass_alpha_threshold());
|
scene->film->set_pass_alpha_threshold(b_view_layer.pass_alpha_threshold());
|
||||||
|
@@ -289,8 +289,7 @@ if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_PATH_GUIDING)
|
|||||||
endif()
|
endif()
|
||||||
get_target_property(OPENPGL_INCLUDE_DIR openpgl::openpgl INTERFACE_INCLUDE_DIRECTORIES)
|
get_target_property(OPENPGL_INCLUDE_DIR openpgl::openpgl INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
else()
|
else()
|
||||||
set(WITH_CYCLES_PATH_GUIDING OFF)
|
set_and_warn_library_found("OpenPGL" openpgl_FOUND WITH_CYCLES_PATH_GUIDING)
|
||||||
message(STATUS "OpenPGL not found, disabling WITH_CYCLES_PATH_GUIDING")
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -588,17 +587,15 @@ if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
|
|||||||
# We can't use the version from the Blender precompiled libraries because
|
# We can't use the version from the Blender precompiled libraries because
|
||||||
# it does not include the video subsystem.
|
# it does not include the video subsystem.
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
|
set_and_warn_library_found("SDL" SDL2_FOUND WITH_CYCLES_STANDALONE_GUI)
|
||||||
|
|
||||||
if(NOT SDL2_FOUND)
|
if(SDL2_FOUND)
|
||||||
set(WITH_CYCLES_STANDALONE_GUI OFF)
|
|
||||||
message(STATUS "SDL not found, disabling Cycles standalone GUI")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
SYSTEM
|
SYSTEM
|
||||||
${SDL2_INCLUDE_DIRS}
|
${SDL2_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
# CUDA
|
# CUDA
|
||||||
@@ -606,11 +603,11 @@ endif()
|
|||||||
|
|
||||||
if(WITH_CYCLES_DEVICE_CUDA AND (WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD))
|
if(WITH_CYCLES_DEVICE_CUDA AND (WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD))
|
||||||
find_package(CUDA) # Try to auto locate CUDA toolkit
|
find_package(CUDA) # Try to auto locate CUDA toolkit
|
||||||
|
set_and_warn_library_found("CUDA compiler" CUDA_FOUND WITH_CYCLES_CUDA_BINARIES)
|
||||||
|
|
||||||
if(CUDA_FOUND)
|
if(CUDA_FOUND)
|
||||||
message(STATUS "Found CUDA ${CUDA_NVCC_EXECUTABLE} (${CUDA_VERSION})")
|
message(STATUS "Found CUDA ${CUDA_NVCC_EXECUTABLE} (${CUDA_VERSION})")
|
||||||
else()
|
else()
|
||||||
message(STATUS "CUDA compiler not found, disabling WITH_CYCLES_CUDA_BINARIES")
|
|
||||||
set(WITH_CYCLES_CUDA_BINARIES OFF)
|
|
||||||
if(NOT WITH_CUDA_DYNLOAD)
|
if(NOT WITH_CUDA_DYNLOAD)
|
||||||
message(STATUS "Additionally falling back to dynamic CUDA load")
|
message(STATUS "Additionally falling back to dynamic CUDA load")
|
||||||
set(WITH_CUDA_DYNLOAD ON)
|
set(WITH_CUDA_DYNLOAD ON)
|
||||||
@@ -624,11 +621,10 @@ endif()
|
|||||||
|
|
||||||
if(WITH_CYCLES_HIP_BINARIES AND WITH_CYCLES_DEVICE_HIP)
|
if(WITH_CYCLES_HIP_BINARIES AND WITH_CYCLES_DEVICE_HIP)
|
||||||
find_package(HIP)
|
find_package(HIP)
|
||||||
|
set_and_warn_library_found("HIP compiler" HIP_FOUND WITH_CYCLES_HIP_BINARIES)
|
||||||
|
|
||||||
if(HIP_FOUND)
|
if(HIP_FOUND)
|
||||||
message(STATUS "Found HIP ${HIP_HIPCC_EXECUTABLE} (${HIP_VERSION})")
|
message(STATUS "Found HIP ${HIP_HIPCC_EXECUTABLE} (${HIP_VERSION})")
|
||||||
else()
|
|
||||||
message(STATUS "HIP compiler not found, disabling WITH_CYCLES_HIP_BINARIES")
|
|
||||||
set(WITH_CYCLES_HIP_BINARIES OFF)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -644,13 +640,17 @@ if(WITH_CYCLES_DEVICE_METAL)
|
|||||||
find_library(METAL_LIBRARY Metal)
|
find_library(METAL_LIBRARY Metal)
|
||||||
|
|
||||||
# This file was added in the 12.0 SDK, use it as a way to detect the version.
|
# This file was added in the 12.0 SDK, use it as a way to detect the version.
|
||||||
if(METAL_LIBRARY AND NOT EXISTS "${METAL_LIBRARY}/Headers/MTLFunctionStitching.h")
|
if(METAL_LIBRARY)
|
||||||
message(STATUS "Metal version too old, must be SDK 12.0 or newer, disabling WITH_CYCLES_DEVICE_METAL")
|
if(EXISTS "${METAL_LIBRARY}/Headers/MTLFunctionStitching.h")
|
||||||
set(WITH_CYCLES_DEVICE_METAL OFF)
|
set(METAL_FOUND ON)
|
||||||
elseif(NOT METAL_LIBRARY)
|
|
||||||
message(STATUS "Metal not found, disabling WITH_CYCLES_DEVICE_METAL")
|
|
||||||
set(WITH_CYCLES_DEVICE_METAL OFF)
|
|
||||||
else()
|
else()
|
||||||
|
message(STATUS "Metal version too old, must be SDK 12.0 or newer")
|
||||||
|
set(METAL_FOUND OFF)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_and_warn_library_found("Metal" METAL_FOUND WITH_CYCLES_DEVICE_METAL)
|
||||||
|
if(METAL_FOUND)
|
||||||
message(STATUS "Found Metal: ${METAL_LIBRARY}")
|
message(STATUS "Found Metal: ${METAL_LIBRARY}")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@@ -662,9 +662,10 @@ endif()
|
|||||||
if(WITH_CYCLES_DEVICE_ONEAPI)
|
if(WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
find_package(SYCL)
|
find_package(SYCL)
|
||||||
find_package(LevelZero)
|
find_package(LevelZero)
|
||||||
|
set_and_warn_library_found("oneAPI" SYCL_FOUND WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
|
set_and_warn_library_found("Level Zero" LEVEL_ZERO_FOUND WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
|
|
||||||
if(SYCL_FOUND AND LEVEL_ZERO_FOUND)
|
if(SYCL_FOUND AND SYCL_VERSION VERSION_GREATER_EQUAL 6.0 AND LEVEL_ZERO_FOUND)
|
||||||
message(STATUS "Found oneAPI: ${SYCL_LIBRARY}")
|
|
||||||
message(STATUS "Found Level Zero: ${LEVEL_ZERO_LIBRARY}")
|
message(STATUS "Found Level Zero: ${LEVEL_ZERO_LIBRARY}")
|
||||||
|
|
||||||
if(WITH_CYCLES_ONEAPI_BINARIES)
|
if(WITH_CYCLES_ONEAPI_BINARIES)
|
||||||
@@ -675,13 +676,14 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT EXISTS ${OCLOC_INSTALL_DIR})
|
if(NOT EXISTS ${OCLOC_INSTALL_DIR})
|
||||||
message(STATUS "oneAPI ocloc not found in ${OCLOC_INSTALL_DIR}, disabling WITH_CYCLES_ONEAPI_BINARIES."
|
set(OCLOC_FOUND OFF)
|
||||||
|
message(STATUS "oneAPI ocloc not found in ${OCLOC_INSTALL_DIR}."
|
||||||
" A different ocloc directory can be set using OCLOC_INSTALL_DIR cmake variable.")
|
" A different ocloc directory can be set using OCLOC_INSTALL_DIR cmake variable.")
|
||||||
set(WITH_CYCLES_ONEAPI_BINARIES OFF)
|
set_and_warn_library_found("ocloc" OCLOC_FOUND WITH_CYCLES_ONEAPI_BINARIES)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
message(STATUS "oneAPI or Level Zero not found, disabling WITH_CYCLES_DEVICE_ONEAPI")
|
message(STATUS "SYCL 6.0+ or Level Zero not found, disabling WITH_CYCLES_DEVICE_ONEAPI")
|
||||||
set(WITH_CYCLES_DEVICE_ONEAPI OFF)
|
set(WITH_CYCLES_DEVICE_ONEAPI OFF)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@@ -187,18 +187,22 @@ if(WITH_CYCLES_DEVICE_METAL)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
if (WITH_CYCLES_DEVICE_ONEAPI)
|
if (WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
if(WIN32)
|
if(WITH_CYCLES_ONEAPI_BINARIES)
|
||||||
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/../kernel/cycles_kernel_oneapi.lib)
|
set(cycles_kernel_oneapi_lib_suffix "_aot")
|
||||||
else()
|
else()
|
||||||
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/../kernel/libcycles_kernel_oneapi.so)
|
set(cycles_kernel_oneapi_lib_suffix "_jit")
|
||||||
|
endif()
|
||||||
|
if(WIN32)
|
||||||
|
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/../kernel/cycles_kernel_oneapi${cycles_kernel_oneapi_lib_suffix}.lib)
|
||||||
|
else()
|
||||||
|
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/../kernel/libcycles_kernel_oneapi${cycles_kernel_oneapi_lib_suffix}.so)
|
||||||
|
endif()
|
||||||
|
list(APPEND LIB ${cycles_kernel_oneapi_lib})
|
||||||
|
if(WIN32)
|
||||||
|
list(APPEND LIB debug ${SYCL_LIBRARY_DEBUG} optimized ${SYCL_LIBRARY})
|
||||||
|
else()
|
||||||
|
list(APPEND LIB ${SYCL_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
list(APPEND LIB
|
|
||||||
${cycles_kernel_oneapi_lib}
|
|
||||||
"$<$<CONFIG:Debug>:${SYCL_LIBRARY_DEBUG}>"
|
|
||||||
"$<$<CONFIG:Release>:${SYCL_LIBRARY}>"
|
|
||||||
"$<$<CONFIG:RelWithDebInfo>:${SYCL_LIBRARY}>"
|
|
||||||
"$<$<CONFIG:MinSizeRel>:${SYCL_LIBRARY}>"
|
|
||||||
)
|
|
||||||
add_definitions(-DWITH_ONEAPI)
|
add_definitions(-DWITH_ONEAPI)
|
||||||
list(APPEND SRC
|
list(APPEND SRC
|
||||||
${SRC_ONEAPI}
|
${SRC_ONEAPI}
|
||||||
@@ -220,7 +224,8 @@ include_directories(SYSTEM ${INC_SYS})
|
|||||||
cycles_add_library(cycles_device "${LIB}" ${SRC})
|
cycles_add_library(cycles_device "${LIB}" ${SRC})
|
||||||
|
|
||||||
if(WITH_CYCLES_DEVICE_ONEAPI)
|
if(WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
# Need to have proper rebuilding in case of changes in cycles_kernel_oneapi due external project behaviour
|
# Need to have proper rebuilding in case of changes
|
||||||
|
# in cycles_kernel_oneapi due external project behavior.
|
||||||
add_dependencies(cycles_device cycles_kernel_oneapi)
|
add_dependencies(cycles_device cycles_kernel_oneapi)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -49,7 +49,7 @@ int CUDADeviceQueue::num_concurrent_states(const size_t state_size) const
|
|||||||
return num_states;
|
return num_states;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CUDADeviceQueue::num_concurrent_busy_states() const
|
int CUDADeviceQueue::num_concurrent_busy_states(const size_t /*state_size*/) const
|
||||||
{
|
{
|
||||||
const int max_num_threads = cuda_device_->get_num_multiprocessors() *
|
const int max_num_threads = cuda_device_->get_num_multiprocessors() *
|
||||||
cuda_device_->get_max_num_threads_per_multiprocessor();
|
cuda_device_->get_max_num_threads_per_multiprocessor();
|
||||||
|
@@ -23,7 +23,7 @@ class CUDADeviceQueue : public DeviceQueue {
|
|||||||
~CUDADeviceQueue();
|
~CUDADeviceQueue();
|
||||||
|
|
||||||
virtual int num_concurrent_states(const size_t state_size) const override;
|
virtual int num_concurrent_states(const size_t state_size) const override;
|
||||||
virtual int num_concurrent_busy_states() const override;
|
virtual int num_concurrent_busy_states(const size_t state_size) const override;
|
||||||
|
|
||||||
virtual void init_execution() override;
|
virtual void init_execution() override;
|
||||||
|
|
||||||
|
@@ -49,7 +49,7 @@ int HIPDeviceQueue::num_concurrent_states(const size_t state_size) const
|
|||||||
return num_states;
|
return num_states;
|
||||||
}
|
}
|
||||||
|
|
||||||
int HIPDeviceQueue::num_concurrent_busy_states() const
|
int HIPDeviceQueue::num_concurrent_busy_states(const size_t /*state_size*/) const
|
||||||
{
|
{
|
||||||
const int max_num_threads = hip_device_->get_num_multiprocessors() *
|
const int max_num_threads = hip_device_->get_num_multiprocessors() *
|
||||||
hip_device_->get_max_num_threads_per_multiprocessor();
|
hip_device_->get_max_num_threads_per_multiprocessor();
|
||||||
|
@@ -23,7 +23,7 @@ class HIPDeviceQueue : public DeviceQueue {
|
|||||||
~HIPDeviceQueue();
|
~HIPDeviceQueue();
|
||||||
|
|
||||||
virtual int num_concurrent_states(const size_t state_size) const override;
|
virtual int num_concurrent_states(const size_t state_size) const override;
|
||||||
virtual int num_concurrent_busy_states() const override;
|
virtual int num_concurrent_busy_states(const size_t state_size) const override;
|
||||||
|
|
||||||
virtual void init_execution() override;
|
virtual void init_execution() override;
|
||||||
|
|
||||||
|
@@ -296,9 +296,11 @@ void MetalDevice::make_source(MetalPipelineType pso_type, const uint kernel_feat
|
|||||||
}
|
}
|
||||||
|
|
||||||
source = global_defines + source;
|
source = global_defines + source;
|
||||||
|
# if 0
|
||||||
metal_printf("================\n%s================\n\%s================\n",
|
metal_printf("================\n%s================\n\%s================\n",
|
||||||
global_defines.c_str(),
|
global_defines.c_str(),
|
||||||
baked_constants.c_str());
|
baked_constants.c_str());
|
||||||
|
# endif
|
||||||
|
|
||||||
/* Generate an MD5 from the source and include any baked constants. This is used when caching
|
/* Generate an MD5 from the source and include any baked constants. This is used when caching
|
||||||
* PSOs. */
|
* PSOs. */
|
||||||
@@ -339,6 +341,14 @@ bool MetalDevice::compile_and_load(MetalPipelineType pso_type)
|
|||||||
|
|
||||||
MTLCompileOptions *options = [[MTLCompileOptions alloc] init];
|
MTLCompileOptions *options = [[MTLCompileOptions alloc] init];
|
||||||
|
|
||||||
|
# if defined(MAC_OS_VERSION_13_0)
|
||||||
|
if (@available(macos 13.0, *)) {
|
||||||
|
if (device_vendor == METAL_GPU_INTEL) {
|
||||||
|
[options setOptimizationLevel:MTLLibraryOptimizationLevelSize];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
options.fastMathEnabled = YES;
|
options.fastMathEnabled = YES;
|
||||||
if (@available(macOS 12.0, *)) {
|
if (@available(macOS 12.0, *)) {
|
||||||
options.languageVersion = MTLLanguageVersion2_4;
|
options.languageVersion = MTLLanguageVersion2_4;
|
||||||
|
@@ -45,6 +45,36 @@ bool kernel_has_intersection(DeviceKernel device_kernel)
|
|||||||
struct ShaderCache {
|
struct ShaderCache {
|
||||||
ShaderCache(id<MTLDevice> _mtlDevice) : mtlDevice(_mtlDevice)
|
ShaderCache(id<MTLDevice> _mtlDevice) : mtlDevice(_mtlDevice)
|
||||||
{
|
{
|
||||||
|
/* Initialize occupancy tuning LUT. */
|
||||||
|
if (MetalInfo::get_device_vendor(mtlDevice) == METAL_GPU_APPLE) {
|
||||||
|
switch (MetalInfo::get_apple_gpu_architecture(mtlDevice)) {
|
||||||
|
default:
|
||||||
|
case APPLE_M2:
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_COMPACT_SHADOW_STATES] = {32, 32};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INIT_FROM_CAMERA] = {832, 32};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INTERSECT_CLOSEST] = {64, 64};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INTERSECT_SHADOW] = {64, 64};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INTERSECT_SUBSURFACE] = {704, 32};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_QUEUED_PATHS_ARRAY] = {1024, 256};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND] = {64, 32};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW] = {256, 256};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE] = {448, 384};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SORTED_PATHS_ARRAY] = {1024, 1024};
|
||||||
|
break;
|
||||||
|
case APPLE_M1:
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_COMPACT_SHADOW_STATES] = {256, 128};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INIT_FROM_CAMERA] = {768, 32};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INTERSECT_CLOSEST] = {512, 128};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INTERSECT_SHADOW] = {384, 128};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_INTERSECT_SUBSURFACE] = {512, 64};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_QUEUED_PATHS_ARRAY] = {512, 256};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SHADE_BACKGROUND] = {512, 128};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SHADE_SHADOW] = {384, 32};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE] = {576, 384};
|
||||||
|
occupancy_tuning[DEVICE_KERNEL_INTEGRATOR_SORTED_PATHS_ARRAY] = {832, 832};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
~ShaderCache();
|
~ShaderCache();
|
||||||
|
|
||||||
@@ -73,6 +103,11 @@ struct ShaderCache {
|
|||||||
std::function<void(MetalKernelPipeline *)> completionHandler;
|
std::function<void(MetalKernelPipeline *)> completionHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct OccupancyTuningParameters {
|
||||||
|
int threads_per_threadgroup = 0;
|
||||||
|
int num_threads_per_block = 0;
|
||||||
|
} occupancy_tuning[DEVICE_KERNEL_NUM];
|
||||||
|
|
||||||
std::mutex cache_mutex;
|
std::mutex cache_mutex;
|
||||||
|
|
||||||
PipelineCollection pipelines[DEVICE_KERNEL_NUM];
|
PipelineCollection pipelines[DEVICE_KERNEL_NUM];
|
||||||
@@ -162,6 +197,13 @@ bool ShaderCache::should_load_kernel(DeviceKernel device_kernel,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (device_kernel == DEVICE_KERNEL_INTEGRATOR_SHADE_SURFACE_MNEE) {
|
||||||
|
if ((device->kernel_features & KERNEL_FEATURE_MNEE) == 0) {
|
||||||
|
/* Skip shade_surface_mnee kernel if the scene doesn't require it. */
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pso_type != PSO_GENERIC) {
|
if (pso_type != PSO_GENERIC) {
|
||||||
/* Only specialize kernels where it can make an impact. */
|
/* Only specialize kernels where it can make an impact. */
|
||||||
if (device_kernel < DEVICE_KERNEL_INTEGRATOR_INTERSECT_CLOSEST ||
|
if (device_kernel < DEVICE_KERNEL_INTEGRATOR_INTERSECT_CLOSEST ||
|
||||||
@@ -223,6 +265,13 @@ void ShaderCache::load_kernel(DeviceKernel device_kernel,
|
|||||||
request.pipeline->device_kernel = device_kernel;
|
request.pipeline->device_kernel = device_kernel;
|
||||||
request.pipeline->threads_per_threadgroup = device->max_threads_per_threadgroup;
|
request.pipeline->threads_per_threadgroup = device->max_threads_per_threadgroup;
|
||||||
|
|
||||||
|
if (occupancy_tuning[device_kernel].threads_per_threadgroup) {
|
||||||
|
request.pipeline->threads_per_threadgroup =
|
||||||
|
occupancy_tuning[device_kernel].threads_per_threadgroup;
|
||||||
|
request.pipeline->num_threads_per_block =
|
||||||
|
occupancy_tuning[device_kernel].num_threads_per_block;
|
||||||
|
}
|
||||||
|
|
||||||
/* metalrt options */
|
/* metalrt options */
|
||||||
request.pipeline->use_metalrt = device->use_metalrt;
|
request.pipeline->use_metalrt = device->use_metalrt;
|
||||||
request.pipeline->metalrt_hair = device->use_metalrt &&
|
request.pipeline->metalrt_hair = device->use_metalrt &&
|
||||||
@@ -317,6 +366,12 @@ bool MetalKernelPipeline::should_use_binary_archive() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Workaround for Intel GPU having issue using Binary Archives */
|
||||||
|
MetalGPUVendor gpu_vendor = MetalInfo::get_device_vendor(mtlDevice);
|
||||||
|
if (gpu_vendor == METAL_GPU_INTEL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (pso_type == PSO_GENERIC) {
|
if (pso_type == PSO_GENERIC) {
|
||||||
/* Archive the generic kernels. */
|
/* Archive the generic kernels. */
|
||||||
return true;
|
return true;
|
||||||
@@ -361,13 +416,6 @@ void MetalKernelPipeline::compile()
|
|||||||
const std::string function_name = std::string("cycles_metal_") +
|
const std::string function_name = std::string("cycles_metal_") +
|
||||||
device_kernel_as_string(device_kernel);
|
device_kernel_as_string(device_kernel);
|
||||||
|
|
||||||
int threads_per_threadgroup = this->threads_per_threadgroup;
|
|
||||||
if (device_kernel > DEVICE_KERNEL_INTEGRATOR_MEGAKERNEL &&
|
|
||||||
device_kernel < DEVICE_KERNEL_INTEGRATOR_RESET) {
|
|
||||||
/* Always use 512 for the sorting kernels */
|
|
||||||
threads_per_threadgroup = 512;
|
|
||||||
}
|
|
||||||
|
|
||||||
NSString *entryPoint = [@(function_name.c_str()) copy];
|
NSString *entryPoint = [@(function_name.c_str()) copy];
|
||||||
|
|
||||||
NSError *error = NULL;
|
NSError *error = NULL;
|
||||||
@@ -631,12 +679,14 @@ void MetalKernelPipeline::compile()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int num_threads_per_block = round_down(computePipelineState.maxTotalThreadsPerThreadgroup,
|
if (!num_threads_per_block) {
|
||||||
|
num_threads_per_block = round_down(computePipelineState.maxTotalThreadsPerThreadgroup,
|
||||||
computePipelineState.threadExecutionWidth);
|
computePipelineState.threadExecutionWidth);
|
||||||
num_threads_per_block = std::max(num_threads_per_block,
|
num_threads_per_block = std::max(num_threads_per_block,
|
||||||
(int)computePipelineState.threadExecutionWidth);
|
(int)computePipelineState.threadExecutionWidth);
|
||||||
|
}
|
||||||
|
|
||||||
this->pipeline = computePipelineState;
|
this->pipeline = computePipelineState;
|
||||||
this->num_threads_per_block = num_threads_per_block;
|
|
||||||
|
|
||||||
if (@available(macOS 11.0, *)) {
|
if (@available(macOS 11.0, *)) {
|
||||||
if (creating_new_archive || recreate_archive) {
|
if (creating_new_archive || recreate_archive) {
|
||||||
|
@@ -23,7 +23,7 @@ class MetalDeviceQueue : public DeviceQueue {
|
|||||||
~MetalDeviceQueue();
|
~MetalDeviceQueue();
|
||||||
|
|
||||||
virtual int num_concurrent_states(const size_t) const override;
|
virtual int num_concurrent_states(const size_t) const override;
|
||||||
virtual int num_concurrent_busy_states() const override;
|
virtual int num_concurrent_busy_states(const size_t) const override;
|
||||||
virtual int num_sort_partition_elements() const override;
|
virtual int num_sort_partition_elements() const override;
|
||||||
|
|
||||||
virtual void init_execution() override;
|
virtual void init_execution() override;
|
||||||
|
@@ -264,33 +264,46 @@ MetalDeviceQueue::~MetalDeviceQueue()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int MetalDeviceQueue::num_concurrent_states(const size_t /*state_size*/) const
|
int MetalDeviceQueue::num_concurrent_states(const size_t state_size) const
|
||||||
{
|
{
|
||||||
|
static int result = 0;
|
||||||
|
if (result) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = 1048576;
|
||||||
|
if (metal_device_->device_vendor == METAL_GPU_APPLE) {
|
||||||
|
result *= 4;
|
||||||
|
|
||||||
|
if (MetalInfo::get_apple_gpu_architecture(metal_device_->mtlDevice) == APPLE_M2) {
|
||||||
|
size_t system_ram = system_physical_ram();
|
||||||
|
size_t allocated_so_far = [metal_device_->mtlDevice currentAllocatedSize];
|
||||||
|
size_t max_recommended_working_set = [metal_device_->mtlDevice recommendedMaxWorkingSetSize];
|
||||||
|
|
||||||
|
/* Determine whether we can double the state count, and leave enough GPU-available memory
|
||||||
|
* (1/8 the system RAM or 1GB - whichever is largest). Enlarging the state size allows us to
|
||||||
|
* keep dispatch sizes high and minimize work submission overheads. */
|
||||||
|
size_t min_headroom = std::max(system_ram / 8, size_t(1024 * 1024 * 1024));
|
||||||
|
size_t total_state_size = result * state_size;
|
||||||
|
if (max_recommended_working_set - allocated_so_far - total_state_size * 2 >= min_headroom) {
|
||||||
|
result *= 2;
|
||||||
|
metal_printf("Doubling state count to exploit available RAM (new size = %d)\n", result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (metal_device_->device_vendor == METAL_GPU_AMD) {
|
||||||
/* METAL_WIP */
|
/* METAL_WIP */
|
||||||
/* TODO: compute automatically. */
|
/* TODO: compute automatically. */
|
||||||
/* TODO: must have at least num_threads_per_block. */
|
/* TODO: must have at least num_threads_per_block. */
|
||||||
int result = 1048576;
|
|
||||||
if (metal_device_->device_vendor == METAL_GPU_AMD) {
|
|
||||||
result *= 2;
|
result *= 2;
|
||||||
}
|
}
|
||||||
else if (metal_device_->device_vendor == METAL_GPU_APPLE) {
|
|
||||||
result *= 4;
|
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MetalDeviceQueue::num_concurrent_busy_states() const
|
int MetalDeviceQueue::num_concurrent_busy_states(const size_t state_size) const
|
||||||
{
|
{
|
||||||
/* METAL_WIP */
|
/* A 1:4 busy:total ratio gives best rendering performance, independent of total state count. */
|
||||||
/* TODO: compute automatically. */
|
return num_concurrent_states(state_size) / 4;
|
||||||
int result = 65536;
|
|
||||||
if (metal_device_->device_vendor == METAL_GPU_AMD) {
|
|
||||||
result *= 2;
|
|
||||||
}
|
|
||||||
else if (metal_device_->device_vendor == METAL_GPU_APPLE) {
|
|
||||||
result *= 4;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int MetalDeviceQueue::num_sort_partition_elements() const
|
int MetalDeviceQueue::num_sort_partition_elements() const
|
||||||
|
@@ -110,6 +110,12 @@ vector<id<MTLDevice>> const &MetalInfo::get_usable_devices()
|
|||||||
usable |= (vendor == METAL_GPU_AMD);
|
usable |= (vendor == METAL_GPU_AMD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# if defined(MAC_OS_VERSION_13_0)
|
||||||
|
if (@available(macos 13.0, *)) {
|
||||||
|
usable |= (vendor == METAL_GPU_INTEL);
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
if (usable) {
|
if (usable) {
|
||||||
metal_printf("- %s\n", device_name.c_str());
|
metal_printf("- %s\n", device_name.c_str());
|
||||||
[device retain];
|
[device retain];
|
||||||
|
@@ -39,7 +39,7 @@ bool device_oneapi_init()
|
|||||||
_putenv_s("SYCL_CACHE_THRESHOLD", "0");
|
_putenv_s("SYCL_CACHE_THRESHOLD", "0");
|
||||||
}
|
}
|
||||||
if (getenv("SYCL_DEVICE_FILTER") == nullptr) {
|
if (getenv("SYCL_DEVICE_FILTER") == nullptr) {
|
||||||
_putenv_s("SYCL_DEVICE_FILTER", "host,level_zero");
|
_putenv_s("SYCL_DEVICE_FILTER", "level_zero");
|
||||||
}
|
}
|
||||||
if (getenv("SYCL_ENABLE_PCI") == nullptr) {
|
if (getenv("SYCL_ENABLE_PCI") == nullptr) {
|
||||||
_putenv_s("SYCL_ENABLE_PCI", "1");
|
_putenv_s("SYCL_ENABLE_PCI", "1");
|
||||||
@@ -50,7 +50,7 @@ bool device_oneapi_init()
|
|||||||
# elif __linux__
|
# elif __linux__
|
||||||
setenv("SYCL_CACHE_PERSISTENT", "1", false);
|
setenv("SYCL_CACHE_PERSISTENT", "1", false);
|
||||||
setenv("SYCL_CACHE_THRESHOLD", "0", false);
|
setenv("SYCL_CACHE_THRESHOLD", "0", false);
|
||||||
setenv("SYCL_DEVICE_FILTER", "host,level_zero", false);
|
setenv("SYCL_DEVICE_FILTER", "level_zero", false);
|
||||||
setenv("SYCL_ENABLE_PCI", "1", false);
|
setenv("SYCL_ENABLE_PCI", "1", false);
|
||||||
setenv("SYCL_PI_LEVEL_ZERO_USE_COPY_ENGINE_FOR_IN_ORDER_QUEUE", "0", false);
|
setenv("SYCL_PI_LEVEL_ZERO_USE_COPY_ENGINE_FOR_IN_ORDER_QUEUE", "0", false);
|
||||||
# endif
|
# endif
|
||||||
|
@@ -430,9 +430,9 @@ void OneapiDevice::check_usm(SyclQueue *queue_, const void *usm_ptr, bool allow_
|
|||||||
sycl::usm::alloc usm_type = get_pointer_type(usm_ptr, queue->get_context());
|
sycl::usm::alloc usm_type = get_pointer_type(usm_ptr, queue->get_context());
|
||||||
(void)usm_type;
|
(void)usm_type;
|
||||||
assert(usm_type == sycl::usm::alloc::device ||
|
assert(usm_type == sycl::usm::alloc::device ||
|
||||||
((device_type == sycl::info::device_type::host ||
|
((device_type == sycl::info::device_type::cpu || allow_host) &&
|
||||||
device_type == sycl::info::device_type::cpu || allow_host) &&
|
usm_type == sycl::usm::alloc::host ||
|
||||||
usm_type == sycl::usm::alloc::host));
|
usm_type == sycl::usm::alloc::unknown));
|
||||||
# else
|
# else
|
||||||
/* Silence warning about unused arguments. */
|
/* Silence warning about unused arguments. */
|
||||||
(void)queue_;
|
(void)queue_;
|
||||||
@@ -668,16 +668,9 @@ int OneapiDevice::parse_driver_build_version(const sycl::device &device)
|
|||||||
std::vector<sycl::device> OneapiDevice::available_devices()
|
std::vector<sycl::device> OneapiDevice::available_devices()
|
||||||
{
|
{
|
||||||
bool allow_all_devices = false;
|
bool allow_all_devices = false;
|
||||||
if (getenv("CYCLES_ONEAPI_ALL_DEVICES") != nullptr)
|
if (getenv("CYCLES_ONEAPI_ALL_DEVICES") != nullptr) {
|
||||||
allow_all_devices = true;
|
allow_all_devices = true;
|
||||||
|
}
|
||||||
/* Host device is useful only for debugging at the moment
|
|
||||||
* so we hide this device with default build settings. */
|
|
||||||
# ifdef WITH_ONEAPI_SYCL_HOST_ENABLED
|
|
||||||
bool allow_host = true;
|
|
||||||
# else
|
|
||||||
bool allow_host = false;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
const std::vector<sycl::platform> &oneapi_platforms = sycl::platform::get_platforms();
|
const std::vector<sycl::platform> &oneapi_platforms = sycl::platform::get_platforms();
|
||||||
|
|
||||||
@@ -690,33 +683,28 @@ std::vector<sycl::device> OneapiDevice::available_devices()
|
|||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<sycl::device> &oneapi_devices =
|
const std::vector<sycl::device> &oneapi_devices =
|
||||||
(allow_all_devices || allow_host) ? platform.get_devices(sycl::info::device_type::all) :
|
(allow_all_devices) ? platform.get_devices(sycl::info::device_type::all) :
|
||||||
platform.get_devices(sycl::info::device_type::gpu);
|
platform.get_devices(sycl::info::device_type::gpu);
|
||||||
|
|
||||||
for (const sycl::device &device : oneapi_devices) {
|
for (const sycl::device &device : oneapi_devices) {
|
||||||
if (allow_all_devices) {
|
|
||||||
/* still filter out host device if build doesn't support it. */
|
|
||||||
if (allow_host || !device.is_host()) {
|
|
||||||
available_devices.push_back(device);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
bool filter_out = false;
|
bool filter_out = false;
|
||||||
|
if (!allow_all_devices) {
|
||||||
/* For now we support all Intel(R) Arc(TM) devices and likely any future GPU,
|
/* For now we support all Intel(R) Arc(TM) devices and likely any future GPU,
|
||||||
* assuming they have either more than 96 Execution Units or not 7 threads per EU.
|
* assuming they have either more than 96 Execution Units or not 7 threads per EU.
|
||||||
* Official support can be broaden to older and smaller GPUs once ready. */
|
* Official support can be broaden to older and smaller GPUs once ready. */
|
||||||
if (device.is_gpu() && platform.get_backend() == sycl::backend::ext_oneapi_level_zero) {
|
if (!device.is_gpu() || platform.get_backend() != sycl::backend::ext_oneapi_level_zero) {
|
||||||
/* Filtered-out defaults in-case these values aren't available through too old L0
|
filter_out = true;
|
||||||
* runtime. */
|
}
|
||||||
|
else {
|
||||||
|
/* Filtered-out defaults in-case these values aren't available. */
|
||||||
int number_of_eus = 96;
|
int number_of_eus = 96;
|
||||||
int threads_per_eu = 7;
|
int threads_per_eu = 7;
|
||||||
if (device.has(sycl::aspect::ext_intel_gpu_eu_count)) {
|
if (device.has(sycl::aspect::ext_intel_gpu_eu_count)) {
|
||||||
number_of_eus = device.get_info<sycl::info::device::ext_intel_gpu_eu_count>();
|
number_of_eus = device.get_info<sycl::ext::intel::info::device::gpu_eu_count>();
|
||||||
}
|
}
|
||||||
if (device.has(sycl::aspect::ext_intel_gpu_hw_threads_per_eu)) {
|
if (device.has(sycl::aspect::ext_intel_gpu_hw_threads_per_eu)) {
|
||||||
threads_per_eu =
|
threads_per_eu =
|
||||||
device.get_info<sycl::info::device::ext_intel_gpu_hw_threads_per_eu>();
|
device.get_info<sycl::ext::intel::info::device::gpu_hw_threads_per_eu>();
|
||||||
}
|
}
|
||||||
/* This filters out all Level-Zero supported GPUs from older generation than Arc. */
|
/* This filters out all Level-Zero supported GPUs from older generation than Arc. */
|
||||||
if (number_of_eus <= 96 && threads_per_eu == 7) {
|
if (number_of_eus <= 96 && threads_per_eu == 7) {
|
||||||
@@ -732,19 +720,12 @@ std::vector<sycl::device> OneapiDevice::available_devices()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!allow_host && device.is_host()) {
|
|
||||||
filter_out = true;
|
|
||||||
}
|
}
|
||||||
else if (!allow_all_devices) {
|
|
||||||
filter_out = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!filter_out) {
|
if (!filter_out) {
|
||||||
available_devices.push_back(device);
|
available_devices.push_back(device);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return available_devices;
|
return available_devices;
|
||||||
}
|
}
|
||||||
@@ -797,9 +778,7 @@ char *OneapiDevice::device_capabilities()
|
|||||||
GET_NUM_ATTR(native_vector_width_double)
|
GET_NUM_ATTR(native_vector_width_double)
|
||||||
GET_NUM_ATTR(native_vector_width_half)
|
GET_NUM_ATTR(native_vector_width_half)
|
||||||
|
|
||||||
size_t max_clock_frequency =
|
size_t max_clock_frequency = device.get_info<sycl::info::device::max_clock_frequency>();
|
||||||
(size_t)(device.is_host() ? (size_t)0 :
|
|
||||||
device.get_info<sycl::info::device::max_clock_frequency>());
|
|
||||||
WRITE_ATTR("max_clock_frequency", max_clock_frequency)
|
WRITE_ATTR("max_clock_frequency", max_clock_frequency)
|
||||||
|
|
||||||
GET_NUM_ATTR(address_bits)
|
GET_NUM_ATTR(address_bits)
|
||||||
@@ -837,7 +816,7 @@ void OneapiDevice::iterate_devices(OneAPIDeviceIteratorCallback cb, void *user_p
|
|||||||
std::string name = device.get_info<sycl::info::device::name>();
|
std::string name = device.get_info<sycl::info::device::name>();
|
||||||
std::string id = "ONEAPI_" + platform_name + "_" + name;
|
std::string id = "ONEAPI_" + platform_name + "_" + name;
|
||||||
if (device.has(sycl::aspect::ext_intel_pci_address)) {
|
if (device.has(sycl::aspect::ext_intel_pci_address)) {
|
||||||
id.append("_" + device.get_info<sycl::info::device::ext_intel_pci_address>());
|
id.append("_" + device.get_info<sycl::ext::intel::info::device::pci_address>());
|
||||||
}
|
}
|
||||||
(cb)(id.c_str(), name.c_str(), num, user_ptr);
|
(cb)(id.c_str(), name.c_str(), num, user_ptr);
|
||||||
num++;
|
num++;
|
||||||
@@ -855,7 +834,7 @@ int OneapiDevice::get_num_multiprocessors()
|
|||||||
{
|
{
|
||||||
const sycl::device &device = reinterpret_cast<sycl::queue *>(device_queue_)->get_device();
|
const sycl::device &device = reinterpret_cast<sycl::queue *>(device_queue_)->get_device();
|
||||||
if (device.has(sycl::aspect::ext_intel_gpu_eu_count)) {
|
if (device.has(sycl::aspect::ext_intel_gpu_eu_count)) {
|
||||||
return device.get_info<sycl::info::device::ext_intel_gpu_eu_count>();
|
return device.get_info<sycl::ext::intel::info::device::gpu_eu_count>();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
@@ -866,8 +845,8 @@ int OneapiDevice::get_max_num_threads_per_multiprocessor()
|
|||||||
const sycl::device &device = reinterpret_cast<sycl::queue *>(device_queue_)->get_device();
|
const sycl::device &device = reinterpret_cast<sycl::queue *>(device_queue_)->get_device();
|
||||||
if (device.has(sycl::aspect::ext_intel_gpu_eu_simd_width) &&
|
if (device.has(sycl::aspect::ext_intel_gpu_eu_simd_width) &&
|
||||||
device.has(sycl::aspect::ext_intel_gpu_hw_threads_per_eu)) {
|
device.has(sycl::aspect::ext_intel_gpu_hw_threads_per_eu)) {
|
||||||
return device.get_info<sycl::info::device::ext_intel_gpu_eu_simd_width>() *
|
return device.get_info<sycl::ext::intel::info::device::gpu_eu_simd_width>() *
|
||||||
device.get_info<sycl::info::device::ext_intel_gpu_hw_threads_per_eu>();
|
device.get_info<sycl::ext::intel::info::device::gpu_hw_threads_per_eu>();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#ifdef WITH_ONEAPI
|
#ifdef WITH_ONEAPI
|
||||||
|
|
||||||
# include <CL/sycl.hpp>
|
# include <sycl/sycl.hpp>
|
||||||
|
|
||||||
# include "device/device.h"
|
# include "device/device.h"
|
||||||
# include "device/oneapi/device.h"
|
# include "device/oneapi/device.h"
|
||||||
|
@@ -43,7 +43,7 @@ int OneapiDeviceQueue::num_concurrent_states(const size_t state_size) const
|
|||||||
return num_states;
|
return num_states;
|
||||||
}
|
}
|
||||||
|
|
||||||
int OneapiDeviceQueue::num_concurrent_busy_states() const
|
int OneapiDeviceQueue::num_concurrent_busy_states(const size_t /*state_size*/) const
|
||||||
{
|
{
|
||||||
const int max_num_threads = oneapi_device_->get_num_multiprocessors() *
|
const int max_num_threads = oneapi_device_->get_num_multiprocessors() *
|
||||||
oneapi_device_->get_max_num_threads_per_multiprocessor();
|
oneapi_device_->get_max_num_threads_per_multiprocessor();
|
||||||
|
@@ -25,7 +25,7 @@ class OneapiDeviceQueue : public DeviceQueue {
|
|||||||
|
|
||||||
virtual int num_concurrent_states(const size_t state_size) const override;
|
virtual int num_concurrent_states(const size_t state_size) const override;
|
||||||
|
|
||||||
virtual int num_concurrent_busy_states() const override;
|
virtual int num_concurrent_busy_states(const size_t state_size) const override;
|
||||||
|
|
||||||
virtual void init_execution() override;
|
virtual void init_execution() override;
|
||||||
|
|
||||||
|
@@ -103,7 +103,7 @@ class DeviceQueue {
|
|||||||
/* Number of states which keeps the device occupied with work without losing performance.
|
/* Number of states which keeps the device occupied with work without losing performance.
|
||||||
* The renderer will add more work (when available) when number of active paths falls below this
|
* The renderer will add more work (when available) when number of active paths falls below this
|
||||||
* value. */
|
* value. */
|
||||||
virtual int num_concurrent_busy_states() const = 0;
|
virtual int num_concurrent_busy_states(const size_t state_size) const = 0;
|
||||||
|
|
||||||
/* Number of elements in a partition of sorted shaders, that improves memory locality of
|
/* Number of elements in a partition of sorted shaders, that improves memory locality of
|
||||||
* integrator state fetch at the cost of decreased coherence for shader kernel execution. */
|
* integrator state fetch at the cost of decreased coherence for shader kernel execution. */
|
||||||
|
@@ -1296,6 +1296,7 @@ void PathTrace::set_guiding_params(const GuidingParams &guiding_params, const bo
|
|||||||
# if OPENPGL_VERSION_MINOR >= 4
|
# if OPENPGL_VERSION_MINOR >= 4
|
||||||
field_args.deterministic = guiding_params.deterministic;
|
field_args.deterministic = guiding_params.deterministic;
|
||||||
# endif
|
# endif
|
||||||
|
reinterpret_cast<PGLKDTreeArguments *>(field_args.spatialSturctureArguments)->maxDepth = 16;
|
||||||
openpgl::cpp::Device *guiding_device = static_cast<openpgl::cpp::Device *>(
|
openpgl::cpp::Device *guiding_device = static_cast<openpgl::cpp::Device *>(
|
||||||
device_->get_guiding_device());
|
device_->get_guiding_device());
|
||||||
if (guiding_device) {
|
if (guiding_device) {
|
||||||
|
@@ -18,13 +18,15 @@
|
|||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
static size_t estimate_single_state_size()
|
static size_t estimate_single_state_size(const uint kernel_features)
|
||||||
{
|
{
|
||||||
size_t state_size = 0;
|
size_t state_size = 0;
|
||||||
|
|
||||||
#define KERNEL_STRUCT_BEGIN(name) for (int array_index = 0;; array_index++) {
|
#define KERNEL_STRUCT_BEGIN(name) for (int array_index = 0;; array_index++) {
|
||||||
#define KERNEL_STRUCT_MEMBER(parent_struct, type, name, feature) state_size += sizeof(type);
|
#define KERNEL_STRUCT_MEMBER(parent_struct, type, name, feature) \
|
||||||
#define KERNEL_STRUCT_ARRAY_MEMBER(parent_struct, type, name, feature) state_size += sizeof(type);
|
state_size += (kernel_features & (feature)) ? sizeof(type) : 0;
|
||||||
|
#define KERNEL_STRUCT_ARRAY_MEMBER(parent_struct, type, name, feature) \
|
||||||
|
state_size += (kernel_features & (feature)) ? sizeof(type) : 0;
|
||||||
#define KERNEL_STRUCT_END(name) \
|
#define KERNEL_STRUCT_END(name) \
|
||||||
break; \
|
break; \
|
||||||
}
|
}
|
||||||
@@ -76,16 +78,11 @@ PathTraceWorkGPU::PathTraceWorkGPU(Device *device,
|
|||||||
num_queued_paths_(device, "num_queued_paths", MEM_READ_WRITE),
|
num_queued_paths_(device, "num_queued_paths", MEM_READ_WRITE),
|
||||||
work_tiles_(device, "work_tiles", MEM_READ_WRITE),
|
work_tiles_(device, "work_tiles", MEM_READ_WRITE),
|
||||||
display_rgba_half_(device, "display buffer half", MEM_READ_WRITE),
|
display_rgba_half_(device, "display buffer half", MEM_READ_WRITE),
|
||||||
max_num_paths_(queue_->num_concurrent_states(estimate_single_state_size())),
|
max_num_paths_(0),
|
||||||
min_num_active_main_paths_(queue_->num_concurrent_busy_states()),
|
min_num_active_main_paths_(0),
|
||||||
max_active_main_path_index_(0)
|
max_active_main_path_index_(0)
|
||||||
{
|
{
|
||||||
memset(&integrator_state_gpu_, 0, sizeof(integrator_state_gpu_));
|
memset(&integrator_state_gpu_, 0, sizeof(integrator_state_gpu_));
|
||||||
|
|
||||||
/* Limit number of active paths to the half of the overall state. This is due to the logic in the
|
|
||||||
* path compaction which relies on the fact that regeneration does not happen sooner than half of
|
|
||||||
* the states are available again. */
|
|
||||||
min_num_active_main_paths_ = min(min_num_active_main_paths_, max_num_paths_ / 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathTraceWorkGPU::alloc_integrator_soa()
|
void PathTraceWorkGPU::alloc_integrator_soa()
|
||||||
@@ -103,6 +100,20 @@ void PathTraceWorkGPU::alloc_integrator_soa()
|
|||||||
integrator_state_soa_volume_stack_size_ = max(integrator_state_soa_volume_stack_size_,
|
integrator_state_soa_volume_stack_size_ = max(integrator_state_soa_volume_stack_size_,
|
||||||
requested_volume_stack_size);
|
requested_volume_stack_size);
|
||||||
|
|
||||||
|
/* Determine the number of path states. Deferring this for as long as possible allows the
|
||||||
|
* back-end to make better decisions about memory availability. */
|
||||||
|
if (max_num_paths_ == 0) {
|
||||||
|
size_t single_state_size = estimate_single_state_size(kernel_features);
|
||||||
|
|
||||||
|
max_num_paths_ = queue_->num_concurrent_states(single_state_size);
|
||||||
|
min_num_active_main_paths_ = queue_->num_concurrent_busy_states(single_state_size);
|
||||||
|
|
||||||
|
/* Limit number of active paths to the half of the overall state. This is due to the logic in
|
||||||
|
* the path compaction which relies on the fact that regeneration does not happen sooner than
|
||||||
|
* half of the states are available again. */
|
||||||
|
min_num_active_main_paths_ = min(min_num_active_main_paths_, max_num_paths_ / 2);
|
||||||
|
}
|
||||||
|
|
||||||
/* Allocate a device only memory buffer before for each struct member, and then
|
/* Allocate a device only memory buffer before for each struct member, and then
|
||||||
* write the pointers into a struct that resides in constant memory.
|
* write the pointers into a struct that resides in constant memory.
|
||||||
*
|
*
|
||||||
|
@@ -328,6 +328,7 @@ set(SRC_UTIL_HEADERS
|
|||||||
../util/math_int2.h
|
../util/math_int2.h
|
||||||
../util/math_int3.h
|
../util/math_int3.h
|
||||||
../util/math_int4.h
|
../util/math_int4.h
|
||||||
|
../util/math_int8.h
|
||||||
../util/math_matrix.h
|
../util/math_matrix.h
|
||||||
../util/projection.h
|
../util/projection.h
|
||||||
../util/rect.h
|
../util/rect.h
|
||||||
@@ -350,6 +351,8 @@ set(SRC_UTIL_HEADERS
|
|||||||
../util/types_int3_impl.h
|
../util/types_int3_impl.h
|
||||||
../util/types_int4.h
|
../util/types_int4.h
|
||||||
../util/types_int4_impl.h
|
../util/types_int4_impl.h
|
||||||
|
../util/types_int8.h
|
||||||
|
../util/types_int8_impl.h
|
||||||
../util/types_spectrum.h
|
../util/types_spectrum.h
|
||||||
../util/types_uchar2.h
|
../util/types_uchar2.h
|
||||||
../util/types_uchar2_impl.h
|
../util/types_uchar2_impl.h
|
||||||
@@ -713,10 +716,17 @@ endif()
|
|||||||
# oneAPI module
|
# oneAPI module
|
||||||
|
|
||||||
if(WITH_CYCLES_DEVICE_ONEAPI)
|
if(WITH_CYCLES_DEVICE_ONEAPI)
|
||||||
if(WIN32)
|
if(WITH_CYCLES_ONEAPI_BINARIES)
|
||||||
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/cycles_kernel_oneapi.dll)
|
set(cycles_kernel_oneapi_lib_suffix "_aot")
|
||||||
else()
|
else()
|
||||||
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/libcycles_kernel_oneapi.so)
|
set(cycles_kernel_oneapi_lib_suffix "_jit")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/cycles_kernel_oneapi${cycles_kernel_oneapi_lib_suffix}.dll)
|
||||||
|
set(cycles_kernel_oneapi_linker_lib ${CMAKE_CURRENT_BINARY_DIR}/cycles_kernel_oneapi${cycles_kernel_oneapi_lib_suffix}.lib)
|
||||||
|
else()
|
||||||
|
set(cycles_kernel_oneapi_lib ${CMAKE_CURRENT_BINARY_DIR}/libcycles_kernel_oneapi${cycles_kernel_oneapi_lib_suffix}.so)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(cycles_oneapi_kernel_sources
|
set(cycles_oneapi_kernel_sources
|
||||||
@@ -751,10 +761,6 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
${SYCL_CPP_FLAGS}
|
${SYCL_CPP_FLAGS}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (WITH_CYCLES_ONEAPI_SYCL_HOST_ENABLED)
|
|
||||||
list(APPEND sycl_compiler_flags -DWITH_ONEAPI_SYCL_HOST_ENABLED)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Set defaults for spir64 and spir64_gen options
|
# Set defaults for spir64 and spir64_gen options
|
||||||
if (NOT DEFINED CYCLES_ONEAPI_SYCL_OPTIONS_spir64)
|
if (NOT DEFINED CYCLES_ONEAPI_SYCL_OPTIONS_spir64)
|
||||||
set(CYCLES_ONEAPI_SYCL_OPTIONS_spir64 "-options '-ze-opt-large-register-file -ze-opt-regular-grf-kernel integrator_intersect'")
|
set(CYCLES_ONEAPI_SYCL_OPTIONS_spir64 "-options '-ze-opt-large-register-file -ze-opt-regular-grf-kernel integrator_intersect'")
|
||||||
@@ -767,6 +773,8 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
string(PREPEND CYCLES_ONEAPI_SYCL_OPTIONS_spir64_gen "-device ${CYCLES_ONEAPI_SPIR64_GEN_DEVICES} ")
|
string(PREPEND CYCLES_ONEAPI_SYCL_OPTIONS_spir64_gen "-device ${CYCLES_ONEAPI_SPIR64_GEN_DEVICES} ")
|
||||||
|
|
||||||
if (WITH_CYCLES_ONEAPI_BINARIES)
|
if (WITH_CYCLES_ONEAPI_BINARIES)
|
||||||
|
# AoT binaries aren't currently reused when calling sycl::build.
|
||||||
|
list (APPEND sycl_compiler_flags -DSYCL_SKIP_KERNELS_PRELOAD)
|
||||||
# Iterate over all targest and their options
|
# Iterate over all targest and their options
|
||||||
list (JOIN CYCLES_ONEAPI_SYCL_TARGETS "," targets_string)
|
list (JOIN CYCLES_ONEAPI_SYCL_TARGETS "," targets_string)
|
||||||
list (APPEND sycl_compiler_flags -fsycl-targets=${targets_string})
|
list (APPEND sycl_compiler_flags -fsycl-targets=${targets_string})
|
||||||
@@ -819,12 +827,17 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
-DONEAPI_EXPORT)
|
-DONEAPI_EXPORT)
|
||||||
|
|
||||||
string(REPLACE /Redist/ /Tools/ MSVC_TOOLS_DIR ${MSVC_REDIST_DIR})
|
string(REPLACE /Redist/ /Tools/ MSVC_TOOLS_DIR ${MSVC_REDIST_DIR})
|
||||||
if(NOT CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION) # case for Ninja on Windows
|
# Version Folder between Redist and Tools can mismatch sometimes
|
||||||
|
if(NOT EXISTS ${MSVC_TOOLS_DIR})
|
||||||
|
get_filename_component(cmake_ar_dir ${CMAKE_AR} DIRECTORY)
|
||||||
|
get_filename_component(MSVC_TOOLS_DIR "${cmake_ar_dir}/../../../" ABSOLUTE)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION)
|
||||||
|
set(WINDOWS_KIT_DIR ${WINDOWS_KITS_DIR}/Lib/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION})
|
||||||
|
else() # case for Ninja on Windows
|
||||||
get_filename_component(cmake_mt_dir ${CMAKE_MT} DIRECTORY)
|
get_filename_component(cmake_mt_dir ${CMAKE_MT} DIRECTORY)
|
||||||
string(REPLACE /bin/ /Lib/ WINDOWS_KIT_DIR ${cmake_mt_dir})
|
string(REPLACE /bin/ /Lib/ WINDOWS_KIT_DIR ${cmake_mt_dir})
|
||||||
get_filename_component(WINDOWS_KIT_DIR "${WINDOWS_KIT_DIR}/../" ABSOLUTE)
|
get_filename_component(WINDOWS_KIT_DIR "${WINDOWS_KIT_DIR}/../" ABSOLUTE)
|
||||||
else()
|
|
||||||
set(WINDOWS_KIT_DIR ${WINDOWS_KITS_DIR}/Lib/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION})
|
|
||||||
endif()
|
endif()
|
||||||
list(APPEND sycl_compiler_flags
|
list(APPEND sycl_compiler_flags
|
||||||
-L "${MSVC_TOOLS_DIR}/lib/x64"
|
-L "${MSVC_TOOLS_DIR}/lib/x64"
|
||||||
@@ -836,15 +849,13 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
set(sycl_compiler_flags_RelWithDebInfo ${sycl_compiler_flags})
|
set(sycl_compiler_flags_RelWithDebInfo ${sycl_compiler_flags})
|
||||||
set(sycl_compiler_flags_MinSizeRel ${sycl_compiler_flags})
|
set(sycl_compiler_flags_MinSizeRel ${sycl_compiler_flags})
|
||||||
list(APPEND sycl_compiler_flags_RelWithDebInfo -g)
|
list(APPEND sycl_compiler_flags_RelWithDebInfo -g)
|
||||||
get_filename_component(sycl_library_debug_name ${SYCL_LIBRARY_DEBUG} NAME_WE)
|
|
||||||
list(APPEND sycl_compiler_flags_Debug
|
list(APPEND sycl_compiler_flags_Debug
|
||||||
-g
|
-g
|
||||||
-D_DEBUG
|
-D_DEBUG
|
||||||
-nostdlib -Xclang --dependent-lib=msvcrtd
|
-nostdlib -Xclang --dependent-lib=msvcrtd)
|
||||||
-Xclang --dependent-lib=${sycl_library_debug_name})
|
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${cycles_kernel_oneapi_lib}
|
OUTPUT ${cycles_kernel_oneapi_lib} ${cycles_kernel_oneapi_linker_lib}
|
||||||
COMMAND ${CMAKE_COMMAND} -E env
|
COMMAND ${CMAKE_COMMAND} -E env
|
||||||
"LIB=${sycl_compiler_root}/../lib" # for compiler to find sycl.lib
|
"LIB=${sycl_compiler_root}/../lib" # for compiler to find sycl.lib
|
||||||
"PATH=${OCLOC_INSTALL_DIR}\;${sycl_compiler_root}"
|
"PATH=${OCLOC_INSTALL_DIR}\;${sycl_compiler_root}"
|
||||||
@@ -858,8 +869,8 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
else()
|
else()
|
||||||
list(APPEND sycl_compiler_flags -fPIC)
|
list(APPEND sycl_compiler_flags -fPIC)
|
||||||
|
|
||||||
# We avoid getting __FAST_MATH__ to be defined when building on CentOS 7 until the compilation crash
|
# We avoid getting __FAST_MATH__ to be defined when building on CentOS 7 until the compilation
|
||||||
# it triggers at either AoT or JIT stages gets fixed.
|
# crash it triggers at either AoT or JIT stages gets fixed.
|
||||||
list(APPEND sycl_compiler_flags -fhonor-nans)
|
list(APPEND sycl_compiler_flags -fhonor-nans)
|
||||||
|
|
||||||
# add $ORIGIN to cycles_kernel_oneapi.so rpath so libsycl.so and
|
# add $ORIGIN to cycles_kernel_oneapi.so rpath so libsycl.so and
|
||||||
@@ -873,7 +884,8 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
|
|||||||
OUTPUT ${cycles_kernel_oneapi_lib}
|
OUTPUT ${cycles_kernel_oneapi_lib}
|
||||||
COMMAND ${CMAKE_COMMAND} -E env
|
COMMAND ${CMAKE_COMMAND} -E env
|
||||||
"LD_LIBRARY_PATH=${sycl_compiler_root}/../lib:${OCLOC_INSTALL_DIR}/lib:${IGC_INSTALL_DIR}/lib"
|
"LD_LIBRARY_PATH=${sycl_compiler_root}/../lib:${OCLOC_INSTALL_DIR}/lib:${IGC_INSTALL_DIR}/lib"
|
||||||
"PATH=${OCLOC_INSTALL_DIR}/bin:${sycl_compiler_root}:$ENV{PATH}" # env PATH is for compiler to find ld
|
# `$ENV{PATH}` is for compiler to find `ld`.
|
||||||
|
"PATH=${OCLOC_INSTALL_DIR}/bin:${sycl_compiler_root}:$ENV{PATH}"
|
||||||
${SYCL_COMPILER} $<$<CONFIG:Debug>:-g>$<$<CONFIG:RelWithDebInfo>:-g> ${sycl_compiler_flags}
|
${SYCL_COMPILER} $<$<CONFIG:Debug>:-g>$<$<CONFIG:RelWithDebInfo>:-g> ${sycl_compiler_flags}
|
||||||
DEPENDS ${cycles_oneapi_kernel_sources})
|
DEPENDS ${cycles_oneapi_kernel_sources})
|
||||||
endif()
|
endif()
|
||||||
|
@@ -229,7 +229,7 @@ ccl_device_inline
|
|||||||
/* Always use baked shadow transparency for curves. */
|
/* Always use baked shadow transparency for curves. */
|
||||||
if (isect.type & PRIMITIVE_CURVE) {
|
if (isect.type & PRIMITIVE_CURVE) {
|
||||||
*r_throughput *= intersection_curve_shadow_transparency(
|
*r_throughput *= intersection_curve_shadow_transparency(
|
||||||
kg, isect.object, isect.prim, isect.u);
|
kg, isect.object, isect.prim, isect.type, isect.u);
|
||||||
|
|
||||||
if (*r_throughput < CURVE_SHADOW_TRANSPARENCY_CUTOFF) {
|
if (*r_throughput < CURVE_SHADOW_TRANSPARENCY_CUTOFF) {
|
||||||
return true;
|
return true;
|
||||||
|
@@ -190,10 +190,8 @@ ccl_device_inline int intersection_find_attribute(KernelGlobals kg,
|
|||||||
/* Cut-off value to stop transparent shadow tracing when practically opaque. */
|
/* Cut-off value to stop transparent shadow tracing when practically opaque. */
|
||||||
#define CURVE_SHADOW_TRANSPARENCY_CUTOFF 0.001f
|
#define CURVE_SHADOW_TRANSPARENCY_CUTOFF 0.001f
|
||||||
|
|
||||||
ccl_device_inline float intersection_curve_shadow_transparency(KernelGlobals kg,
|
ccl_device_inline float intersection_curve_shadow_transparency(
|
||||||
const int object,
|
KernelGlobals kg, const int object, const int prim, const int type, const float u)
|
||||||
const int prim,
|
|
||||||
const float u)
|
|
||||||
{
|
{
|
||||||
/* Find attribute. */
|
/* Find attribute. */
|
||||||
const int offset = intersection_find_attribute(kg, object, ATTR_STD_SHADOW_TRANSPARENCY);
|
const int offset = intersection_find_attribute(kg, object, ATTR_STD_SHADOW_TRANSPARENCY);
|
||||||
@@ -204,7 +202,7 @@ ccl_device_inline float intersection_curve_shadow_transparency(KernelGlobals kg,
|
|||||||
|
|
||||||
/* Interpolate transparency between curve keys. */
|
/* Interpolate transparency between curve keys. */
|
||||||
const KernelCurve kcurve = kernel_data_fetch(curves, prim);
|
const KernelCurve kcurve = kernel_data_fetch(curves, prim);
|
||||||
const int k0 = kcurve.first_key + PRIMITIVE_UNPACK_SEGMENT(kcurve.type);
|
const int k0 = kcurve.first_key + PRIMITIVE_UNPACK_SEGMENT(type);
|
||||||
const int k1 = k0 + 1;
|
const int k1 = k0 + 1;
|
||||||
|
|
||||||
const float f0 = kernel_data_fetch(attributes_float, offset + k0);
|
const float f0 = kernel_data_fetch(attributes_float, offset + k0);
|
||||||
|
@@ -201,11 +201,35 @@ ccl_device float2 direction_to_mirrorball(float3 dir)
|
|||||||
return make_float2(u, v);
|
return make_float2(u, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Single face of a equiangular cube map projection as described in
|
||||||
|
https://blog.google/products/google-ar-vr/bringing-pixels-front-and-center-vr-video/ */
|
||||||
|
ccl_device float3 equiangular_cubemap_face_to_direction(float u, float v)
|
||||||
|
{
|
||||||
|
u = (1.0f - u);
|
||||||
|
|
||||||
|
u = tanf(u * M_PI_2_F - M_PI_4_F);
|
||||||
|
v = tanf(v * M_PI_2_F - M_PI_4_F);
|
||||||
|
|
||||||
|
return make_float3(1.0f, u, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
ccl_device float2 direction_to_equiangular_cubemap_face(float3 dir)
|
||||||
|
{
|
||||||
|
float u = atan2f(dir.y, dir.x) * 2.0f / M_PI_F + 0.5f;
|
||||||
|
float v = atan2f(dir.z, dir.x) * 2.0f / M_PI_F + 0.5f;
|
||||||
|
|
||||||
|
u = 1.0f - u;
|
||||||
|
|
||||||
|
return make_float2(u, v);
|
||||||
|
}
|
||||||
|
|
||||||
ccl_device_inline float3 panorama_to_direction(ccl_constant KernelCamera *cam, float u, float v)
|
ccl_device_inline float3 panorama_to_direction(ccl_constant KernelCamera *cam, float u, float v)
|
||||||
{
|
{
|
||||||
switch (cam->panorama_type) {
|
switch (cam->panorama_type) {
|
||||||
case PANORAMA_EQUIRECTANGULAR:
|
case PANORAMA_EQUIRECTANGULAR:
|
||||||
return equirectangular_range_to_direction(u, v, cam->equirectangular_range);
|
return equirectangular_range_to_direction(u, v, cam->equirectangular_range);
|
||||||
|
case PANORAMA_EQUIANGULAR_CUBEMAP_FACE:
|
||||||
|
return equiangular_cubemap_face_to_direction(u, v);
|
||||||
case PANORAMA_MIRRORBALL:
|
case PANORAMA_MIRRORBALL:
|
||||||
return mirrorball_to_direction(u, v);
|
return mirrorball_to_direction(u, v);
|
||||||
case PANORAMA_FISHEYE_EQUIDISTANT:
|
case PANORAMA_FISHEYE_EQUIDISTANT:
|
||||||
@@ -230,6 +254,8 @@ ccl_device_inline float2 direction_to_panorama(ccl_constant KernelCamera *cam, f
|
|||||||
switch (cam->panorama_type) {
|
switch (cam->panorama_type) {
|
||||||
case PANORAMA_EQUIRECTANGULAR:
|
case PANORAMA_EQUIRECTANGULAR:
|
||||||
return direction_to_equirectangular_range(dir, cam->equirectangular_range);
|
return direction_to_equirectangular_range(dir, cam->equirectangular_range);
|
||||||
|
case PANORAMA_EQUIANGULAR_CUBEMAP_FACE:
|
||||||
|
return direction_to_equiangular_cubemap_face(dir);
|
||||||
case PANORAMA_MIRRORBALL:
|
case PANORAMA_MIRRORBALL:
|
||||||
return direction_to_mirrorball(dir);
|
return direction_to_mirrorball(dir);
|
||||||
case PANORAMA_FISHEYE_EQUIDISTANT:
|
case PANORAMA_FISHEYE_EQUIDISTANT:
|
||||||
|
@@ -252,7 +252,7 @@ ccl_device void kernel_embree_filter_occluded_func(const RTCFilterFunctionNArgum
|
|||||||
/* Always use baked shadow transparency for curves. */
|
/* Always use baked shadow transparency for curves. */
|
||||||
if (current_isect.type & PRIMITIVE_CURVE) {
|
if (current_isect.type & PRIMITIVE_CURVE) {
|
||||||
ctx->throughput *= intersection_curve_shadow_transparency(
|
ctx->throughput *= intersection_curve_shadow_transparency(
|
||||||
kg, current_isect.object, current_isect.prim, current_isect.u);
|
kg, current_isect.object, current_isect.prim, current_isect.type, current_isect.u);
|
||||||
|
|
||||||
if (ctx->throughput < CURVE_SHADOW_TRANSPARENCY_CUTOFF) {
|
if (ctx->throughput < CURVE_SHADOW_TRANSPARENCY_CUTOFF) {
|
||||||
ctx->opaque_hit = true;
|
ctx->opaque_hit = true;
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
* one with SSE2 intrinsics.
|
* one with SSE2 intrinsics.
|
||||||
*/
|
*/
|
||||||
#if defined(__x86_64__) || defined(_M_X64)
|
#if defined(__x86_64__) || defined(_M_X64)
|
||||||
|
# define __KERNEL_SSE__
|
||||||
# define __KERNEL_SSE2__
|
# define __KERNEL_SSE2__
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -29,11 +30,15 @@
|
|||||||
# define __KERNEL_SSE41__
|
# define __KERNEL_SSE41__
|
||||||
# endif
|
# endif
|
||||||
# ifdef __AVX__
|
# ifdef __AVX__
|
||||||
|
# ifndef __KERNEL_SSE__
|
||||||
# define __KERNEL_SSE__
|
# define __KERNEL_SSE__
|
||||||
|
# endif
|
||||||
# define __KERNEL_AVX__
|
# define __KERNEL_AVX__
|
||||||
# endif
|
# endif
|
||||||
# ifdef __AVX2__
|
# ifdef __AVX2__
|
||||||
|
# ifndef __KERNEL_SSE__
|
||||||
# define __KERNEL_SSE__
|
# define __KERNEL_SSE__
|
||||||
|
# endif
|
||||||
# define __KERNEL_AVX2__
|
# define __KERNEL_AVX2__
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
@@ -23,22 +23,6 @@ CCL_NAMESPACE_BEGIN
|
|||||||
* and keep device specific code in compat.h */
|
* and keep device specific code in compat.h */
|
||||||
|
|
||||||
#ifdef __KERNEL_ONEAPI__
|
#ifdef __KERNEL_ONEAPI__
|
||||||
# ifdef WITH_ONEAPI_SYCL_HOST_ENABLED
|
|
||||||
template<typename IsActiveOp>
|
|
||||||
void cpu_serial_active_index_array_impl(const uint num_states,
|
|
||||||
ccl_global int *ccl_restrict indices,
|
|
||||||
ccl_global int *ccl_restrict num_indices,
|
|
||||||
IsActiveOp is_active_op)
|
|
||||||
{
|
|
||||||
int write_index = 0;
|
|
||||||
for (int state_index = 0; state_index < num_states; state_index++) {
|
|
||||||
if (is_active_op(state_index))
|
|
||||||
indices[write_index++] = state_index;
|
|
||||||
}
|
|
||||||
*num_indices = write_index;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
# endif /* WITH_ONEAPI_SYCL_HOST_ENABLED */
|
|
||||||
|
|
||||||
template<typename IsActiveOp>
|
template<typename IsActiveOp>
|
||||||
void gpu_parallel_active_index_array_impl(const uint num_states,
|
void gpu_parallel_active_index_array_impl(const uint num_states,
|
||||||
@@ -182,18 +166,11 @@ __device__
|
|||||||
num_simd_groups, \
|
num_simd_groups, \
|
||||||
simdgroup_offset)
|
simdgroup_offset)
|
||||||
#elif defined(__KERNEL_ONEAPI__)
|
#elif defined(__KERNEL_ONEAPI__)
|
||||||
# ifdef WITH_ONEAPI_SYCL_HOST_ENABLED
|
|
||||||
# define gpu_parallel_active_index_array( \
|
|
||||||
blocksize, num_states, indices, num_indices, is_active_op) \
|
|
||||||
if (ccl_gpu_global_size_x() == 1) \
|
|
||||||
cpu_serial_active_index_array_impl(num_states, indices, num_indices, is_active_op); \
|
|
||||||
else \
|
|
||||||
gpu_parallel_active_index_array_impl(num_states, indices, num_indices, is_active_op);
|
|
||||||
# else
|
|
||||||
# define gpu_parallel_active_index_array( \
|
# define gpu_parallel_active_index_array( \
|
||||||
blocksize, num_states, indices, num_indices, is_active_op) \
|
blocksize, num_states, indices, num_indices, is_active_op) \
|
||||||
gpu_parallel_active_index_array_impl(num_states, indices, num_indices, is_active_op)
|
gpu_parallel_active_index_array_impl(num_states, indices, num_indices, is_active_op)
|
||||||
# endif
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# define gpu_parallel_active_index_array( \
|
# define gpu_parallel_active_index_array( \
|
||||||
|
@@ -35,20 +35,47 @@ class MetalKernelContext {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __KERNEL_METAL_INTEL__
|
||||||
|
template<typename TextureType, typename CoordsType>
|
||||||
|
inline __attribute__((__always_inline__))
|
||||||
|
auto ccl_gpu_tex_object_read_intel_workaround(TextureType texture_array,
|
||||||
|
const uint tid, const uint sid,
|
||||||
|
CoordsType coords) const
|
||||||
|
{
|
||||||
|
switch(sid) {
|
||||||
|
default:
|
||||||
|
case 0: return texture_array[tid].tex.sample(sampler(address::repeat, filter::nearest), coords);
|
||||||
|
case 1: return texture_array[tid].tex.sample(sampler(address::clamp_to_edge, filter::nearest), coords);
|
||||||
|
case 2: return texture_array[tid].tex.sample(sampler(address::clamp_to_zero, filter::nearest), coords);
|
||||||
|
case 3: return texture_array[tid].tex.sample(sampler(address::repeat, filter::linear), coords);
|
||||||
|
case 4: return texture_array[tid].tex.sample(sampler(address::clamp_to_edge, filter::linear), coords);
|
||||||
|
case 5: return texture_array[tid].tex.sample(sampler(address::clamp_to_zero, filter::linear), coords);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// texture2d
|
// texture2d
|
||||||
template<>
|
template<>
|
||||||
inline __attribute__((__always_inline__))
|
inline __attribute__((__always_inline__))
|
||||||
float4 ccl_gpu_tex_object_read_2D(ccl_gpu_tex_object_2D tex, float x, float y) const {
|
float4 ccl_gpu_tex_object_read_2D(ccl_gpu_tex_object_2D tex, float x, float y) const {
|
||||||
const uint tid(tex);
|
const uint tid(tex);
|
||||||
const uint sid(tex >> 32);
|
const uint sid(tex >> 32);
|
||||||
|
#ifndef __KERNEL_METAL_INTEL__
|
||||||
return metal_ancillaries->textures_2d[tid].tex.sample(metal_samplers[sid], float2(x, y));
|
return metal_ancillaries->textures_2d[tid].tex.sample(metal_samplers[sid], float2(x, y));
|
||||||
|
#else
|
||||||
|
return ccl_gpu_tex_object_read_intel_workaround(metal_ancillaries->textures_2d, tid, sid, float2(x, y));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
template<>
|
template<>
|
||||||
inline __attribute__((__always_inline__))
|
inline __attribute__((__always_inline__))
|
||||||
float ccl_gpu_tex_object_read_2D(ccl_gpu_tex_object_2D tex, float x, float y) const {
|
float ccl_gpu_tex_object_read_2D(ccl_gpu_tex_object_2D tex, float x, float y) const {
|
||||||
const uint tid(tex);
|
const uint tid(tex);
|
||||||
const uint sid(tex >> 32);
|
const uint sid(tex >> 32);
|
||||||
|
#ifndef __KERNEL_METAL_INTEL__
|
||||||
return metal_ancillaries->textures_2d[tid].tex.sample(metal_samplers[sid], float2(x, y)).x;
|
return metal_ancillaries->textures_2d[tid].tex.sample(metal_samplers[sid], float2(x, y)).x;
|
||||||
|
#else
|
||||||
|
return ccl_gpu_tex_object_read_intel_workaround(metal_ancillaries->textures_2d, tid, sid, float2(x, y)).x;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// texture3d
|
// texture3d
|
||||||
@@ -57,14 +84,22 @@ class MetalKernelContext {
|
|||||||
float4 ccl_gpu_tex_object_read_3D(ccl_gpu_tex_object_3D tex, float x, float y, float z) const {
|
float4 ccl_gpu_tex_object_read_3D(ccl_gpu_tex_object_3D tex, float x, float y, float z) const {
|
||||||
const uint tid(tex);
|
const uint tid(tex);
|
||||||
const uint sid(tex >> 32);
|
const uint sid(tex >> 32);
|
||||||
|
#ifndef __KERNEL_METAL_INTEL__
|
||||||
return metal_ancillaries->textures_3d[tid].tex.sample(metal_samplers[sid], float3(x, y, z));
|
return metal_ancillaries->textures_3d[tid].tex.sample(metal_samplers[sid], float3(x, y, z));
|
||||||
|
#else
|
||||||
|
return ccl_gpu_tex_object_read_intel_workaround(metal_ancillaries->textures_3d, tid, sid, float3(x, y, z));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
template<>
|
template<>
|
||||||
inline __attribute__((__always_inline__))
|
inline __attribute__((__always_inline__))
|
||||||
float ccl_gpu_tex_object_read_3D(ccl_gpu_tex_object_3D tex, float x, float y, float z) const {
|
float ccl_gpu_tex_object_read_3D(ccl_gpu_tex_object_3D tex, float x, float y, float z) const {
|
||||||
const uint tid(tex);
|
const uint tid(tex);
|
||||||
const uint sid(tex >> 32);
|
const uint sid(tex >> 32);
|
||||||
|
#ifndef __KERNEL_METAL_INTEL__
|
||||||
return metal_ancillaries->textures_3d[tid].tex.sample(metal_samplers[sid], float3(x, y, z)).x;
|
return metal_ancillaries->textures_3d[tid].tex.sample(metal_samplers[sid], float3(x, y, z)).x;
|
||||||
|
#else
|
||||||
|
return ccl_gpu_tex_object_read_intel_workaround(metal_ancillaries->textures_3d, tid, sid, float3(x, y, z)).x;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
# include "kernel/device/gpu/image.h"
|
# include "kernel/device/gpu/image.h"
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user