diff --git a/CMakeLists.txt b/CMakeLists.txt index a0d70bd17d0..be11c314cd2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -417,6 +417,13 @@ Build with external audaspace library installed on the system \ mark_as_advanced(WITH_AUDASPACE) mark_as_advanced(WITH_SYSTEM_AUDASPACE) +if(WITH_AUDASPACE AND NOT WITH_SYSTEM_AUDASPACE) + option(WITH_RUBBERBAND "\ + Build with Rubber Band for audio time-stretching and pitch-scaling (used by Audaspace)" + OFF + ) +endif() + set_and_warn_dependency(WITH_AUDASPACE WITH_SYSTEM_AUDASPACE OFF) if(WITH_GHOST_X11) diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index 9f685b75d7f..d40f1dddf76 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -91,6 +91,8 @@ if(NOT APPLE) include(cmake/hiprt.cmake) include(cmake/dpcpp.cmake) include(cmake/dpcpp_deps.cmake) + include(cmake/emhash.cmake) + include(cmake/parallelhashmap.cmake) if(NOT WIN32) include(cmake/igc.cmake) include(cmake/gmmlib.cmake) @@ -134,6 +136,8 @@ endif() if(NOT WIN32 OR ENABLE_MSYS2) include(cmake/gmp.cmake) include(cmake/openjpeg.cmake) + include(cmake/sqlite.cmake) + include(cmake/fftw.cmake) if(NOT WIN32 OR BUILD_MODE STREQUAL Release) include(cmake/openimagedenoise.cmake) include(cmake/lame.cmake) @@ -146,7 +150,6 @@ if(NOT WIN32 OR ENABLE_MSYS2) include(cmake/x265.cmake) include(cmake/aom.cmake) include(cmake/ffmpeg.cmake) - include(cmake/fftw.cmake) include(cmake/flac.cmake) include(cmake/sndfile.cmake) if(UNIX) @@ -162,7 +165,6 @@ if(UNIX) include(cmake/bzip2.cmake) include(cmake/ffi.cmake) include(cmake/lzma.cmake) - include(cmake/sqlite.cmake) endif() if(UNIX AND NOT APPLE) @@ -182,6 +184,7 @@ include(cmake/spirv-reflect.cmake) include(cmake/pybind11.cmake) include(cmake/nanobind.cmake) include(cmake/manifold.cmake) +include(cmake/rubberband.cmake) # Keep these last. include(cmake/deps_html.cmake) include(cmake/cve_check.cmake) diff --git a/build_files/build_environment/cmake/download.cmake b/build_files/build_environment/cmake/download.cmake index 29b7afd7d1f..22c855f37f3 100644 --- a/build_files/build_environment/cmake/download.cmake +++ b/build_files/build_environment/cmake/download.cmake @@ -158,10 +158,11 @@ download_source(DPCPP) download_source(VCINTRINSICS) download_source(OPENCLHEADERS) download_source(ICDLOADER) -download_source(MP11) +download_source(EMHASH) download_source(DPCPP_SPIRV_HEADERS) download_source(UNIFIED_RUNTIME) download_source(UNIFIED_MEMORY_FRAMEWORK) +download_source(PARALLEL_HASHMAP) download_source(IGC) download_source(IGC_LLVM) download_source(IGC_OPENCL_CLANG) @@ -189,3 +190,4 @@ download_source(DEFLATE) download_source(HIPRT) download_source(NANOBIND) download_source(MANIFOLD) +download_source(RUBBERBAND) diff --git a/build_files/build_environment/cmake/dpcpp.cmake b/build_files/build_environment/cmake/dpcpp.cmake index c8328ba971d..293a8e6fe14 100644 --- a/build_files/build_environment/cmake/dpcpp.cmake +++ b/build_files/build_environment/cmake/dpcpp.cmake @@ -39,7 +39,8 @@ set(DPCPP_EXTRA_ARGS -DLLVMGenXIntrinsics_SOURCE_DIR=${BUILD_DIR}/vcintrinsics/src/external_vcintrinsics/ -DOpenCL_HEADERS=file://${PACKAGE_DIR}/${OPENCLHEADERS_FILE} -DOpenCL_LIBRARY_SRC=file://${PACKAGE_DIR}/${ICDLOADER_FILE} - -DBOOST_MP11_SOURCE_DIR=${BUILD_DIR}/mp11/src/external_mp11/ + -DSYCL_EMHASH_DIR=${LIBDIR}/emhash/include + -DEMHASH_SYS_LOC=${LIBDIR}/emhash/include/emhash -DLEVEL_ZERO_LIBRARY=${LIBDIR}/level-zero/lib/${LIBPREFIX}ze_loader${SHAREDLIBEXT} -DLEVEL_ZERO_INCLUDE_DIR=${LIBDIR}/level-zero/include/level_zero -DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${BUILD_DIR}/dpcpp_spirvheaders/src/external_dpcpp_spirvheaders/ @@ -49,21 +50,21 @@ set(DPCPP_EXTRA_ARGS -DSYCL_UMF_DISABLE_HWLOC=ON -DUMF_DISABLE_HWLOC=ON -DUMF_BUILD_SHARED_LIBRARY=OFF - -DSYCL_ENABLE_XPTI_TRACING=OFF + -DSYCL_ENABLE_XPTI_TRACING=ON -DSYCL_INCLUDE_TESTS=OFF - -DUR_ENABLE_TRACING=OFF - -DUR_BUILD_TOOLS=OFF + -DUR_ENABLE_TRACING=ON + -DXPTIFW_PARALLEL_HASHMAP_HEADERS=${LIBDIR}/parallelhashmap/include # Below here is copied from an invocation of buildbot/config.py -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_TARGETS_TO_BUILD=X86 - -DLLVM_EXTERNAL_PROJECTS=sycl^^llvm-spirv^^opencl^^libdevice^^lld + -DLLVM_EXTERNAL_PROJECTS=sycl^^llvm-spirv^^opencl^^libdevice^^xpti^^xptifw^^lld -DLLVM_EXTERNAL_SYCL_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/sycl -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/llvm-spirv -DLLVM_EXTERNAL_XPTI_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/xpti -DXPTI_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/xpti -DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/xptifw -DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR=${DPCPP_SOURCE_ROOT}/libdevice - -DLLVM_ENABLE_PROJECTS=clang^^sycl^^llvm-spirv^^opencl^^libdevice^^lld + -DLLVM_ENABLE_PROJECTS=clang^^sycl^^llvm-spirv^^opencl^^libdevice^^xpti^^xptifw^^lld -DLIBCLC_TARGETS_TO_BUILD= -DLIBCLC_GENERATE_REMANGLED_VARIANTS=OFF -DSYCL_BUILD_PI_HIP_PLATFORM=AMD @@ -136,12 +137,13 @@ add_dependencies( external_vcintrinsics external_openclheaders external_icdloader - external_mp11 + external_emhash external_level-zero external_dpcpp_spirvheaders external_unifiedruntime external_unifiedmemoryframework external_zstd + external_parallelhashmap ) if(WIN32) @@ -162,6 +164,7 @@ else() harvest(external_dpcpp dpcpp/bin dpcpp/bin "*") harvest(external_dpcpp dpcpp/include dpcpp/include "*") harvest(external_dpcpp dpcpp/lib dpcpp/lib "libsycl*") + harvest(external_dpcpp dpcpp/lib dpcpp/lib "libxpti*") harvest(external_dpcpp dpcpp/lib dpcpp/lib "libur*") harvest(external_dpcpp dpcpp/lib/clang dpcpp/lib/clang "*") endif() diff --git a/build_files/build_environment/cmake/dpcpp_deps.cmake b/build_files/build_environment/cmake/dpcpp_deps.cmake index 86738edbc5a..f5333c0f748 100644 --- a/build_files/build_environment/cmake/dpcpp_deps.cmake +++ b/build_files/build_environment/cmake/dpcpp_deps.cmake @@ -42,16 +42,6 @@ ExternalProject_Add(external_icdloader INSTALL_COMMAND echo . ) -ExternalProject_Add(external_mp11 - URL file://${PACKAGE_DIR}/${MP11_FILE} - URL_HASH ${MP11_HASH_TYPE}=${MP11_HASH} - DOWNLOAD_DIR ${DOWNLOAD_DIR} - PREFIX ${BUILD_DIR}/mp11 - CONFIGURE_COMMAND echo . - BUILD_COMMAND echo . - INSTALL_COMMAND echo . -) - ExternalProject_Add(external_dpcpp_spirvheaders URL file://${PACKAGE_DIR}/${DPCPP_SPIRV_HEADERS_FILE} URL_HASH ${DPCPP_SPIRV_HEADERS_HASH_TYPE}=${DPCPP_SPIRV_HEADERS_HASH} diff --git a/build_files/build_environment/cmake/embree.cmake b/build_files/build_environment/cmake/embree.cmake index a3d0e7b8cb9..9026a12c8e7 100644 --- a/build_files/build_environment/cmake/embree.cmake +++ b/build_files/build_environment/cmake/embree.cmake @@ -139,6 +139,9 @@ if(WIN32) COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/embree/lib/embree4_d.lib ${HARVEST_TARGET}/embree/lib/embree4_d.lib + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/embree/lib/embree4_sycl_d.lib + ${HARVEST_TARGET}/embree/lib/embree4_sycl_d.lib DEPENDEES install ) diff --git a/build_files/build_environment/cmake/embree_windows_arm.cmake b/build_files/build_environment/cmake/embree_windows_arm.cmake index 417c31dd43e..02687f4c17c 100644 --- a/build_files/build_environment/cmake/embree_windows_arm.cmake +++ b/build_files/build_environment/cmake/embree_windows_arm.cmake @@ -20,6 +20,7 @@ set(EMBREE_EXTRA_ARGS -DEMBREE_TASKING_SYSTEM=TBB -DEMBREE_TBB_ROOT=${LIBDIR}/tbb -DTBB_ROOT=${LIBDIR}/tbb + -DCOMPILER_HAS_SYCL_SUPPORT=OFF ) set(EMBREE_EXTRA_ARGS diff --git a/build_files/build_environment/cmake/emhash.cmake b/build_files/build_environment/cmake/emhash.cmake new file mode 100644 index 00000000000..bd2129b4481 --- /dev/null +++ b/build_files/build_environment/cmake/emhash.cmake @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2022-2023 Blender Authors +# +# SPDX-License-Identifier: GPL-2.0-or-later + +set(EMHASH_EXTRA_ARGS + -DWITH_BENCHMARKS=OFF +) + +ExternalProject_Add(external_emhash + URL file://${PACKAGE_DIR}/${EMHASH_FILE} + URL_HASH ${EMHASH_HASH_TYPE}=${EMHASH_HASH} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/emhash + + PATCH_COMMAND ${PATCH_CMD} -p 1 -d + ${BUILD_DIR}/emhash/src/external_emhash < + ${PATCH_DIR}/emhash.diff + + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX=${LIBDIR}/emhash + ${DEFAULT_CMAKE_FLAGS} + ${EMHASH_EXTRA_ARGS} +) \ No newline at end of file diff --git a/build_files/build_environment/cmake/ffi.cmake b/build_files/build_environment/cmake/ffi.cmake index 24c62be7c5a..9ca50c4afcd 100644 --- a/build_files/build_environment/cmake/ffi.cmake +++ b/build_files/build_environment/cmake/ffi.cmake @@ -11,6 +11,7 @@ ExternalProject_Add(external_ffi CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ffi/src/external_ffi/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/ffi + --disable-multi-os-directory --enable-shared=no --enable-static=yes --with-pic @@ -24,11 +25,8 @@ ExternalProject_Add(external_ffi cd ${BUILD_DIR}/ffi/src/external_ffi/ && make install - PATCH_COMMAND ${PATCH_CMD} -p 0 -d - ${BUILD_DIR}/ffi/src/external_ffi < - ${PATCH_DIR}/ffi.diff && + PATCH_COMMAND ${PATCH_CMD} -p 1 -d # Fix compilation errors on Apple Clang >= 17, remove when FFI is updated beyond 3.4.7, see PR #136934 for details. - ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/ffi/src/external_ffi < ${PATCH_DIR}/ffi_apple_clang_17.diff diff --git a/build_files/build_environment/cmake/ffmpeg.cmake b/build_files/build_environment/cmake/ffmpeg.cmake index 6c5141e6c05..6560915f1d1 100644 --- a/build_files/build_environment/cmake/ffmpeg.cmake +++ b/build_files/build_environment/cmake/ffmpeg.cmake @@ -163,7 +163,6 @@ ExternalProject_Add(external_ffmpeg cd ${BUILD_DIR}/ffmpeg/src/external_ffmpeg/ && ${FFMPEG_ENV} ${CONFIGURE_COMMAND_NO_TARGET} ${FFMPEG_EXTRA_FLAGS} --disable-lzma - --disable-avfilter --disable-vdpau --disable-bzlib --disable-libgsm diff --git a/build_files/build_environment/cmake/fftw.cmake b/build_files/build_environment/cmake/fftw.cmake index 4b58aa62215..f8198bc99cb 100644 --- a/build_files/build_environment/cmake/fftw.cmake +++ b/build_files/build_environment/cmake/fftw.cmake @@ -79,13 +79,15 @@ if(WIN32) DEPENDEES install ) endif() -else() - add_custom_target(external_fftw) - add_dependencies( - external_fftw - external_fftw3_double - external_fftw3_float) +endif() +add_custom_target(external_fftw) +add_dependencies( + external_fftw + external_fftw3_double + external_fftw3_float) + +if(NOT WIN32) harvest(external_fftw3 fftw3/include fftw3/include "*.h") harvest(external_fftw3 fftw3/lib fftw3/lib "*.a") endif() diff --git a/build_files/build_environment/cmake/haru.cmake b/build_files/build_environment/cmake/haru.cmake index 77a55a02cb7..880118783a0 100644 --- a/build_files/build_environment/cmake/haru.cmake +++ b/build_files/build_environment/cmake/haru.cmake @@ -3,8 +3,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later set(HARU_EXTRA_ARGS - -DLIBHPDF_SHARED=OFF - -DLIBHPDF_STATIC=ON + -DBUILD_SHARED_LIBS=OFF -DLIBHPDF_EXAMPLES=OFF -DLIBHPDF_ENABLE_EXCEPTIONS=ON ) @@ -15,10 +14,6 @@ ExternalProject_Add(external_haru URL_HASH ${HARU_HASH_TYPE}=${HARU_HASH} PREFIX ${BUILD_DIR}/haru - PATCH_COMMAND ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/haru/src/external_haru < - ${PATCH_DIR}/haru.diff - CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=${LIBDIR}/haru ${DEFAULT_CMAKE_FLAGS} ${HARU_EXTRA_ARGS} @@ -33,8 +28,8 @@ if(WIN32) ${LIBDIR}/haru/include ${HARVEST_TARGET}/haru/include COMMAND ${CMAKE_COMMAND} -E copy - ${LIBDIR}/haru/lib/libhpdfs.lib - ${HARVEST_TARGET}/haru/lib/libhpdfs.lib + ${LIBDIR}/haru/lib/hpdf.lib + ${HARVEST_TARGET}/haru/lib/hpdf.lib DEPENDEES install ) diff --git a/build_files/build_environment/cmake/igc.cmake b/build_files/build_environment/cmake/igc.cmake index 2f92d6657a5..f162f915398 100644 --- a/build_files/build_environment/cmake/igc.cmake +++ b/build_files/build_environment/cmake/igc.cmake @@ -51,13 +51,7 @@ ExternalProject_Add(external_igc_llvm ${IGC_OPENCL_CLANG_PATCH_DIR}/clang/0004-OpenCL-Allow-undefining-header-only-macros.patch && ${PATCH_CMD} -p 1 -d ${IGC_LLVM_SOURCE_DIR} < - ${IGC_OPENCL_CLANG_PATCH_DIR}/clang/0005-Enable-use-of-GNU-C-extension.patch && - ${PATCH_CMD} -p 1 -d - ${IGC_LLVM_SOURCE_DIR} < - ${IGC_OPENCL_CLANG_PATCH_DIR}/clang/0006-Make-globals-used-for-array-initialization-codegen-c.patch && - ${PATCH_CMD} -p 1 -d - ${IGC_LLVM_SOURCE_DIR} < - ${IGC_OPENCL_CLANG_PATCH_DIR}/clang/0007-clang-Sema-check-default-argument-promotions-for-pri.patch + ${IGC_OPENCL_CLANG_PATCH_DIR}/clang/0005-Enable-use-of-GNU-C-extension.patch ) add_dependencies( external_igc_llvm diff --git a/build_files/build_environment/cmake/ispc.cmake b/build_files/build_environment/cmake/ispc.cmake index 9fd9bcfd247..db204e3b08c 100644 --- a/build_files/build_environment/cmake/ispc.cmake +++ b/build_files/build_environment/cmake/ispc.cmake @@ -65,11 +65,12 @@ ExternalProject_Add(external_ispc DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH ${ISPC_HASH_TYPE}=${ISPC_HASH} PREFIX ${BUILD_DIR}/ispc + CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR} PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/ispc/src/external_ispc < ${PATCH_DIR}/ispc.diff - + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/ispc -Wno-dev diff --git a/build_files/build_environment/cmake/ocloc.cmake b/build_files/build_environment/cmake/ocloc.cmake index c9a39564716..2a934b35abd 100644 --- a/build_files/build_environment/cmake/ocloc.cmake +++ b/build_files/build_environment/cmake/ocloc.cmake @@ -8,6 +8,7 @@ set(OCLOC_EXTRA_ARGS -DNEO_CURRENT_PLATFORMS_SUPPORT=1 -DNEO_LEGACY_PLATFORMS_SUPPORT=0 -DBUILD_WITH_L0=0 + -DNEO_BUILD_UNVERSIONED_OCLOC=TRUE -DIGC_DIR=${LIBDIR}/igc -DGMM_DIR=${LIBDIR}/gmmlib ) @@ -24,10 +25,6 @@ ExternalProject_Add(external_ocloc ${OCLOC_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/ocloc - - PATCH_COMMAND ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/ocloc/src/external_ocloc/ < - ${PATCH_DIR}/ocloc.diff ) add_dependencies( diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake index 06314bce301..4fab9ad58ee 100644 --- a/build_files/build_environment/cmake/opencolorio.cmake +++ b/build_files/build_environment/cmake/opencolorio.cmake @@ -41,19 +41,11 @@ if(APPLE) ) endif() -if(BLENDER_PLATFORM_ARM) - if(WIN32) - set(OCIO_PATCH - ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/opencolorio/src/external_opencolorio < - ${PATCH_DIR}/ocio_2089.diff - ) - else() - set(OPENCOLORIO_EXTRA_ARGS - ${OPENCOLORIO_EXTRA_ARGS} - -DOCIO_USE_SSE=OFF - ) - endif() +if(BLENDER_PLATFORM_ARM AND NOT WIN32) + set(OPENCOLORIO_EXTRA_ARGS + ${OPENCOLORIO_EXTRA_ARGS} + -DOCIO_USE_SSE=OFF + ) endif() if(WIN32) diff --git a/build_files/build_environment/cmake/openexr.cmake b/build_files/build_environment/cmake/openexr.cmake index df423d1566e..4c87b026afa 100644 --- a/build_files/build_environment/cmake/openexr.cmake +++ b/build_files/build_environment/cmake/openexr.cmake @@ -31,10 +31,6 @@ ExternalProject_Add(external_openexr CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR} PREFIX ${BUILD_DIR}/openexr - PATCH_COMMAND ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/openexr/src/external_openexr < - ${PATCH_DIR}/openexr_1986.diff - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openexr ${DEFAULT_CMAKE_FLAGS} diff --git a/build_files/build_environment/cmake/openimagedenoise.cmake b/build_files/build_environment/cmake/openimagedenoise.cmake index 6888111b53c..ba028ceb59b 100644 --- a/build_files/build_environment/cmake/openimagedenoise.cmake +++ b/build_files/build_environment/cmake/openimagedenoise.cmake @@ -46,6 +46,15 @@ if(WIN32 AND NOT BLENDER_PLATFORM_ARM) -DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang.exe -DCMAKE_DEBUG_POSTFIX=_d ) + if(DEFINED ENV{ROCM_PATH}) + # Older ROCM shipped a /bin/hipconfig (no extension) and oidn + # uses it to validate a valid rocm folder, given this file + # is no longer shipped work around it for now by passing the + # path ourselves, so we don't have to rely on their find rocm + # functionality. + cmake_path(CONVERT $ENV{ROCM_PATH} TO_CMAKE_PATH_LIST ROCM_PATH NORMALIZE) + list(APPEND OIDN_EXTRA_ARGS -DROCM_PATH=${ROCM_PATH}) + endif() set(OIDN_CMAKE_FLAGS ${DEFAULT_CLANG_CMAKE_FLAGS} -DCMAKE_CXX_COMPILER=${LIBDIR}/dpcpp/bin/clang++.exe -DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang.exe diff --git a/build_files/build_environment/cmake/openimageio.cmake b/build_files/build_environment/cmake/openimageio.cmake index 737a98c80ae..f88e1abe0d3 100644 --- a/build_files/build_environment/cmake/openimageio.cmake +++ b/build_files/build_environment/cmake/openimageio.cmake @@ -12,6 +12,7 @@ if(UNIX AND NOT APPLE) # This causes linking to static pthread libraries which gives link errors. # Since we manually specify library paths it should static link other libs. set(OPENIMAGEIO_LINKSTATIC -DLINKSTATIC=OFF) + set(OIIO_SIMD_FLAGS -DUSE_SIMD=sse4.2) else() set(OPENIMAGEIO_LINKSTATIC -DLINKSTATIC=ON) endif() @@ -20,7 +21,7 @@ if(WIN32) if(BLENDER_PLATFORM_ARM) set(OIIO_SIMD_FLAGS -DUSE_SIMD=0) else() - set(OIIO_SIMD_FLAGS -DUSE_SIMD=sse2) + set(OIIO_SIMD_FLAGS -DUSE_SIMD=sse4.2) endif() set(OPENJPEG_POSTFIX _msvc) if(BUILD_MODE STREQUAL Debug) @@ -133,7 +134,7 @@ ExternalProject_Add(external_openimageio ${PATCH_DIR}/openimageio.diff && ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/openimageio/src/external_openimageio/ < - ${PATCH_DIR}/oiio_windows_arm64.diff + ${PATCH_DIR}/openimageio_png_cicp_4746.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimageio ${DEFAULT_CMAKE_FLAGS} diff --git a/build_files/build_environment/cmake/openjpeg.cmake b/build_files/build_environment/cmake/openjpeg.cmake index f1e91786e27..ed1679454a1 100644 --- a/build_files/build_environment/cmake/openjpeg.cmake +++ b/build_files/build_environment/cmake/openjpeg.cmake @@ -47,10 +47,6 @@ else() DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH ${OPENJPEG_HASH_TYPE}=${OPENJPEG_HASH} - PATCH_COMMAND ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/openjpeg_msvc/src/external_openjpeg_msvc < - ${PATCH_DIR}/openjpeg_msvc.diff - PREFIX ${BUILD_DIR}/openjpeg_msvc CMAKE_ARGS diff --git a/build_files/build_environment/cmake/parallelhashmap.cmake b/build_files/build_environment/cmake/parallelhashmap.cmake new file mode 100644 index 00000000000..2f0841c92c8 --- /dev/null +++ b/build_files/build_environment/cmake/parallelhashmap.cmake @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: 2022-2023 Blender Authors +# +# SPDX-License-Identifier: GPL-2.0-or-later + +set(PARALLELHASHMAP_EXTRA_ARGS + -DPHMAP_BUILD_TESTS=OFF + -DPHMAP_BUILD_EXAMPLES=OFF +) + +ExternalProject_Add(external_parallelhashmap + URL file://${PACKAGE_DIR}/${PARALLEL_HASHMAP_FILE} + URL_HASH ${PARALLEL_HASHMAP_HASH_TYPE}=${PARALLEL_HASHMAP_HASH} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + PREFIX ${BUILD_DIR}/parallelhashmap + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX=${LIBDIR}/parallelhashmap + ${DEFAULT_CMAKE_FLAGS} + ${PARALLELHASHMAP_EXTRA_ARGS} +) \ No newline at end of file diff --git a/build_files/build_environment/cmake/python.cmake b/build_files/build_environment/cmake/python.cmake index 6cfb0e8cda3..cdf6404cdd4 100644 --- a/build_files/build_environment/cmake/python.cmake +++ b/build_files/build_environment/cmake/python.cmake @@ -30,11 +30,13 @@ if(WIN32) set(PYTHON_EXTERNALS_FOLDER ${BUILD_DIR}/python/src/external_python/externals) set(ZLIB_SOURCE_FOLDER ${BUILD_DIR}/zlib/src/external_zlib) set(SSL_SOURCE_FOLDER ${BUILD_DIR}/ssl/src/external_ssl) + set(SQLITE_SOURCE_FOLDER ${BUILD_DIR}/sqlite/src/external_sqlite) set(DOWNLOADS_EXTERNALS_FOLDER ${DOWNLOAD_DIR}/externals) 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(${SSL_SOURCE_FOLDER} SSL_SOURCE_FOLDER_DOS) + cmake_to_dos_path(${SQLITE_SOURCE_FOLDER} SQLITE_SOURCE_FOLDER_DOS) cmake_to_dos_path(${DOWNLOADS_EXTERNALS_FOLDER} DOWNLOADS_EXTERNALS_FOLDER_DOS) ExternalProject_Add(external_python @@ -50,6 +52,7 @@ if(WIN32) PATCH_COMMAND mkdir ${PYTHON_EXTERNALS_FOLDER_DOS} && mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\zlib-1.3.1 ${ZLIB_SOURCE_FOLDER_DOS} && mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\openssl-3.0.15 ${SSL_SOURCE_FOLDER_DOS} && + mklink /J ${PYTHON_EXTERNALS_FOLDER_DOS}\\sqlite-3.45.1.0 ${SQLITE_SOURCE_FOLDER_DOS} && ${CMAKE_COMMAND} -E copy ${ZLIB_SOURCE_FOLDER}/../external_zlib-build/zconf.h ${PYTHON_EXTERNALS_FOLDER}/zlib-1.3.1/zconf.h && @@ -195,6 +198,7 @@ add_dependencies( external_python external_ssl external_zlib + external_sqlite ) if(UNIX) add_dependencies( @@ -202,7 +206,6 @@ if(UNIX) external_bzip2 external_ffi external_lzma - external_sqlite ) endif() diff --git a/build_files/build_environment/cmake/rubberband.cmake b/build_files/build_environment/cmake/rubberband.cmake new file mode 100644 index 00000000000..aff94c40b7d --- /dev/null +++ b/build_files/build_environment/cmake/rubberband.cmake @@ -0,0 +1,69 @@ +# # SPDX-FileCopyrightText: 2025 Blender Authors +# # +# # SPDX-License-Identifier: GPL-2.0-or-later + +if(WIN32) + set(RUBBERBAND_CONFIGURE_ENV ${CONFIGURE_ENV_MSVC}) + set(FFTW_DIR ${LIBDIR}/fftw3/lib/pkgconfig) + file(TO_NATIVE_PATH "${FFTW_DIR}" FFTW_DIR) + set(RUBBERBAND_PKG_ENV PKG_CONFIG_PATH=${FFTW_DIR}) +else() + set(RUBBERBAND_CONFIGURE_ENV ${CONFIGURE_ENV}) + set(RUBBERBAND_PKG_ENV "PKG_CONFIG_PATH=\ +${LIBDIR}/fftw3/lib/pkgconfig:\ +$PKG_CONFIG_PATH" + ) +endif() + +ExternalProject_Add(external_rubberband + URL file://${PACKAGE_DIR}/${RUBBERBAND_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${RUBBERBAND_HASH_TYPE}=${RUBBERBAND_HASH} + PREFIX ${BUILD_DIR}/rubberband + + CONFIGURE_COMMAND ${RUBBERBAND_CONFIGURE_ENV} && + ${CMAKE_COMMAND} -E env ${RUBBERBAND_PKG_ENV} ${MESON} setup + --prefix ${LIBDIR}/rubberband + --libdir lib + ${MESON_BUILD_TYPE} + -Dauto_features=disabled + -Ddefault_library=static + -Dfft=fftw + ${BUILD_DIR}/rubberband/src/external_rubberband-build + ${BUILD_DIR}/rubberband/src/external_rubberband + + BUILD_COMMAND ninja + INSTALL_COMMAND ninja install + INSTALL_DIR ${LIBDIR}/rubberband +) + +add_dependencies( + external_rubberband + external_fftw + # Needed for `MESON`. + external_python_site_packages +) + +if(WIN32) + if(BUILD_MODE STREQUAL Release) + ExternalProject_Add_Step(external_rubberband after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${LIBDIR}/rubberband/include + ${HARVEST_TARGET}/rubberband/include + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/rubberband/lib/rubberband-static.lib + ${HARVEST_TARGET}/rubberband/lib/rubberband-static.lib + DEPENDEES install + ) + else() + ExternalProject_Add_Step(external_rubberband after_install + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBDIR}/rubberband/lib/rubberband-static.lib + ${HARVEST_TARGET}/rubberband/lib/rubberband-static_d.lib + DEPENDEES install + ) + endif() +else() + harvest(external_rubberband rubberband/include rubberband/include "*.h") + harvest(external_rubberband rubberband/lib rubberband/lib "*.a") +endif() diff --git a/build_files/build_environment/cmake/sqlite.cmake b/build_files/build_environment/cmake/sqlite.cmake index 57c3f0fb97f..6bfbc34fc99 100644 --- a/build_files/build_environment/cmake/sqlite.cmake +++ b/build_files/build_environment/cmake/sqlite.cmake @@ -5,6 +5,21 @@ set(SQLITE_CONFIGURE_ENV echo .) set(SQLITE_CONFIGURATION_ARGS) +if(WIN32) + # Python will build this with its preferred build options. + # We only need to unpack sqlite. + ExternalProject_Add(external_sqlite + URL file://${PACKAGE_DIR}/${SQLITE_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${SQLITE_HASH_TYPE}=${SQLITE_HASH} + PREFIX ${BUILD_DIR}/sqlite + CONFIGURE_COMMAND echo "." + BUILD_COMMAND echo "." + INSTALL_COMMAND echo "." + INSTALL_DIR ${LIBDIR}/sqlite + ) +endif() + if(UNIX) if(NOT APPLE) set(SQLITE_LDFLAGS -Wl,--as-needed) @@ -21,7 +36,6 @@ if(UNIX) -DSQLITE_ENABLE_DBSTAT_VTAB \ -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 \ -DSQLITE_ENABLE_LOAD_EXTENSION \ --DSQLITE_ENABLE_JSON1 \ -DSQLITE_LIKE_DOESNT_MATCH_BLOBS \ -DSQLITE_THREADSAFE=1 \ -DSQLITE_ENABLE_FTS3_TOKENIZER=1 \ @@ -41,36 +55,28 @@ if(UNIX) ${SQLITE_CONFIGURATION_ARGS} --enable-threadsafe --enable-load-extension - --enable-json1 --enable-fts4 --enable-fts5 - # While building `tcl` is harmless, it causes problems when the install step - # tries to copy the files into the system path. - # Since this isn't required by Python or Blender this can be disabled. - # Note that Debian (for example), splits this off into a separate package, - # so it's safe to turn off. - --disable-tcl - --enable-shared=no + --disable-shared + ) + ExternalProject_Add(external_sqlite + URL file://${PACKAGE_DIR}/${SQLITE_FILE} + DOWNLOAD_DIR ${DOWNLOAD_DIR} + URL_HASH ${SQLITE_HASH_TYPE}=${SQLITE_HASH} + PREFIX ${BUILD_DIR}/sqlite + + 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} + + INSTALL_COMMAND ${CONFIGURE_ENV} && + cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && + make install + + INSTALL_DIR ${LIBDIR}/sqlite ) endif() - -ExternalProject_Add(external_sqlite - URL file://${PACKAGE_DIR}/${SQLITE_FILE} - DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH ${SQLITE_HASH_TYPE}=${SQLITE_HASH} - PREFIX ${BUILD_DIR}/sqlite - - 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} - - INSTALL_COMMAND ${CONFIGURE_ENV} && - cd ${BUILD_DIR}/sqlite/src/external_sqlite/ && - make install - - INSTALL_DIR ${LIBDIR}/sqlite -) diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake index 0d28f4f7fa5..df471c9444a 100644 --- a/build_files/build_environment/cmake/usd.cmake +++ b/build_files/build_environment/cmake/usd.cmake @@ -24,6 +24,7 @@ if(WIN32) if(BUILD_MODE STREQUAL Debug) list(APPEND USD_PLATFORM_FLAGS -DPXR_USE_DEBUG_PYTHON=ON) list(APPEND USD_PLATFORM_FLAGS -DOPENVDB_LIBRARY=${LIBDIR}/openvdb/lib/openvdb_d.lib) + list(APPEND USD_PLATFORM_FLAGS -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT='') endif() elseif(UNIX) set(USD_PLATFORM_FLAGS @@ -45,11 +46,6 @@ elseif(UNIX) list(APPEND USD_PLATFORM_FLAGS -DCMAKE_SHARED_LINKER_FLAGS=${USD_SHARED_LINKER_FLAGS} ) - # Metal only patch for MaterialX 1.39 issues. - set(USD_EXTRA_PATCHES - ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/usd/src/external_usd < - ${PATCH_DIR}/usd_3519.diff &&) endif() endif() @@ -103,6 +99,7 @@ set(USD_EXTRA_ARGS -DPXR_BUILD_USD_TOOLS=OFF -DCMAKE_DEBUG_POSTFIX=_d -DBUILD_SHARED_LIBS=ON + -DTBB_DIR=${LIBDIR}/tbb/lib/cmake/TBB -DTBB_INCLUDE_DIRS=${LIBDIR}/tbb/include -DTBB_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}${TBB_LIBRARY}${SHAREDLIBEXT} -DTBB_LIBRARIES_DEBUG=${LIBDIR}/tbb/lib/${LIBPREFIX}${TBB_LIBRARY}${SHAREDLIBEXT} @@ -134,7 +131,6 @@ ExternalProject_Add(external_usd LIST_SEPARATOR ^^ PATCH_COMMAND - ${USD_EXTRA_PATCHES} ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < ${PATCH_DIR}/usd.diff && @@ -144,24 +140,18 @@ ExternalProject_Add(external_usd ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < ${PATCH_DIR}/usd_ctor.diff && - ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/usd/src/external_usd < - ${PATCH_DIR}/usd_3243.diff && - ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/usd/src/external_usd < - ${PATCH_DIR}/usd_forward_compat.diff && ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < ${PATCH_DIR}/usd_noboost.diff && ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < ${PATCH_DIR}/usd_no_vulkan_sdk.diff && + # The patch just makes empty, but we need it to be removed to avoid + # including an empty file instead of the actual vma header. + ${CMAKE_COMMAND} -E remove ${BUILD_DIR}/usd/src/external_usd/pxr/imaging/hgiVulkan/vk_mem_alloc.h && ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/usd/src/external_usd < - ${PATCH_DIR}/usd_storm_vulkan.diff && - ${PATCH_CMD} -p 1 -d - ${BUILD_DIR}/usd/src/external_usd < - ${PATCH_DIR}/usd_3666_vulkan_amd.diff + ${PATCH_DIR}/usd_storm_vulkan.diff CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/usd -Wno-dev diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake index 3fa18afdaf4..4cad1ebb809 100644 --- a/build_files/build_environment/cmake/versions.cmake +++ b/build_files/build_environment/cmake/versions.cmake @@ -10,7 +10,7 @@ set(RELEASE_GCC_VERSION 11.2) set(RELEASE_CUDA_VERSION 12.8) -set(RELEASE_HIP_VERSION 6.3) +set(RELEASE_HIP_VERSION 6.4) # Libraries # @@ -61,10 +61,10 @@ Copyright (c) 2015, Archontis Politis. Copyright (c) 2019, Christopher Robinson. ]=]) -set(PNG_VERSION 1.6.43) +set(PNG_VERSION 1.6.50) set(PNG_NAME libpng) set(PNG_URI http://prdownloads.sourceforge.net/libpng/libpng-${PNG_VERSION}.tar.xz) -set(PNG_HASH 6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c) +set(PNG_HASH 4df396518620a7aa3651443e87d1b2862e4e88cad135a8b93423e01706232307) set(PNG_HASH_TYPE SHA256) set(PNG_FILE libpng-${PNG_VERSION}.tar.xz) set(PNG_CPE "cpe:2.3:a:libpng:libpng:${PNG_VERSION}:*:*:*:*:*:*:*") @@ -127,9 +127,9 @@ set(DEFLATE_HOMEPAGE https://github.com/ebiggers/libdeflate) set(DEFLATE_LICENSE SPDX:MIT) set(DEFLATE_COPYRIGHT "Copyright 2016 Eric Biggers") -set(OPENEXR_VERSION 3.3.2) +set(OPENEXR_VERSION 3.3.5) set(OPENEXR_URI https://github.com/AcademySoftwareFoundation/openexr/archive/v${OPENEXR_VERSION}.tar.gz) -set(OPENEXR_HASH 0ca7b46575537ff495d9914166aafa65) +set(OPENEXR_HASH fd5404d49331e24c26f4a263b13a35d4) set(OPENEXR_HASH_TYPE MD5) set(OPENEXR_FILE openexr-${OPENEXR_VERSION}.tar.gz) set(OPENEXR_CPE "cpe:2.3:a:openexr:openexr:${OPENEXR_VERSION}:*:*:*:*:*:*:*") @@ -163,9 +163,9 @@ else() set(OPENEXR_VERSION_POSTFIX) endif() -set(FREETYPE_VERSION 2.13.0) +set(FREETYPE_VERSION 2.13.3) set(FREETYPE_URI http://prdownloads.sourceforge.net/freetype/freetype-${FREETYPE_VERSION}.tar.gz) -set(FREETYPE_HASH 98bc3cf234fe88ef3cf24569251fe0a4) +set(FREETYPE_HASH ac1f0b517f62bd40d50bc995faa5741d) set(FREETYPE_HASH_TYPE MD5) set(FREETYPE_FILE freetype-${FREETYPE_VERSION}.tar.gz) set(FREETYPE_CPE "cpe:2.3:a:freetype:freetype:${FREETYPE_VERSION}:*:*:*:*:*:*:*") @@ -232,9 +232,9 @@ set(SDL_HOMEPAGE https://www.libsdl.org) set(SDL_LICENSE SPDX:Zlib) set(SDL_COPYRIGHT "Copyright (C) 1997-2020 Sam Lantinga ") -set(OPENCOLORIO_VERSION 2.4.1) +set(OPENCOLORIO_VERSION 2.4.2) set(OPENCOLORIO_URI https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz) -set(OPENCOLORIO_HASH a11368ef8f001837f29b7dd18dbd2290) +set(OPENCOLORIO_HASH db64ac0b4a67fd8e6d6d8111dccade29) set(OPENCOLORIO_HASH_TYPE MD5) set(OPENCOLORIO_FILE OpenColorIO-${OPENCOLORIO_VERSION}.tar.gz) set(OPENCOLORIO_NAME OpenColorIO) @@ -255,10 +255,10 @@ Copyright (C) Nathan Moinvaziri https://github.com/zlib-ng/minizip-ng. Copyright (C) 1998-2010 Gilles Vollant https://www.winimage.com/zLibDll/minizip.html. ]=]) -set(LLVM_VERSION 17.0.6) +set(LLVM_VERSION 20.1.8) set(LLVM_NAME LLVM) set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.src.tar.xz) -set(LLVM_HASH 62a09d65240a5133f001ace48269dbfc) +set(LLVM_HASH 915e251a657450a2ba8e4c106e4f9555) set(LLVM_HASH_TYPE MD5) set(LLVM_FILE llvm-project-${LLVM_VERSION}.src.tar.xz) set(LLVM_CPE "cpe:2.3:a:llvm:compiler:${LLVM_VERSION}:*:*:*:*:*:*:*") @@ -266,10 +266,10 @@ set(LLVM_HOMEPAGE https://github.com/llvm/llvm-project/) set(LLVM_LICENSE SPDX:Apache-2.0 WITH LLVM-exception) set(LLVM_COPYRIGHT "Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. All rights reserved.") -set(OPENIMAGEIO_VERSION v3.0.6.1) +set(OPENIMAGEIO_VERSION v3.0.9.1) set(OPENIMAGEIO_NAME OpenImageIO) set(OPENIMAGEIO_URI https://github.com/AcademySoftwareFoundation/OpenImageIO/archive/refs/tags/${OPENIMAGEIO_VERSION}.tar.gz) -set(OPENIMAGEIO_HASH 935f926a7457ffd49fa4774449e99325) +set(OPENIMAGEIO_HASH 5a3490d405615f48d7340ba4af41380d) set(OPENIMAGEIO_HASH_TYPE MD5) set(OPENIMAGEIO_FILE OpenImageIO-${OPENIMAGEIO_VERSION}.tar.gz) set(OPENIMAGEIO_HOMEPAGE https://github.com/AcademySoftwareFoundation/OpenImageIO) @@ -313,40 +313,48 @@ Copyright © 1988-1997 Sam Leffler. Copyright © 1991-1997 Silicon Graphics, Inc. ]=]) -# Latest 1.14 (beta) main, that is compatible with OIIO 3.0 -set(OSL_VERSION 1.14.3.0-beta) -set(OSL_COMMIT "b795e3e92ae1f2c5da5024b61295b0eb41486a65") +set(OSL_VERSION 1.14.7.0) set(OSL_NAME "Open Shading Language") -set(OSL_URI https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/archive/${OSL_COMMIT}.tar.gz) -set(OSL_HASH dbfe1a34249959f2d66296bf04317c1c) -set(OSL_HASH_TYPE MD5) +set(OSL_URI https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/releases/download/v${OSL_VERSION}/OSL-${OSL_VERSION}.tar.gz) +set(OSL_HASH 45b2b9de1bae6854fb8af0d332c3266898871d95741bdb6abe8178cd6d01aef2) +set(OSL_HASH_TYPE SHA256) set(OSL_FILE OpenShadingLanguage-${OSL_VERSION}.tar.gz) set(OSL_HOMEPAGE https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/) set(OSL_LICENSE SPDX:BSD-3-Clause) set(OSL_COPYRIGHT "Copyright Contributors to the Open Shading Language project.") -set(MANIFOLD_VERSION v3.1.0) +set(MANIFOLD_VERSION v3.2.1) set(MANIFOLD_NAME "Manifold") set(MANIFOLD_URI https://github.com/elalish/manifold/archive/refs/tags/${MANIFOLD_VERSION}.tar.gz) -set(MANIFOLD_HASH ddbc6b342d57b3a1a6c53cd60c63c867) +set(MANIFOLD_HASH 5618cc9685b15a0b7ba4783589c1ae7c) set(MANIFOLD_HASH_TYPE MD5) set(MANIFOLD_FILE Manifold-${MANIFOLD_VERSION}.tar.gz) set(MANIFOLD_HOMEPAGE https://github.com/elalish/manifold) set(MANIFOLD_LICENSE SPDX:Apache-2.0) set(MANIFOLD_COPYRIGHT "Copyright 2021 The Manifold Authors.") +set(RUBBERBAND_VERSION 4.0.0) +set(RUBBERBAND_NAME "Rubber Band Library") +set(RUBBERBAND_URI https://breakfastquay.com/files/releases/rubberband-${RUBBERBAND_VERSION}.tar.bz2) +set(RUBBERBAND_HASH 93bf3159eb91048e76eba35cf1bf766f) +set(RUBBERBAND_HASH_TYPE MD5) +set(RUBBERBAND_FILE rubberband-${RUBBERBAND_VERSION}.tar.bz2) +set(RUBBERBAND_HOMEPAGE https://breakfastquay.com/rubberband/) +set(RUBBERBAND_LICENSE SPDX:GPL-2.0-or-later) +set(RUBBERBAND_COPYRIGHT "Copyright (c) 2025 Particular Programs Ltd") + # NOTE: When updating the python version, it's required to check the versions of # it wants to use in PCbuild/get_externals.bat for the following dependencies: -# BZIP2, FFI, SQLITE and change the versions in this file as well. For compliance +# BZIP2, FFI and change the versions in this file as well. For compliance # reasons there can be no exceptions to this. # Additionally, keep the PYTHON_PIP_VERSION in sync with the pip version bundled # into Python. -set(PYTHON_VERSION 3.11.11) +set(PYTHON_VERSION 3.11.13) set(PYTHON_SHORT_VERSION 3.11) set(PYTHON_SHORT_VERSION_NO_DOTS 311) set(PYTHON_URI https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz) -set(PYTHON_HASH 3e497037b170fe4be5f462c4964596f2) +set(PYTHON_HASH ec39a8018b9eedf6f0edeb44533bd279) set(PYTHON_HASH_TYPE MD5) set(PYTHON_FILE Python-${PYTHON_VERSION}.tar.xz) set(PYTHON_CPE "cpe:2.3:a:python:python:${PYTHON_VERSION}:-:*:*:*:*:*:*") @@ -513,9 +521,9 @@ Copyright (C) 2001-2009 Josh Coalson. Copyright (C) 2011-2016 Xiph.Org Foundation. ]=]) -set(VPX_VERSION 1.14.0) +set(VPX_VERSION 1.15.2) set(VPX_URI https://github.com/webmproject/libvpx/archive/v${VPX_VERSION}/libvpx-v${VPX_VERSION}.tar.gz) -set(VPX_HASH 5f21d2db27071c8a46f1725928a10227ae45c5cd1cad3727e4aafbe476e321fa) +set(VPX_HASH 26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa) set(VPX_HASH_TYPE SHA256) set(VPX_FILE libvpx-v${VPX_VERSION}.tar.gz) set(VPX_CPE "cpe:2.3:a:webmproject:libvpx:${VPX_VERSION}:*:*:*:*:*:*:*") @@ -556,10 +564,10 @@ set(X265_HOMEPAGE https://www.videolan.org/developers/x265.html) set(X265_LICENSE SPDX:GPL-2.0-or-later) set(X265_COPYRIGHT "Copyright (C) 2013-2020 MulticoreWare, Inc") -set(OPENJPEG_VERSION 2.5.0) +set(OPENJPEG_VERSION 2.5.3) set(OPENJPEG_SHORT_VERSION 2.5) set(OPENJPEG_URI https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz) -set(OPENJPEG_HASH 0333806d6adecc6f7a91243b2b839ff4d2053823634d4f6ed7a59bc87409122a) +set(OPENJPEG_HASH 368fe0468228e767433c9ebdea82ad9d801a3ad1e4234421f352c8b06e7aa707) set(OPENJPEG_HASH_TYPE SHA256) set(OPENJPEG_NAME OpenJPEG) set(OPENJPEG_HOMEPAGE https://github.com/uclouvain/openjpeg) @@ -657,9 +665,9 @@ Copyright (C) 2009-2013 Facebook, Inc. All rights reserved. Copyright (C) 2013 Jason Evans . ]=]) -set(XML2_VERSION 2.13.5) -set(XML2_URI https://download.gnome.org/sources/libxml2/2.13/libxml2-${XML2_VERSION}.tar.xz) -set(XML2_HASH 0b919be8edff97ade9c946e1a83bdecd) +set(XML2_VERSION 2.14.5) +set(XML2_URI https://download.gnome.org/sources/libxml2/2.14/libxml2-${XML2_VERSION}.tar.xz) +set(XML2_HASH 59aac4e5d1d350ba2c4bddf1f7bc5098) set(XML2_HASH_TYPE MD5) set(XML2_FILE libxml2-${XML2_VERSION}.tar.xz) set(XML2_CPE "cpe:2.3:a:xmlsoft:libxml2:${XML2_VERSION}:*:*:*:*:*:*:*") @@ -768,9 +776,9 @@ set(LZMA_LICENSE SPDX:GPL-3.0-or-later) set(LZMA_COPYRIGHT "Igor Pavlov, Ville Koskinen, Lasse Collin") # NOTE: Python's build has been modified to use our ssl version. -set(SSL_VERSION 3.1.5) +set(SSL_VERSION 3.5.2) set(SSL_URI https://www.openssl.org/source/openssl-${SSL_VERSION}.tar.gz) -set(SSL_HASH 6ae015467dabf0469b139ada93319327be24b98251ffaeceda0221848dc09262) +set(SSL_HASH c53a47e5e441c930c3928cf7bf6fb00e5d129b630e0aa873b08258656e7345ec) set(SSL_HASH_TYPE SHA256) set(SSL_FILE openssl-${SSL_VERSION}.tar.gz) set(SSL_CPE "cpe:2.3:a:openssl:openssl:${SSL_VERSION}:*:*:*:*:*:*:*") @@ -782,13 +790,10 @@ Copyright (c) 1998-2024 The OpenSSL Project Authors. Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson; All rights reserved. ]=]) -# 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(SQLITE_VERSION 3.45.1) -set(SQLLITE_LONG_VERSION 3450100) -set(SQLITE_URI https://www.sqlite.org/2024/sqlite-autoconf-${SQLLITE_LONG_VERSION}.tar.gz) -set(SQLITE_HASH 650305e234add12fc1e6bef0b365d86a087b3d38) +set(SQLITE_VERSION 3.50.4) +set(SQLLITE_LONG_VERSION 3500400) +set(SQLITE_URI https://www.sqlite.org/2025/sqlite-autoconf-${SQLLITE_LONG_VERSION}.tar.gz) +set(SQLITE_HASH 145048005c777796dd8494aa1cfed304e8c34283) set(SQLITE_HASH_TYPE SHA1) set(SQLITE_FILE sqlite-autoconf-${SQLLITE_LONG_VERSION}.tar.gz) set(SQLITE_CPE "cpe:2.3:a:sqlite:sqlite:${SQLITE_VERSION}:*:*:*:*:*:*:*") @@ -804,10 +809,10 @@ set(EMBREE_HOMEPAGE https://github.com/RenderKit/embree) set(EMBREE_LICENSE SPDX:Apache-2.0) set(EMBREE_COPYRIGHT "Copyright 2009-2024 Intel Corporation") -set(USD_VERSION 25.02) +set(USD_VERSION 25.08) set(USD_NAME USD) set(USD_URI https://github.com/PixarAnimationStudios/OpenUSD/archive/v${USD_VERSION}.tar.gz) -set(USD_HASH 76ee61270e67002ddb2fc76dda6a498d) +set(USD_HASH e107ce8d79471ddd8b636bb982c24a46) set(USD_HASH_TYPE MD5) set(USD_FILE usd-v${USD_VERSION}.tar.gz) set(USD_HOMEPAGE https://openusd.org/) @@ -820,10 +825,10 @@ This product includes software developed at: Pixar (http://www.pixar.com/). ]=]) -set(MATERIALX_VERSION 1.39.2) +set(MATERIALX_VERSION 1.39.3) set(MATERIALX_NAME MaterialX) set(MATERIALX_URI https://github.com/AcademySoftwareFoundation/MaterialX/archive/refs/tags/v${MATERIALX_VERSION}.tar.gz) -set(MATERIALX_HASH e3e413755f525aec96c60af631753044) +set(MATERIALX_HASH 43fdf32d52d6e04e40761e3c08f66476) set(MATERIALX_HASH_TYPE MD5) set(MATERIALX_FILE materialx-v${MATERIALX_VERSION}.tar.gz) set(MATERIALX_HOMEPAGE https://github.com/AcademySoftwareFoundation/MaterialX) @@ -901,10 +906,10 @@ Copyright © 2014-2015 Collabora, Ltd. Copyright © 2015 Red Hat Inc. ]=]) -set(WAYLAND_VERSION 1.23.1) +set(WAYLAND_VERSION 1.24.0) set(WAYLAND_FILE wayland-${WAYLAND_VERSION}.tar.xz) set(WAYLAND_URI https://gitlab.freedesktop.org/wayland/wayland/-/releases/${WAYLAND_VERSION}/downloads/wayland-${WAYLAND_VERSION}.tar.xz) -set(WAYLAND_HASH 5d27c7d3658fa90f40111b47cdb4a8fb) +set(WAYLAND_HASH fda0b2a73ea2716f61d75767e02008e1) set(WAYLAND_HASH_TYPE MD5) set(WAYLAND_HOMEPAGE https://gitlab.freedesktop.org/wayland/wayland) set(WAYLAND_LICENSE SPDX:MIT) @@ -962,9 +967,9 @@ Copyright © 2011-2012 Collabora, Ltd. Copyright © 2010 Red Hat . ]=]) -set(ISPC_VERSION v1.21.1) +set(ISPC_VERSION v1.28.0) set(ISPC_URI https://github.com/ispc/ispc/archive/${ISPC_VERSION}.tar.gz) -set(ISPC_HASH edd16b016aabc07819d14fd86a1fb5d0) +set(ISPC_HASH 5ada5ee20badc849647213fda08e651c) set(ISPC_HASH_TYPE MD5) set(ISPC_FILE ispc-${ISPC_VERSION}.tar.gz) set(ISPC_DEPSBUILDTIMEONLY "Blender ships the produced artifact, but doesn't ship/link with any binary") @@ -991,9 +996,9 @@ set(POTRACE_LICENSE SPDX:GPL-2.0-or-later) set(POTRACE_COPYRIGHT "Copyright © 2001-2019 Peter Selinger.") -set(HARU_VERSION 2_3_0) -set(HARU_URI https://github.com/libharu/libharu/archive/RELEASE_${HARU_VERSION}.tar.gz) -set(HARU_HASH 4f916aa49c3069b3a10850013c507460) +set(HARU_VERSION 2.4.5) +set(HARU_URI https://github.com/libharu/libharu/archive/refs/tags/v${HARU_VERSION}.tar.gz) +set(HARU_HASH d5633fb741079a7675bb3e9e8e8a58ce) set(HARU_HASH_TYPE MD5) set(HARU_FILE libharu-${HARU_VERSION}.tar.gz) set(HARU_HOMEPAGE http://libharu.org/) @@ -1045,19 +1050,20 @@ set(OPENPGL_LICENSE SPDX:Apache-2.0) set(OPENPGL_COPYRIGHT "Copyright 2020 Intel Corporation.") # Default version used by DPCPP: unified-runtime/cmake/FetchLevelZero.cmake -set(LEVEL_ZERO_VERSION 1.19.2) +set(LEVEL_ZERO_VERSION 1.21.9) set(LEVEL_ZERO_NAME "oneAPI Level Zero") set(LEVEL_ZERO_URI https://codeload.github.com/oneapi-src/level-zero/tar.gz/refs/tags/v${LEVEL_ZERO_VERSION}) -set(LEVEL_ZERO_HASH b0bea0a09d1a68f68ecf8694e58a60e199fa5785f91c2fd59f026133bc1c4f28) +set(LEVEL_ZERO_HASH ba543a01adbcbd241518c3eee80b75414094d1fd3efcde9ff2693196cea4d057) set(LEVEL_ZERO_HASH_TYPE SHA256) set(LEVEL_ZERO_FILE level-zero-${LEVEL_ZERO_VERSION}.tar.gz) set(LEVEL_ZERO_HOMEPAGE https://github.com/oneapi-src/level-zero) set(LEVEL_ZERO_LICENSE SPDX:MIT) set(LEVEL_ZERO_COPYRIGHT "Copyright (C) 2019-2024 Intel Corporation") -set(DPCPP_VERSION v6.1.0) +# Currently latest commit from sycl-rel-6_2 release branch +set(DPCPP_VERSION 05e047c0932d5043ddff5e4058a3afca8e0943aa) set(DPCPP_URI https://github.com/intel/llvm/archive/${DPCPP_VERSION}.tar.gz) -set(DPCPP_HASH a698b953527edeaca0495134cd2655ecaf4826128f85177c20a8749b18df49cd) +set(DPCPP_HASH 94a51f89b212099a3d4c3530f2c2b6595b3b2a9ab40982cfab5055f92610b142) set(DPCPP_HASH_TYPE SHA256) set(DPCPP_FILE DPCPP-${DPCPP_VERSION}.tar.gz) set(DPCPP_NAME DPC++) @@ -1074,9 +1080,9 @@ set(DPCPP_COPYRIGHT "Copyright (C) 2021-2025 Intel Corporation") # will take care of building them, unpack is being done in dpcpp_deps.cmake # Source llvm/lib/SYCLLowerIR/CMakeLists.txt -set(VCINTRINSICS_VERSION 2d78d5805670d83b3cc6dc488acbd7f0251340c1) +set(VCINTRINSICS_VERSION 4e51b2467104a257c22788e343dafbdde72e28bb) set(VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/${VCINTRINSICS_VERSION}.tar.gz) -set(VCINTRINSICS_HASH 4acac1df6f0ddbfc32ab560f369e6de307a63560cd4843a5c2b02164a8a3caf2) +set(VCINTRINSICS_HASH c90fabfbcc8b3dc59ea0ed56ffd99075dca4d0cdf176e7ba41417c4f2011f117) set(VCINTRINSICS_HASH_TYPE SHA256) set(VCINTRINSICS_FILE vc-intrinsics-${VCINTRINSICS_VERSION}.tar.gz) set(VCINTRINSICS_HOMEPAGE https://github.com/intel/vc-intrinsics) @@ -1104,21 +1110,21 @@ set(ICDLOADER_HOMEPAGE https://github.com/KhronosGroup/OpenCL-ICD-Loader) set(ICDLOADER_LICENSE SPDX:Apache-2.0) set(ICDLOADER_COPYRIGHT " Copyright (c) 2020 The Khronos Group Inc.") -# Source sycl/cmake/modules/AddBoostMp11Headers.cmake -# Using external MP11 here so we don't have to pull in all of Boost. -set(MP11_VERSION 863d8b8d2b20f2acd0b5870f23e553df9ce90e6c) -set(MP11_URI https://github.com/boostorg/mp11/archive/${MP11_VERSION}.tar.gz) -set(MP11_HASH 525692267abb8086bb9cc2fe81fb96d73ac645dfa6825cb5114686aafe244e9f) -set(MP11_HASH_TYPE SHA256) -set(MP11_FILE mp11-${MP11_VERSION}.tar.gz) -set(MP11_HOMEPAGE https://github.com/boostorg/mp11) -set(MP11_LICENSE SPDX:BSL-1.0) +# Source sycl/cmake/modules/FetchEmhash.cmake +set(EMHASH_VERSION 3ba9abdfdc2e0430fcc2fd8993cad31945b6a02b) +set(EMHASH_URI https://github.com/ktprime/emhash/archive/${EMHASH_VERSION}.tar.gz) +set(EMHASH_HASH f0feaa687b5d288317526a6b0c331b51eba2e2b13528d79e015d75abef5d4dfa) +set(EMHASH_HASH_TYPE SHA256) +set(EMHASH_FILE emhash-${EMHASH_VERSION}.tar.gz) +set(EMHASH_HOMEPAGE https://github.com/ktprime/emhash) +set(EMHASH_LICENSE SPDX:MIT) +set(EMHASH_COPYRIGHT "Copyright (c) 2019 hyb") # Source llvm-spirv/CMakeLists.txt (repo) # Source llvm-spirv/spirv-headers-tag.conf (hash) -set(DPCPP_SPIRV_HEADERS_VERSION efb6b4099ddb8fa60f62956dee592c4b94ec6a49) +set(DPCPP_SPIRV_HEADERS_VERSION 2b2e05e088841c63c0b6fd4c9fb380d8688738d3) set(DPCPP_SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/${DPCPP_SPIRV_HEADERS_VERSION}.tar.gz) -set(DPCPP_SPIRV_HEADERS_HASH cb1f5b929f95169493f924f5aacf50ff9ce91e9470c28c5830a5ff4fca47062c) +set(DPCPP_SPIRV_HEADERS_HASH 2e226ee953472e2e39724bf315433dce8cf119a397c451742dfda25bab7690af) set(DPCPP_SPIRV_HEADERS_HASH_TYPE SHA256) set(DPCPP_SPIRV_HEADERS_FILE DPCPP-SPIR-V-Headers-${DPCPP_SPIRV_HEADERS_VERSION}.tar.gz) set(DPCPP_SPIRV_HEADERS_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Headers) @@ -1127,25 +1133,35 @@ set(DPCPP_SPIRV_HEADERS_COPYRIGHT "Copyright (c) 2015-2024 The Khronos Group Inc # Source sycl/cmake/modules/FetchUnifiedRuntime.cmake (repo) # Source sycl/cmake/modules/UnifiedRuntimeTag.cmake (commit/version) -set(UNIFIED_RUNTIME_VERSION v0.11.8) +set(UNIFIED_RUNTIME_VERSION d03f19a88e42cb98be9604ff24b61190d1e48727) set(UNIFIED_RUNTIME_URI https://github.com/oneapi-src/unified-runtime/archive/${UNIFIED_RUNTIME_VERSION}.tar.gz) -set(UNIFIED_RUNTIME_HASH bb2d5d753ba23f8984431696b00b838cf6ff9eb5b1610bf262357b623bd6a4b6) +set(UNIFIED_RUNTIME_HASH 761f57339bbaa104749426f7157f5f45fbc5ef3c9fce5b56bf495f34602c26e1) set(UNIFIED_RUNTIME_HASH_TYPE SHA256) set(UNIFIED_RUNTIME_FILE unified-runtime-${UNIFIED_RUNTIME_VERSION}.tar.gz) set(UNIFIED_RUNTIME_HOMEPAGE https://github.com/oneapi-src/unified-runtime) set(UNIFIED_RUNTIME_LICENSE SPDX:Apache-2.0 WITH LLVM-exception) -set(UNIFIED_RUNTIME_COPYRIGHT "Copyright (C) 2019-2024 Intel Corporation") +set(UNIFIED_RUNTIME_COPYRIGHT "Copyright (C) 2019-2025 Intel Corporation") # Source unified-runtime/source/common/CMakeList.txt -set(UNIFIED_MEMORY_FRAMEWORK_VERSION v0.10.0) +set(UNIFIED_MEMORY_FRAMEWORK_VERSION v0.11.0) set(UNIFIED_MEMORY_FRAMEWORK_URI https://github.com/oneapi-src/unified-memory-framework/archive/${UNIFIED_MEMORY_FRAMEWORK_VERSION}.tar.gz) -set(UNIFIED_MEMORY_FRAMEWORK_HASH fd8b1094fe471d08aebb84d3756bf410810a03e23e1c887b078c6ea73ac21258) +set(UNIFIED_MEMORY_FRAMEWORK_HASH d7a6cafe978d89628003e3001a1adef57cd733c9d9a6dfef0375c2123ec2e29c) set(UNIFIED_MEMORY_FRAMEWORK_HASH_TYPE SHA256) set(UNIFIED_MEMORY_FRAMEWORK_FILE unified-memory-framework-${UNIFIED_MEMORY_FRAMEWORK_VERSION}.tar.gz) set(UNIFIED_MEMORY_FRAMEWORK_HOMEPAGE https://github.com/oneapi-src/unified-memory-framework) set(UNIFIED_MEMORY_FRAMEWORK_LICENSE SPDX:Apache-2.0 WITH LLVM-exception) set(UNIFIED_MEMORY_FRAMEWORK_COPYRIGHT "Copyright (C) 2023-2024 Intel Corporation") +# Source xptifw/src/CMakeList.txt +set(PARALLEL_HASHMAP_VERSION 8a889d3699b3c09ade435641fb034427f3fd12b6) +set(PARALLEL_HASHMAP_URI https://github.com/greg7mdp/parallel-hashmap/archive/${PARALLEL_HASHMAP_VERSION}.tar.gz) +set(PARALLEL_HASHMAP_HASH da853a4a2cee32b1563391a3661cff3cf48af5e76e320c004d5520835eb9e5f6) +set(PARALLEL_HASHMAP_HASH_TYPE SHA256) +set(PARALLEL_HASHMAP_FILE parallel-hashmap-${PARALLEL_HASHMAP_VERSION}.tar.gz) +set(PARALLEL_HASHMAP_HOMEPAGE https://github.com/greg7mdp/parallel-hashmap) +set(PARALLEL_HASHMAP_LICENSE SPDX:Apache-2.0) +set(PARALLEL_HASHMAP_COPYRIGHT "Copyright (c) 2019, Gregory Popovitch - greg7mdp@gmail.com") + ###################### ### DPCPP DEPS END ### ###################### @@ -1157,9 +1173,9 @@ set(UNIFIED_MEMORY_FRAMEWORK_COPYRIGHT "Copyright (C) 2023-2024 Intel Corporatio # compiler, the versions used are taken from the following location # https://github.com/intel/intel-graphics-compiler/releases -set(IGC_VERSION 2.1.14) +set(IGC_VERSION 2.16.0) set(IGC_URI https://github.com/intel/intel-graphics-compiler/archive/refs/tags/v${IGC_VERSION}.tar.gz) -set(IGC_HASH ebc39f8238dec2983c227d9db204db333b439ba5cd100e0a819a0208ac8066ca) +set(IGC_HASH e8b74139d28e3c3be6acde94ac9e106af913dcaa495e2c687cdcb520f0a26538) set(IGC_HASH_TYPE SHA256) set(IGC_FILE intel-graphics-compiler-${IGC_VERSION}.tar.gz) set(IGC_NAME IGC) @@ -1167,9 +1183,9 @@ set(IGC_HOMEPAGE https://github.com/intel/intel-graphics-compiler) set(IGC_LICENSE SPDX:MIT) set(IGC_COPYRIGHT "Copyright (C) 2019-2024 Intel Corporation") -set(IGC_LLVM_VERSION llvmorg-14.0.5) +set(IGC_LLVM_VERSION llvmorg-15.0.7) set(IGC_LLVM_URI https://github.com/llvm/llvm-project/archive/refs/tags/${IGC_LLVM_VERSION}.tar.gz) -set(IGC_LLVM_HASH a4a57f029cb81f04618e05853f05fc2d21b64353c760977d8e7799bf7218a23a) +set(IGC_LLVM_HASH 42a0088f148edcf6c770dfc780a7273014a9a89b66f357c761b4ca7c8dfa10ba) set(IGC_LLVM_HASH_TYPE SHA256) set(IGC_LLVM_FILE ${IGC_LLVM_VERSION}.tar.gz) set(IGC_LLVM_HOMEPAGE https://github.com/llvm/llvm-project/) @@ -1186,18 +1202,18 @@ set(IGC_LLVM_COPYRIGHT "Copyright (c) 2003-2019 University of Illinois at Urbana # # ******* WARNING ******* -set(IGC_OPENCL_CLANG_VERSION v14.0.1) +set(IGC_OPENCL_CLANG_VERSION v15.0.2) set(IGC_OPENCL_CLANG_URI https://github.com/intel/opencl-clang/archive/${IGC_OPENCL_CLANG_VERSION}.tar.gz) -set(IGC_OPENCL_CLANG_HASH 77a023e311f825bbdc242fe9b397bd68bac23a88e68142b4919fa322c6c70392) +set(IGC_OPENCL_CLANG_HASH 82422ca51ab97e140f5bebb5833f5bbb10d87981f3f0f506223195647352ce47) set(IGC_OPENCL_CLANG_HASH_TYPE SHA256) set(IGC_OPENCL_CLANG_FILE opencl-clang-${IGC_OPENCL_CLANG_VERSION}.tar.gz) set(IGC_OPENCL_CLANG_HOMEPAGE https://github.com/intel/opencl-clang/) set(IGC_OPENCL_CLANG_LICENSE SPDX:Apache-2.0 WITH LLVM-exception) set(IGC_OPENCL_CLANG_COPYRIGHT "Copyright (c) Intel Corporation (2009-2017).") -set(IGC_VCINTRINSICS_VERSION 0.20.1) +set(IGC_VCINTRINSICS_VERSION 0.23.1) set(IGC_VCINTRINSICS_URI https://github.com/intel/vc-intrinsics/archive/refs/tags/v${IGC_VCINTRINSICS_VERSION}.tar.gz) -set(IGC_VCINTRINSICS_HASH 01a68a3c8299075ad2b094264bef5109d660f1d53faf614f4f95745ad05f4e3e) +set(IGC_VCINTRINSICS_HASH c312420727d6f4ca832c2f02b6a0712f7cd17b45261232e2696ec8eed2962be9) set(IGC_VCINTRINSICS_HASH_TYPE SHA256) set(IGC_VCINTRINSICS_FILE vc-intrinsics-${IGC_VCINTRINSICS_VERSION}.tar.gz) set(IGC_VCINTRINSICS_NAME "VC Intrinsics") @@ -1205,9 +1221,9 @@ set(IGC_VCINTRINSICS_HOMEPAGE https://github.com/intel/vc-intrinsics) set(IGC_VCINTRINSICS_LICENSE SPDX:MIT) set(IGC_VCINTRINSICS_COPYRIGHT "Copyright (C) 2020-2021 Intel Corporation") -set(IGC_SPIRV_HEADERS_VERSION vulkan-sdk-1.3.275.0) +set(IGC_SPIRV_HEADERS_VERSION vulkan-sdk-1.4.313.0) set(IGC_SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/${IGC_SPIRV_HEADERS_VERSION}.tar.gz) -set(IGC_SPIRV_HEADERS_HASH d46b261f1fbc5e85022cb2fada9a6facb5b0c9932b45007a77fe05639a605bd1) +set(IGC_SPIRV_HEADERS_HASH f68be549d74afb61600a1e3a7d1da1e6b7437758c8e77d664909f88f302c5ac1) set(IGC_SPIRV_HEADERS_HASH_TYPE SHA256) set(IGC_SPIRV_HEADERS_FILE SPIR-V-Headers-${IGC_SPIRV_HEADERS_VERSION}.tar.gz) set(IGC_SPIRV_HEADERS_NAME "SPIR-V Headers") @@ -1215,9 +1231,9 @@ set(IGC_SPIRV_HEADERS_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Headers) set(IGC_SPIRV_HEADERS_LICENSE SPDX:MIT-Khronos-old) set(IGC_SPIRV_HEADERS_COPYRIGHT "Copyright (c) 2015-2024 The Khronos Group Inc.") -set(IGC_SPIRV_TOOLS_VERSION v2023.6.rc1) +set(IGC_SPIRV_TOOLS_VERSION v2025.1.rc1) set(IGC_SPIRV_TOOLS_URI https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/${IGC_SPIRV_TOOLS_VERSION}.tar.gz) -set(IGC_SPIRV_TOOLS_HASH 750e4bfcaccd636fb04dd912b668a8a6d29940f8f83b7d9a266170b1023a1a89) +set(IGC_SPIRV_TOOLS_HASH b04b1f00960664319321a58f513fd33eecca19a1460047bbdf3da8fd0c46d2f2) 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_NAME "SPIR-V Tools") @@ -1225,9 +1241,9 @@ set(IGC_SPIRV_TOOLS_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Tools/) set(IGC_SPIRV_TOOLS_LICENSE SPDX:Apache-2.0) set(IGC_SPIRV_TOOLS_COPYRIGHT "Copyright (c) 2015-2016 The Khronos Group Inc.") -set(IGC_SPIRV_TRANSLATOR_VERSION 1cfcf1b5ec2ec9c52fd56dc7cb47dcf12125e8db) +set(IGC_SPIRV_TRANSLATOR_VERSION v15.0.15) set(IGC_SPIRV_TRANSLATOR_URI https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/${IGC_SPIRV_TRANSLATOR_VERSION}.tar.gz) -set(IGC_SPIRV_TRANSLATOR_HASH 5384344b47b67e3811419599c138284de5490304030096f3bc10271915a8ad76) +set(IGC_SPIRV_TRANSLATOR_HASH 52b8b8ddfd133647658dff6caaea6514fd827201984e365ad3552dd1651de321) 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_NAME "LLVM/SPIR-V Bi-Directional Translator") @@ -1248,9 +1264,9 @@ http://llvm.org ### Intel Graphics Compiler DEPS END ### ######################################## -set(GMMLIB_VERSION intel-gmmlib-22.5.3) +set(GMMLIB_VERSION intel-gmmlib-22.8.1) set(GMMLIB_URI https://github.com/intel/gmmlib/archive/refs/tags/${GMMLIB_VERSION}.tar.gz) -set(GMMLIB_HASH a8ccba4a71319b66a901df016998a76745ce9624032b6555517607c5bbb2b4e8) +set(GMMLIB_HASH 9b8eac1891650021ded26b72585e7a2c702a3ba47565c968feabd14ab38d18f7) set(GMMLIB_HASH_TYPE SHA256) set(GMMLIB_NAME "Intel(R) Graphics Memory Management Library") set(GMMLIB_FILE ${GMMLIB_VERSION}.tar.gz) @@ -1262,9 +1278,9 @@ Copyright (c) 2016 Gabi Melman. Copyright 2008, Google Inc. All rights reserved. ]=]) -set(OCLOC_VERSION 24.45.31740.15) +set(OCLOC_VERSION 25.31.34666.3) set(OCLOC_URI https://github.com/intel/compute-runtime/archive/refs/tags/${OCLOC_VERSION}.tar.gz) -set(OCLOC_HASH f0e3b3b038b585753530a8f1b00a8e71b045ee007b8392aaa986ccad92cf5123) +set(OCLOC_HASH c307ec9d0296bcfa0bc4f93a9f0955d9a8ca479a00a731fda5a61eee3ed76489) set(OCLOC_HASH_TYPE SHA256) set(OCLOC_FILE ocloc-${OCLOC_VERSION}.tar.gz) set(OCLOC_HOMEPAGE https://github.com/intel/compute-runtime) @@ -1302,9 +1318,9 @@ set(HARFBUZZ_FILE harfbuzz-${HARFBUZZ_VERSION}.tar.gz) set(HARFBUZZ_DEPSBUILDTIMEONLY "UI module asked for preliminary libs so they could work on integrating it") set(HARFBUZZ_HOMEPAGE https://github.com/harfbuzz/harfbuzz) -set(SHADERC_VERSION v2024.3) +set(SHADERC_VERSION v2025.3) set(SHADERC_URI https://github.com/google/shaderc/archive/${SHADERC_VERSION}.tar.gz) -set(SHADERC_HASH e8d45a77fe8bc954c3ca79aeba8476bd) +set(SHADERC_HASH c110401f6e36ee234008b4cabe991ee0) set(SHADERC_HASH_TYPE MD5) set(SHADERC_FILE shaderc-${SHADERC_VERSION}.tar.gz) set(SHADERC_NAME ShaderC) @@ -1315,9 +1331,9 @@ set(SHADERC_COPYRIGHT "Copyright 2015 The Shaderc Authors. All rights reserved." # The versions of shaderc's dependencies can be found in the root of shaderc's # source in a file called DEPS. -set(SHADERC_SPIRV_TOOLS_VERSION 01c8438ee4ac52c248119b7e03e0b021f853b51a) +set(SHADERC_SPIRV_TOOLS_VERSION 33e02568181e3312f49a3cf33df470bf96ef293a) set(SHADERC_SPIRV_TOOLS_URI https://github.com/KhronosGroup/SPIRV-Tools/archive/${SHADERC_SPIRV_TOOLS_VERSION}.tar.gz) -set(SHADERC_SPIRV_TOOLS_HASH 8924fd30abc3ee17b77cba5a924f3666) +set(SHADERC_SPIRV_TOOLS_HASH 7b83eee717a6c4d7e4f8d7e96a32a298) set(SHADERC_SPIRV_TOOLS_HASH_TYPE MD5) set(SHADERC_SPIRV_TOOLS_FILE SPIRV-Tools-${SHADERC_SPIRV_TOOLS_VERSION}.tar.gz) set(SHADERC_SPIRV_TOOLS_NAME SPIR-V Tools) @@ -1325,18 +1341,18 @@ set(SHADERC_SPIRV_TOOLS_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Tools/) set(SHADERC_SPIRV_TOOLS_LICENSE SPDX:Apache-2.0) set(SHADERC_SPIRV_TOOLS_COPYRIGHT "Copyright (c) 2015-2016 The Khronos Group Inc.") -set(SHADERC_SPIRV_HEADERS_VERSION 2a9b6f951c7d6b04b6c21fe1bf3f475b68b84801) +set(SHADERC_SPIRV_HEADERS_VERSION 2a611a970fdbc41ac2e3e328802aed9985352dca) set(SHADERC_SPIRV_HEADERS_URI https://github.com/KhronosGroup/SPIRV-Headers/archive/${SHADERC_SPIRV_HEADERS_VERSION}.tar.gz) -set(SHADERC_SPIRV_HEADERS_HASH f5fc63cd74f5b3deae18e2a1606b8241) +set(SHADERC_SPIRV_HEADERS_HASH 21c42d628b4262ad9defc021e24e2abe) set(SHADERC_SPIRV_HEADERS_HASH_TYPE MD5) set(SHADERC_SPIRV_HEADERS_FILE SPIRV-Headers-${SHADERC_SPIRV_HEADERS_VERSION}.tar.gz) set(SHADERC_SPIRV_HEADERS_HOMEPAGE https://github.com/KhronosGroup/SPIRV-Headers) set(SHADERC_SPIRV_HEADERS_LICENSE SPDX:MIT-Khronos-old) set(SHADERC_SPIRV_HEADERS_COPYRIGHT "Copyright (c) 2015-2024 The Khronos Group Inc.") -set(SHADERC_GLSLANG_VERSION 467ce01c71e38cf01814c48987a5c0dadd914df4) +set(SHADERC_GLSLANG_VERSION efd24d75bcbc55620e759f6bf42c45a32abac5f8) set(SHADERC_GLSLANG_URI https://github.com/KhronosGroup/glslang/archive/${SHADERC_GLSLANG_VERSION}.tar.gz) -set(SHADERC_GLSLANG_HASH 48baea8b66b0bfdc96a9d95a13b0b908) +set(SHADERC_GLSLANG_HASH c0ff01b5791dbc6c77e0eb295ce2ffc6) set(SHADERC_GLSLANG_HASH_TYPE MD5) set(SHADERC_GLSLANG_FILE glslang-${SHADERC_GLSLANG_VERSION}.tar.gz) set(SHADERC_GLSLANG_HOMEPAGE https://github.com/KhronosGroup/glslang) diff --git a/build_files/build_environment/cmake/wayland.cmake b/build_files/build_environment/cmake/wayland.cmake index d2161b4ecac..57cc0db5dfe 100644 --- a/build_files/build_environment/cmake/wayland.cmake +++ b/build_files/build_environment/cmake/wayland.cmake @@ -8,13 +8,8 @@ ExternalProject_Add(external_wayland URL_HASH ${WAYLAND_HASH_TYPE}=${WAYLAND_HASH} PREFIX ${BUILD_DIR}/wayland - # 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/FFI. # - # NOTE: passing link args "ffi/lib" should not be needed, but - # `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 @@ -23,7 +18,6 @@ ExternalProject_Add(external_wayland ${MESON_BUILD_TYPE} -Ddocumentation=false -Dtests=false - -D "c_link_args=-L${LIBDIR}/ffi/lib -lm" . ../external_wayland diff --git a/build_files/build_environment/dependencies.dot b/build_files/build_environment/dependencies.dot index b4c071ba603..c475be4f612 100644 --- a/build_files/build_environment/dependencies.dot +++ b/build_files/build_environment/dependencies.dot @@ -9,10 +9,11 @@ graph[autosize = false, size = "25.7,8.3!", resolution = 300]; external_dpcpp -- external_vcintrinsics; external_dpcpp -- external_openclheaders; external_dpcpp -- external_icdloader; - external_dpcpp -- external_mp11; + external_dpcpp -- external_emhash; external_dpcpp -- external_level_zero; external_dpcpp -- external_spirvheaders; external_dpcpp -- external_unifiedruntime; + external_dpcpp -- external_parallelhashmap; external_embree -- external_tbb; external_ffmpeg -- external_zlib; external_ffmpeg -- external_openjpeg; diff --git a/build_files/build_environment/linux/linux_rocky8_setup.sh b/build_files/build_environment/linux/linux_rocky8_setup.sh index 99e8eaf7d82..eae46fc0a00 100644 --- a/build_files/build_environment/linux/linux_rocky8_setup.sh +++ b/build_files/build_environment/linux/linux_rocky8_setup.sh @@ -202,26 +202,26 @@ yum -y install jack-audio-connection-kit-devel # Register ROCm packages sudo rpm --import https://repo.radeon.com/rocm/rocm.gpg.key -rm -f /etc/yum.repos.d/amdgpu-6.3.1.repo -rm -f /etc/yum.repos.d/rocm-6.3.1.repo -tee --append /etc/yum.repos.d/amdgpu-6.3.1.repo < --# Date: Sat Mar 16 09:18:41 2024 +0100 --# --# Merge pull request #238 from boostorg/fix/gh-237 --add_boost_module_headers(NAME "unordered" SRC_DIR ${BOOST_UNORDERED_SOURCE_DIR} GIT_TAG ${BOOST_UNORDERED_GIT_TAG}) -- --set(BOOST_ASSERT_GIT_TAG 447e0b3a331930f8708ade0e42683d12de9dfbc3) --# Author: Peter Dimov --# Date: Sat Feb 3 20:43:55 2024 +0200 --# --# Use __builtin_FUNCSIG() under MSVC 19.35+. Fixes #35. --add_boost_module_headers(NAME "assert" SRC_DIR ${BOOST_ASSERT_SOURCE_DIR} GIT_TAG ${BOOST_ASSERT_GIT_TAG}) -- --set(BOOST_CONFIG_GIT_TAG 11385ec21012926e15a612e3bf9f9a71403c1e5b) --# Merge: eef05e98 601598f8 --# Author: jzmaddock --# Date: Sun Feb 4 09:46:22 2024 +0000 --# --# Merge branch 'develop' --add_boost_module_headers(NAME "config" SRC_DIR ${BOOST_CONFIG_SOURCE_DIR} GIT_TAG ${BOOST_CONFIG_GIT_TAG}) -- --set(BOOST_CONTAINER_HASH_GIT_TAG 6d214eb776456bf17fbee20780a034a23438084f) --# Author: Peter Dimov --# Date: Wed Mar 6 05:13:53 2024 +0200 --# --# Update .appveyor.yml --add_boost_module_headers(NAME "container_hash" SRC_DIR ${BOOST_CONTAINER_HASH_SOURCE_DIR} GIT_TAG ${BOOST_CONTAINER_HASH_GIT_TAG}) -- --set(BOOST_CORE_GIT_TAG 083b41c17e34f1fc9b43ab796b40d0d8bece685c) --# Merge: 8cc2fda a973490 --# Author: Andrey Semashev --# Date: Tue Mar 19 18:10:04 2024 +0300 --# --# Merge pull request #169 from k3DW/feature/168 --add_boost_module_headers(NAME "core" SRC_DIR ${BOOST_CORE_SOURCE_DIR} GIT_TAG ${BOOST_CORE_GIT_TAG}) -- --# Describe is a dependency of container_hash --set(BOOST_DESCRIBE_GIT_TAG 50719b212349f3d1268285c586331584d3dbfeb5) --# Author: Peter Dimov --# Date: Sat Mar 23 20:27:08 2024 +0200 --# --# Update .drone.jsonnet --add_boost_module_headers(NAME "describe" SRC_DIR ${BOOST_DESCRIBE_SOURCE_DIR} GIT_TAG ${BOOST_DESCRIBE_GIT_TAG}) -- --# Reuse mp11 fetched earlier for DPC++ headers --set(BOOST_UNORDERED_INCLUDE_DIRS ${BOOST_UNORDERED_INCLUDE_DIRS} "${BOOST_MP11_SOURCE_DIR}/include/") -- --set(BOOST_PREDEF_GIT_TAG 0fdfb49c3a6789e50169a44e88a07cc889001106) --# Merge: 392e4e7 614546d --# Author: Rene Rivera --# Date: Tue Oct 31 20:24:41 2023 -0500 --# --# Merge branch 'develop' --add_boost_module_headers(NAME "predef" SRC_DIR ${BOOST_PREDEF_SOURCE_DIR} GIT_TAG ${BOOST_PREDEF_GIT_TAG}) -- --# Static assert is a dependency of core --set(BOOST_STATIC_ASSERT_GIT_TAG ba72d3340f3dc6e773868107f35902292f84b07e) --# Merge: 392e4e7 614546d --# Author: Rene Rivera --# Date: Tue Oct 31 20:24:41 2023 -0500 --# --# Merge branch 'develop' --add_boost_module_headers(NAME "static_assert" SRC_DIR ${BOOST_STATIC_ASSERT_SOURCE_DIR} GIT_TAG ${BOOST_STATIC_ASSERT_GIT_TAG}) -- --set(BOOST_THROW_EXCEPTION_GIT_TAG 7c8ec2114bc1f9ab2a8afbd629b96fbdd5901294) --# Author: Peter Dimov --# Date: Sat Jan 6 19:41:56 2024 +0200 --# --# Add -Wundef to test/Jamfile --add_boost_module_headers(NAME "throw_exception" SRC_DIR ${BOOST_THROW_EXCEPTION_SOURCE_DIR} GIT_TAG ${BOOST_THROW_EXCEPTION_GIT_TAG}) diff --git a/sycl/cmake/modules/FetchUnifiedRuntime.cmake b/sycl/cmake/modules/FetchUnifiedRuntime.cmake -index e9d52c5b2..8b439ba00 100644 +index 04602f22e..7bd7259d1 100644 --- a/sycl/cmake/modules/FetchUnifiedRuntime.cmake +++ b/sycl/cmake/modules/FetchUnifiedRuntime.cmake -@@ -31,7 +31,10 @@ set(UR_BUILD_EXAMPLES OFF CACHE BOOL "Build example applications." FORCE) - set(UR_BUILD_TESTS OFF CACHE BOOL "Build unit tests." FORCE) - set(UR_BUILD_XPTI_LIBS OFF) - set(UR_ENABLE_SYMBOLIZER ON CACHE BOOL "Enable symbolizer for sanitizer layer.") --set(UR_ENABLE_TRACING ON) -+# Blender: By default this option is override to ON -+# but we don't need this option, because we build DPC++ without xpti -+# so it is now would be overriding to OFF -+set(UR_ENABLE_TRACING OFF) - - if("level_zero" IN_LIST SYCL_ENABLE_BACKENDS) - set(UR_BUILD_ADAPTER_L0 ON) -@@ -124,11 +127,11 @@ if(SYCL_UR_USE_FETCH_CONTENT) +@@ -89,10 +89,9 @@ if(IS_DIRECTORY "${UR_INTREE_SOURCE_DIR}") # to link statically on windows if(WIN32) set(UMF_BUILD_SHARED_LIBRARY OFF CACHE INTERNAL "Build UMF shared library") @@ -190,15 +60,37 @@ index e9d52c5b2..8b439ba00 100644 - else() - set(UMF_DISABLE_HWLOC ${SYCL_UMF_DISABLE_HWLOC} CACHE INTERNAL "Disable hwloc for UMF") endif() - + set(UMF_LINK_HWLOC_STATICALLY OFF CACHE INTERNAL "static HWLOC") + set(UMF_DISABLE_HWLOC ${SYCL_UMF_DISABLE_HWLOC} CACHE INTERNAL "Disable hwloc for UMF") -+ + add_subdirectory(${UNIFIED_RUNTIME_SOURCE_DIR} ${UR_INTREE_BINARY_DIR}) + elseif(SYCL_UR_USE_FETCH_CONTENT) + include(FetchContent) +@@ -148,10 +147,9 @@ elseif(SYCL_UR_USE_FETCH_CONTENT) + # to link statically on windows + if(WIN32) + set(UMF_BUILD_SHARED_LIBRARY OFF CACHE INTERNAL "Build UMF shared library") +- set(UMF_LINK_HWLOC_STATICALLY ON CACHE INTERNAL "static HWLOC") +- else() +- set(UMF_DISABLE_HWLOC ${SYCL_UMF_DISABLE_HWLOC} CACHE INTERNAL "Disable hwloc for UMF") + endif() ++ set(UMF_LINK_HWLOC_STATICALLY OFF CACHE INTERNAL "static HWLOC") ++ set(UMF_DISABLE_HWLOC ${SYCL_UMF_DISABLE_HWLOC} CACHE INTERNAL "Disable hwloc for UMF") + fetch_adapter_source(level_zero ${UNIFIED_RUNTIME_REPO} - ${UNIFIED_RUNTIME_TAG} +@@ -363,6 +361,10 @@ if(CMAKE_SYSTEM_NAME STREQUAL Windows) + -DUMF_LINK_HWLOC_STATICALLY:BOOL=${UMF_LINK_HWLOC_STATICALLY} + -DUMF_DISABLE_HWLOC:BOOL=${UMF_DISABLE_HWLOC} + -DSYCL_EMHASH_DIR:STRING=${SYCL_EMHASH_DIR} ++ -DXPTIFW_PARALLEL_HASHMAP_HEADERS:STRING=${XPTIFW_PARALLEL_HASHMAP_HEADERS} ++ -DPython3_ROOT_DIR:STRING=${Python3_ROOT_DIR} ++ -DPython3_EXECUTABLE:STRING=${Python3_EXECUTABLE} ++ -DPYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE} + # Enable d suffix in UMF + -DUMF_USE_DEBUG_POSTFIX:BOOL=ON + ) diff --git a/sycl/source/detail/graph_impl.hpp b/sycl/source/detail/graph_impl.hpp -index 2d714bcc9..907151dc5 100644 +index 6045cc9ed..6ae24aade 100644 --- a/sycl/source/detail/graph_impl.hpp +++ b/sycl/source/detail/graph_impl.hpp @@ -29,6 +29,7 @@ @@ -210,87 +102,77 @@ index 2d714bcc9..907151dc5 100644 namespace sycl { inline namespace _V1 { diff --git a/sycl/source/detail/kernel_bundle_impl.hpp b/sycl/source/detail/kernel_bundle_impl.hpp -index e538318f8..43599b552 100644 +index eefea331d..9f08546be 100644 --- a/sycl/source/detail/kernel_bundle_impl.hpp +++ b/sycl/source/detail/kernel_bundle_impl.hpp -@@ -25,6 +25,7 @@ +@@ -23,6 +23,7 @@ #include #include #include +#include + #include #include - - #include "split_string.hpp" -diff --git a/sycl/source/detail/kernel_program_cache.hpp b/sycl/source/detail/kernel_program_cache.hpp -index 968cb9b24..ee13dc8c6 100644 ---- a/sycl/source/detail/kernel_program_cache.hpp -+++ b/sycl/source/detail/kernel_program_cache.hpp -@@ -20,6 +20,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -27,9 +28,7 @@ - #include - #include - #include -- --#include --#include -+#include - // For testing purposes - class MockKernelProgramCache; -@@ -177,8 +176,8 @@ public: - }; - - struct ProgramCache { -- ::boost::unordered_map Cache; -- ::boost::unordered_multimap KeyMap; -+ std::map Cache; -+ std::multimap KeyMap; - // Mapping between a UR program and its size. - std::unordered_map ProgramSizeMap; - -@@ -214,10 +213,8 @@ public: - }; - using KernelBuildResultPtr = std::shared_ptr; - -- using KernelByNameT = -- ::boost::unordered_map; -- using KernelCacheT = -- ::boost::unordered_map; -+ using KernelByNameT = std::map; -+ using KernelCacheT = std::map; - - using KernelFastCacheKeyT = - std::tuple; +diff --git a/sycl/source/detail/unordered_multimap.hpp b/sycl/source/detail/unordered_multimap.hpp +index 4d495ed06..e96d71870 100644 +--- a/sycl/source/detail/unordered_multimap.hpp ++++ b/sycl/source/detail/unordered_multimap.hpp +@@ -7,7 +7,7 @@ + //===--------------------------------------------------------------===// + #pragma once + #include +-#include ++#include -- // This container is used as a fast path for retrieving cached kernels. -- // unordered_flat_map is used here to reduce lookup overhead. -- // The slow path is used only once for each newly created kernel, so the -- // higher overhead of insertion that comes with unordered_flat_map is more -- // of an issue there. For that reason, those use regular unordered maps. -- using KernelFastCacheT = -- ::boost::unordered_flat_map; -+ using KernelFastCacheT = std::map; - - // DS to hold data and functions related to Program cache eviction. - struct EvictionList { + #include + #include diff --git a/sycl/unittests/CMakeLists.txt b/sycl/unittests/CMakeLists.txt -index 883142678..dedd9f83f 100644 +index b2b6761b9..f9db10a86 100644 --- a/sycl/unittests/CMakeLists.txt +++ b/sycl/unittests/CMakeLists.txt @@ -1,6 +1,5 @@ add_custom_target(SYCLUnitTests) set_target_properties(SYCLUnitTests PROPERTIES FOLDER "SYCL tests") -include_directories(${BOOST_UNORDERED_INCLUDE_DIRS}) - + foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE +diff --git a/xptifw/include/xpti_string_table.hpp b/xptifw/include/xpti_string_table.hpp +index c8678bdff..bd91468c9 100644 +--- a/xptifw/include/xpti_string_table.hpp ++++ b/xptifw/include/xpti_string_table.hpp +@@ -6,7 +6,7 @@ + #pragma once + + #include "xpti/xpti_data_types.h" +-#include ++#include + + #include + #include +diff --git a/xptifw/src/CMakeLists.txt b/xptifw/src/CMakeLists.txt +index de2274129..adeca1d1d 100644 +--- a/xptifw/src/CMakeLists.txt ++++ b/xptifw/src/CMakeLists.txt +@@ -18,8 +18,6 @@ FetchContent_Declare(parallel-hashmap + FetchContent_GetProperties(parallel-hashmap) + FetchContent_MakeAvailable(parallel-hashmap) + +-set(XPTIFW_PARALLEL_HASHMAP_HEADERS "${parallel-hashmap_SOURCE_DIR}") +- + file(GLOB SOURCES *.cpp) + + function(add_xpti_library LIB_NAME) +diff --git a/xptifw/src/xpti_trace_framework.cpp b/xptifw/src/xpti_trace_framework.cpp +index 223fe20aa..d9c8d8e46 100644 +--- a/xptifw/src/xpti_trace_framework.cpp ++++ b/xptifw/src/xpti_trace_framework.cpp +@@ -19,7 +19,7 @@ + #include "xpti_int64_hash_table.hpp" + #include "xpti_object_table.hpp" + #include "xpti_string_table.hpp" +-#include ++#include + + #include + #include diff --git a/build_files/build_environment/patches/embree.diff b/build_files/build_environment/patches/embree.diff index 02471eb9189..2248523fe41 100644 --- a/build_files/build_environment/patches/embree.diff +++ b/build_files/build_environment/patches/embree.diff @@ -1,22 +1,3 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1292e26..a1a9fcf 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -159,7 +159,13 @@ IF (EMBREE_SYCL_GEOMETRY_CALLBACK) - ENDIF() - - IF (EMBREE_SYCL_SUPPORT) -- ADD_DEFINITIONS("-DEMBREE_SYCL_SUPPORT") # FIXME: only use define from rtcore_config.h -+# Too many compilation issues with MSVC Debug and various versions of DPC++. -+# It's preferable to disable SYCL support when using MSVC Debug. -+ IF(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug") -+ SET(EMBREE_SYCL_SUPPORT FALSE) -+ ELSE() -+ ADD_DEFINITIONS("-DEMBREE_SYCL_SUPPORT") # FIXME: only use define from rtcore_config.h -+ ENDIF() - ENDIF() - - CMAKE_DEPENDENT_OPTION(EMBREE_SYCL_RT_SIMULATION "Using hardware simulation" OFF "EMBREE_SYCL_SUPPORT" OFF) diff --git a/common/cmake/dpcpp.cmake b/common/cmake/dpcpp.cmake index a15c179..4760e63 100644 --- a/common/cmake/dpcpp.cmake diff --git a/build_files/build_environment/patches/emhash.diff b/build_files/build_environment/patches/emhash.diff new file mode 100644 index 00000000000..7f62db22c20 --- /dev/null +++ b/build_files/build_environment/patches/emhash.diff @@ -0,0 +1,144 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fcd396d..2d2740c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,6 @@ + cmake_minimum_required(VERSION 3.12) + +-project(emhash_bench) ++project(emhash) + + if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +@@ -8,41 +8,89 @@ endif() + + set(CMAKE_CXX_STANDARD 17) + ++option(WITH_BENCHMARKS "Build benchmarks." ON) ++ + message("------------ Options -------------") + message(" CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") + message(" CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}") + message(" CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR} ") + message(" CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") + +-include_directories(${PROJECT_SOURCE_DIR}) +-include_directories(${PROJECT_SOURCE_DIR}/thirdparty) +-include_directories(${PROJECT_SOURCE_DIR}/bench) +- +-add_definitions(-DHAVE_BOOST=1 -DABSL_HAMP=1 -DEMH_PSL=16)# -DET=1) +-find_package(Threads REQUIRED) +- +-if(WIN32) +- set(CMAKE_CXX_FLAGS "/WX- /MP") +- set(CMAKE_CXX_FLAGS_DEBUG "/W3 /Zi /Od /WX- ${CMAKE_CXX_FLAGS}") +- set(CMAKE_CXX_FLAGS_RELEASE "/Ob1 /Ot /Oi /Oy /GL /arch:AVX ${CMAKE_CXX_FLAGS}") +- add_compile_options(/Ob2 /DNDEBUG /O2 /Ot /Oi /Oy /GL /arch:AVX) +-elseif(1) +- set(CMAKE_CXX_FLAGS_DEBUG "-g fno-strict-aliasing ${CMAKE_CXX_FLAGS}") +- set(CMAKE_CXX_FLAGS "-flto -march=native ${CMAKE_CXX_FLAGS}") ++add_library(emhash INTERFACE) ++ ++set(EMHASH_HEADERS ++ hash_set2.hpp ++ hash_set3.hpp ++ hash_set4.hpp ++ hash_set8.hpp ++ hash_table5.hpp ++ hash_table6.hpp ++ hash_table7.hpp ++ hash_table8.hpp ++) ++ ++set_target_properties(emhash PROPERTIES PUBLIC_HEADER "${EMHASH_HEADERS}") ++ ++target_include_directories( ++ emhash INTERFACE ++ $ ++ $ ++) ++ ++include(GNUInstallDirs) ++include(CMakePackageConfigHelpers) ++ ++install(TARGETS emhash ++ EXPORT emhash-targets ++ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ++) ++ ++install(EXPORT emhash-targets ++ FILE emhashTargets.cmake ++ NAMESPACE emhash:: ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/emhash ++) ++ ++configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.in ++ "${CMAKE_CURRENT_BINARY_DIR}/emhashConfig.cmake" ++ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/emhash ++) ++ ++install(FILES ++ "${CMAKE_CURRENT_BINARY_DIR}/emhashConfig.cmake" ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/emhash ++) ++ ++if(WITH_BENCHMARKS) ++ include_directories(${PROJECT_SOURCE_DIR}) ++ include_directories(${PROJECT_SOURCE_DIR}/thirdparty) ++ include_directories(${PROJECT_SOURCE_DIR}/bench) ++ add_definitions(-DHAVE_BOOST=1 -DABSL_HAMP=1 -DEMH_PSL=16)# -DET=1) ++ find_package(Threads REQUIRED) ++ if(WIN32) ++ set(CMAKE_CXX_FLAGS "/WX- /MP") ++ set(CMAKE_CXX_FLAGS_DEBUG "/W3 /Zi /Od /WX- ${CMAKE_CXX_FLAGS}") ++ set(CMAKE_CXX_FLAGS_RELEASE "/Ob1 /Ot /Oi /Oy /GL /arch:AVX ${CMAKE_CXX_FLAGS}") ++ add_compile_options(/Ob2 /DNDEBUG /O2 /Ot /Oi /Oy /GL /arch:AVX) ++ elseif(1) ++ set(CMAKE_CXX_FLAGS_DEBUG "-g fno-strict-aliasing ${CMAKE_CXX_FLAGS}") ++ set(CMAKE_CXX_FLAGS "-flto=auto -march=native ${CMAKE_CXX_FLAGS}") ++ endif() ++ ++ add_executable(ebench ${PROJECT_SOURCE_DIR}/bench/ebench.cpp) ++ add_executable(sbench ${PROJECT_SOURCE_DIR}/bench/sbench.cpp) ++ add_executable(mbench ${PROJECT_SOURCE_DIR}/bench/martin_bench.cpp) ++ add_executable(bs ${PROJECT_SOURCE_DIR}/bench/bstring.cpp) ++ add_executable(bi ${PROJECT_SOURCE_DIR}/bench/buint64.cpp) ++ add_executable(fbench ${PROJECT_SOURCE_DIR}/bench/fbench.cpp) ++ add_executable(hbench ${PROJECT_SOURCE_DIR}/bench/hbench.cpp) ++ #add_executable(qbench ${PROJECT_SOURCE_DIR}/bench/qbench.cpp) ++ #add_executable(sibench ${PROJECT_SOURCE_DIR}/bench/simple_bench.cpp) ++ ++ #target_link_libraries(ebench PRIVATE Threads::Threads) ++ #target_link_libraries(sbench PRIVATE Threads::Threads) ++ #target_link_libraries(mbench PRIVATE Threads::Threads) ++ #target_link_libraries(hbench PRIVATE Threads::Threads) ++ #target_link_libraries(fbench PRIVATE Threads::Threads) + endif() + +-add_executable(ebench ${PROJECT_SOURCE_DIR}/bench/ebench.cpp) +-add_executable(sbench ${PROJECT_SOURCE_DIR}/bench/sbench.cpp) +-add_executable(mbench ${PROJECT_SOURCE_DIR}/bench/martin_bench.cpp) +-add_executable(bs ${PROJECT_SOURCE_DIR}/bench/bstring.cpp) +-add_executable(bi ${PROJECT_SOURCE_DIR}/bench/buint64.cpp) +-add_executable(fbench ${PROJECT_SOURCE_DIR}/bench/fbench.cpp) +-add_executable(hbench ${PROJECT_SOURCE_DIR}/bench/hbench.cpp) +-#add_executable(qbench ${PROJECT_SOURCE_DIR}/bench/qbench.cpp) +-#add_executable(sibench ${PROJECT_SOURCE_DIR}/bench/simple_bench.cpp) +- +-#target_link_libraries(ebench PRIVATE Threads::Threads) +-#target_link_libraries(sbench PRIVATE Threads::Threads) +-#target_link_libraries(mbench PRIVATE Threads::Threads) +-#target_link_libraries(hbench PRIVATE Threads::Threads) +-#target_link_libraries(fbench PRIVATE Threads::Threads) +diff --git a/config.cmake.in b/config.cmake.in +new file mode 100644 +index 0000000..341806c +--- /dev/null ++++ b/config.cmake.in +@@ -0,0 +1,5 @@ ++@PACKAGE_INIT@ ++ ++include("${CMAKE_CURRENT_LIST_DIR}/emhashTargets.cmake") ++ ++check_required_components(emhash) +\ No newline at end of file diff --git a/build_files/build_environment/patches/ffi.diff b/build_files/build_environment/patches/ffi.diff deleted file mode 100644 index 84e7f0407e2..00000000000 --- a/build_files/build_environment/patches/ffi.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- Makefile.in 2014-11-12 06:59:58.000000000 -0500 -+++ Makefile.in 2018-09-17 13:36:10.974086554 -0400 -@@ -600,7 +600,7 @@ - target_os = @target_os@ - target_vendor = @target_vendor@ - toolexecdir = @toolexecdir@ --toolexeclibdir = @toolexeclibdir@ -+toolexeclibdir = $(libdir) - top_build_prefix = @top_build_prefix@ - top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ diff --git a/build_files/build_environment/patches/haru.diff b/build_files/build_environment/patches/haru.diff deleted file mode 100644 index fed551b4bf0..00000000000 --- a/build_files/build_environment/patches/haru.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/hpdf_image_ccitt.c b/src/hpdf_image_ccitt.c -index 8672763..9be531a 100644 ---- a/src/hpdf_image_ccitt.c -+++ b/src/hpdf_image_ccitt.c -@@ -21,7 +21,6 @@ - #include - #include - --#define G3CODES - #include "t4.h" - - typedef unsigned int uint32; diff --git a/build_files/build_environment/patches/ispc.diff b/build_files/build_environment/patches/ispc.diff index 3025c8b1646..d576aba6502 100644 --- a/build_files/build_environment/patches/ispc.diff +++ b/build_files/build_environment/patches/ispc.diff @@ -1,63 +1,12 @@ -diff -Naur ispc-1.17.0.org/CMakeLists.txt ispc-1.17.0/CMakeLists.txt ---- ispc-1.17.0.org/CMakeLists.txt 2022-01-15 01:35:15 -0700 -+++ ispc-1.17.0/CMakeLists.txt 2022-02-12 12:44:24 -0700 -@@ -443,7 +447,7 @@ +diff -Naur ispc-1.28.0/cmake/GenerateBuiltins.cmake external_ispc/cmake/GenerateBuiltins.cmake +--- ispc-1.28.0/cmake/GenerateBuiltins.cmake 2025-08-12 06:34:22.000000000 -0600 ++++ external_ispc/cmake/GenerateBuiltins.cmake 2025-09-10 10:40:05.793808800 -0600 +@@ -334,7 +334,7 @@ - # Include directories - target_include_directories(${PROJECT_NAME} PRIVATE -- ${LLVM_INCLUDE_DIRS} -+ ${LLVM_INCLUDE_DIRS} ${CLANG_INCLUDE_DIRS} - ${XE_DEPS_DIR}/include - ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}) -@@ -607,7 +607,7 @@ - NAMES - "${CMAKE_STATIC_LIBRARY_PREFIX}${clangLib}${CMAKE_STATIC_LIBRARY_SUFFIX}" - clang-cpp -- HINTS ${LLVM_LIBRARY_DIRS}) -+ HINTS ${LLVM_LIBRARY_DIRS} ${CLANG_LIBRARY_DIR}) - if (NOT ${${clangLib}Path} IN_LIST CLANG_LIBRARY_FULL_PATH_LIST) - list(APPEND CLANG_LIBRARY_FULL_PATH_LIST ${${clangLib}Path}) - endif() -@@ -546,6 +550,29 @@ - endif() - endif() - -+# Link against libstdc++.a which must be provided to the linker after -+# LLVM and CLang libraries. -+# This is needed because some of LLVM/CLang dependencies are using -+# std::make_shared, which is defined in one of those: -+# - libclang-cpp.so -+# - libstdc++.a -+# Using the former one is tricky because then generated binary depends -+# on a library which is outside of the LD_LIBRARY_PATH. -+# -+# Hence, using C++ implementation from G++ which seems to work just fine. -+# In fact, from investigation seems that libclang-cpp.so itself is pulling -+# std::_Sp_make_shared_tag from G++'s libstdc++.a. -+if(UNIX AND NOT APPLE) -+ execute_process( -+ COMMAND g++ --print-file-name libstdc++.a -+ OUTPUT_VARIABLE GCC_LIBSTDCXX_A -+ OUTPUT_STRIP_TRAILING_WHITESPACE -+ ) -+ if(GCC_LIBSTDCXX_A AND EXISTS ${GCC_LIBSTDCXX_A}) -+ target_link_libraries(${PROJECT_NAME} ${GCC_LIBSTDCXX_A}) -+ endif() -+endif() -+ - # Build target for utility checking host ISA - if (ISPC_INCLUDE_UTILS) - add_executable(check_isa "") -diff -Naur ispc-1.17.0.org/cmake/GenerateBuiltins.cmake ispc-1.17.0/cmake/GenerateBuiltins.cmake ---- ispc-1.17.0.org/cmake/GenerateBuiltins.cmake 2022-01-15 01:35:15 -0700 -+++ ispc-1.17.0/cmake/GenerateBuiltins.cmake 2022-02-12 12:44:24 -0700 -@@ -124,6 +124,8 @@ - - if ("${bit}" STREQUAL "32" AND ${arch} STREQUAL "x86") - set(target_arch "i686") -+ # Blender: disable 32bit due to build issues on Linux and being unnecessary. -+ set(SKIP ON) - elseif ("${bit}" STREQUAL "64" AND ${arch} STREQUAL "x86") - set(target_arch "x86_64") - elseif ("${bit}" STREQUAL "32" AND ${arch} STREQUAL "arm") + add_custom_command( + OUTPUT ${bc} +- COMMAND cat ${input} | \"${LLVM_AS_EXECUTABLE}\" -o ${bc} ++ COMMAND ${CMAKE_COMMAND} -E cat ${input} | \"${LLVM_AS_EXECUTABLE}\" -o ${bc} + DEPENDS ${input} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) diff --git a/build_files/build_environment/patches/level-zero.diff b/build_files/build_environment/patches/level-zero.diff index 811f803c01f..3a7c78ee8fc 100644 --- a/build_files/build_environment/patches/level-zero.diff +++ b/build_files/build_environment/patches/level-zero.diff @@ -1,11 +1,11 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index ca0746f..75d2890 100644 +index b2114c3..c7205a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -92,13 +92,6 @@ if(MSVC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /DYNAMICBASE") +@@ -100,13 +100,6 @@ if(MSVC) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_CXX_LINKER_WRAPPER_FLAG}/DYNAMICBASE") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_CXX_LINKER_WRAPPER_FLAG}/guard:cf") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_CXX_LINKER_WRAPPER_FLAG}/LTCG /INCREMENTAL:NO") - # enable Spectre Mitigation, not supported by clang-cl - if((NOT CMAKE_CXX_COMPILER_ID STREQUAL Clang) AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL IntelLLVM)) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Qspectre") @@ -16,7 +16,7 @@ index ca0746f..75d2890 100644 endif() #CXX compiler support -@@ -142,9 +135,6 @@ if(MSVC) +@@ -161,9 +154,6 @@ if(MSVC) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${CMAKE_CXX_LINKER_WRAPPER_FLAG}/DEBUG ${CMAKE_CXX_LINKER_WRAPPER_FLAG}/OPT:REF ${CMAKE_CXX_LINKER_WRAPPER_FLAG}/OPT:ICF") diff --git a/build_files/build_environment/patches/ocio_2089.diff b/build_files/build_environment/patches/ocio_2089.diff deleted file mode 100644 index 227cd00fe59..00000000000 --- a/build_files/build_environment/patches/ocio_2089.diff +++ /dev/null @@ -1,298 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9b20aa043..8f33d3a3f 100755 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -180,7 +180,12 @@ option(OCIO_USE_OIIO_FOR_APPS "Request OIIO to build apps (ociolutimage, ociocon - - - if (NOT APPLE) -- if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|x86_64|X86|i386|i686)") -+ if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "(ARM64|arm64)" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64") -+ set(OCIO_ARCH_X86 0) -+ set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_SSE ON) -+ set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX OFF) -+ set(OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C OFF) -+ elseif ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(AMD64|IA64|EM64T|x86_64|X86|i386|i686)") - # Intel-based architecture (not APPLE) - if ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(X86|i386|i686)") - set(OCIO_ARCH_X86_32 1) -@@ -270,7 +275,7 @@ option(OCIO_USE_AVX2 "Specify whether to enable AVX2 CPU performance optimizatio - option(OCIO_USE_AVX512 "Specify whether to enable AVX512 CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_AVX}) - option(OCIO_USE_F16C "Specify whether to enable F16C CPU performance optimizations" ${OCIO_BUILD_ENABLE_OPTIMIZATIONS_F16C}) - --if (APPLE) -+if (APPLE OR WIN32) - # TODO: Revisit whether that option is necessary. - option(OCIO_USE_SSE2NEON "Specify whether to enable SSE CPU performance optimizations using SSE2NEON for Apple ARM architecture" ON) - mark_as_advanced(OCIO_USE_SSE2NEON) -@@ -332,8 +337,10 @@ if(OCIO_USE_SIMD AND OCIO_USE_SSE2NEON AND COMPILER_SUPPORTS_ARM_NEON) - add_library(sse2neon INTERFACE) - # Add the include directories to the target. - target_include_directories(sse2neon INTERFACE "${sse2neon_INCLUDE_DIR}") -- # Ignore the warnings coming from sse2neon.h as they are false positives. -- target_compile_options(sse2neon INTERFACE -Wno-unused-parameter) -+ if(NOT MSVC) -+ # Ignore the warnings coming from sse2neon.h as they are false positives. -+ target_compile_options(sse2neon INTERFACE -Wno-unused-parameter) -+ endif() - endif() - endif() - -diff --git a/share/cmake/modules/install/Installsse2neon.cmake b/share/cmake/modules/install/Installsse2neon.cmake -index 47877436a..ced4ae139 100644 ---- a/share/cmake/modules/install/Installsse2neon.cmake -+++ b/share/cmake/modules/install/Installsse2neon.cmake -@@ -16,7 +16,7 @@ include(FetchContent) - set(FETCHCONTENT_BASE_DIR "${CMAKE_BINARY_DIR}/ext/build/sse2neon") - FetchContent_Declare(sse2neon - GIT_REPOSITORY https://github.com/DLTcollab/sse2neon.git -- GIT_TAG v1.6.0 -+ GIT_TAG 227cc413fb2d50b2a10073087be96b59d5364aea - ) - - # FetchContent_MakeAvailable is not available until CMake 3.14+. -@@ -38,6 +38,8 @@ if(NOT sse2neon_POPULATED) - add_library(sse2neon INTERFACE) - # Add the include directories to the target. - target_include_directories(sse2neon INTERFACE "${sse2neon_INCLUDE_DIR}") -- # Ignore the warnings coming from sse2neon.h as they are false positives. -- target_compile_options(sse2neon INTERFACE -Wno-unused-parameter) -+ if(NOT MSVC) -+ # Ignore the warnings coming from sse2neon.h as they are false positives. -+ target_compile_options(sse2neon INTERFACE -Wno-unused-parameter) -+ endif() - endif() -\ No newline at end of file -diff --git a/share/cmake/utils/CheckSupportSSEUsingSSE2NEON.cmake b/share/cmake/utils/CheckSupportSSEUsingSSE2NEON.cmake -index c47c8be70..d24cda55f 100644 ---- a/share/cmake/utils/CheckSupportSSEUsingSSE2NEON.cmake -+++ b/share/cmake/utils/CheckSupportSSEUsingSSE2NEON.cmake -@@ -6,8 +6,13 @@ include(CheckCXXSourceCompiles) - set(_cmake_required_flags_orig "${CMAKE_REQUIRED_FLAGS}") - set(_cmake_required_includes_orig "${CMAKE_REQUIRED_INCLUDES}") - set(_cmake_osx_architectures_orig "${CMAKE_OSX_ARCHITECTURES}") -+set(_cmake_cxx_flags_orig "${CMAKE_CXX_FLAGS}") - --if(APPLE AND COMPILER_SUPPORTS_ARM_NEON) -+if(MSVC) -+ set(CMAKE_CXX_FLAGS "/Zc:preprocessor") -+endif() -+ -+if((APPLE OR WIN32) AND COMPILER_SUPPORTS_ARM_NEON) - - if("${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64;x86_64" OR - "${CMAKE_OSX_ARCHITECTURES}" MATCHES "x86_64;arm64") -@@ -63,8 +68,9 @@ endif() - set(CMAKE_REQUIRED_FLAGS "${_cmake_required_flags_orig}") - set(CMAKE_REQUIRED_INCLUDES "${_cmake_required_includes_orig}") - set(CMAKE_OSX_ARCHITECTURES "${_cmake_osx_architectures_orig}") -+set(CMAKE_CXX_FLAGS "${_cmake_cxx_flags_orig}") - - unset(_cmake_required_flags_orig) - unset(_cmake_required_includes_orig) - unset(_cmake_osx_architectures_orig) -- -+unset(_cmake_cxx_flags_orig) -diff --git a/share/cmake/utils/CompilerFlags.cmake b/share/cmake/utils/CompilerFlags.cmake -index 536b5eebd..d87e73f2d 100644 ---- a/share/cmake/utils/CompilerFlags.cmake -+++ b/share/cmake/utils/CompilerFlags.cmake -@@ -18,7 +18,12 @@ if(OCIO_USE_SIMD) - - if (OCIO_USE_SSE2NEON AND COMPILER_SUPPORTS_ARM_NEON) - include(CheckSupportSSEUsingSSE2NEON) -- if(NOT COMPILER_SUPPORTS_SSE_WITH_SSE2NEON) -+ if(COMPILER_SUPPORTS_SSE_WITH_SSE2NEON) -+ if(WIN32 AND MSVC) -+ # Enable the "new" preprocessor, to more closely match Clang/GCC, required for sse2neon -+ set(PLATFORM_COMPILE_OPTIONS "${PLATFORM_COMPILE_OPTIONS};/Zc:preprocessor") -+ endif() -+ else() - set(OCIO_USE_SSE2NEON OFF) - endif() - endif() -diff --git a/src/OpenColorIO/CPUInfo.cpp b/src/OpenColorIO/CPUInfo.cpp -index dce813a4f..edf341792 100644 ---- a/src/OpenColorIO/CPUInfo.cpp -+++ b/src/OpenColorIO/CPUInfo.cpp -@@ -183,7 +183,7 @@ CPUInfo::CPUInfo() - } - } - --#elif defined(__aarch64__) // ARM Processor or Apple ARM. -+#elif defined(__aarch64__) || defined(_M_ARM64) // ARM 64-bit processor (multiple platforms) - - CPUInfo::CPUInfo() - { -diff --git a/src/OpenColorIO/CPUInfoConfig.h.in b/src/OpenColorIO/CPUInfoConfig.h.in -index b8f5045d2..c105d4159 100644 ---- a/src/OpenColorIO/CPUInfoConfig.h.in -+++ b/src/OpenColorIO/CPUInfoConfig.h.in -@@ -6,7 +6,7 @@ - #cmakedefine01 OCIO_ARCH_X86_32 - - // Relevant only for arm64 architecture. --#if defined(__aarch64__) -+#if defined(__aarch64__) || defined(_M_ARM64) - #cmakedefine01 OCIO_USE_SSE2NEON - #else - #define OCIO_USE_SSE2NEON 0 -@@ -23,7 +23,7 @@ - - // Building for x86_64 processor on a non-ARM host architecture - // OR Building on/for an ARM architecture and using SSE2NEON. --#if (OCIO_ARCH_X86 && !defined(__aarch64__)) || (defined(__aarch64__) && OCIO_USE_SSE2NEON) -+#if (OCIO_ARCH_X86 && !defined(__aarch64__)) || ((defined(__aarch64__) || defined(_M_ARM64)) && OCIO_USE_SSE2NEON) - #cmakedefine01 OCIO_USE_SSE2 - #cmakedefine01 OCIO_USE_SSE3 - #cmakedefine01 OCIO_USE_SSSE3 -diff --git a/src/OpenColorIO/SSE.h b/src/OpenColorIO/SSE.h -index 2494698c5..6aebc45d4 100644 ---- a/src/OpenColorIO/SSE.h -+++ b/src/OpenColorIO/SSE.h -@@ -9,14 +9,25 @@ - #if OCIO_USE_SSE2 - - // Include the appropriate SIMD intrinsics header based on the architecture (Intel vs. ARM). --#if !defined(__aarch64__) -+#if !defined(__aarch64__) && !defined(_M_ARM64) - #if OCIO_USE_SSE2 - #include - #endif --#elif defined(__aarch64__) -+#elif defined(__aarch64__) || defined(_M_ARM64) - // ARM architecture A64 (ARM64) - #if OCIO_USE_SSE2NEON -+ // MSVC doesn't like the redefinitions below and requires the existing functions to be undef-ed -+ #if defined(_M_ARM64) -+ #define _mm_max_ps _mm_max_ps_orig -+ #define _mm_min_ps _mm_min_ps_orig -+ #endif -+ - #include -+ -+ #if defined(_M_ARM64) -+ #undef _mm_max_ps -+ #undef _mm_min_ps -+ #endif - #endif - #endif - -@@ -30,7 +41,7 @@ namespace OCIO_NAMESPACE - // Note that it is important for the code below this ifdef stays in the OCIO_NAMESPACE since - // it is redefining two of the functions from sse2neon. - --#if defined(__aarch64__) -+#if defined(__aarch64__) || defined(_M_ARM64) - #if OCIO_USE_SSE2NEON - // Using vmaxnmq_f32 and vminnmq_f32 rather than sse2neon's vmaxq_f32 and vminq_f32 due to - // NaN handling. This doesn't seem to be significantly slower than the default sse2neon behavior. -@@ -77,6 +88,9 @@ static const __m128 EPOS128 = _mm_set1_ps(128.0f); - - static const __m128 EPOSINF = _mm_set1_ps(std::numeric_limits::infinity()); - -+// These funtions won't work when using MSVC + ARM64 unless you specify /Zc:arm64-aliased-neon-types- -+// This comes with its own issues, so it is easier to just disable them when using MSVC + ARM64 -+#if !defined(_M_ARM64) - // Debug function to print out the contents of a floating-point SSE register - inline void ssePrintRegister(const char* msg, __m128& reg) - { -@@ -91,6 +105,7 @@ inline void ssePrintRegister(const char* msg, __m128i& reg) - int *r = (int*) ® - printf("%s : %d %d %d %d\n", msg, r[0], r[1], r[2], r[3]); - } -+#endif - - // Determine whether a floating-point value is negative based on its sign bit. - // This function will treat special values, like -0, -NaN, -Inf, as they were indeed -@@ -170,7 +185,7 @@ inline __m128 sseLog2(__m128 x) - { - // y = log2( x ) = log2( 2^exponent * mantissa ) - // = exponent + log2( mantissa ) -- -+ - __m128 mantissa - = _mm_or_ps( // OR with EONE - _mm_andnot_ps( // NOT(EMASK) AND x -diff --git a/src/OpenColorIO/SSE2.h b/src/OpenColorIO/SSE2.h -index 918694fc8..e51dad9b5 100644 ---- a/src/OpenColorIO/SSE2.h -+++ b/src/OpenColorIO/SSE2.h -@@ -9,12 +9,35 @@ - #if OCIO_USE_SSE2 - - // Include the appropriate SIMD intrinsics header based on the architecture (Intel vs. ARM). --#if !defined(__aarch64__) -+#if !defined(__aarch64__) && !defined(_M_ARM64) - #include --#elif defined(__aarch64__) -+#elif defined(__aarch64__) || defined(_M_ARM64) - // ARM architecture A64 (ARM64) - #if OCIO_USE_SSE2NEON -+ // MSVC doesn't like the redefinitions below and requires the existing functions to be undef-ed -+ #if defined(_M_ARM64) -+ #define _mm_max_ps _mm_max_ps_orig -+ #define _mm_min_ps _mm_min_ps_orig -+ #endif -+ - #include -+ -+ #if defined(_M_ARM64) -+ #undef _mm_max_ps -+ #undef _mm_min_ps -+ #endif -+ -+ // Current versions of MSVC do not define float16_t, so we do it ourselves using -+ // int16_t as an intermediate type -+ #if defined(_M_ARM64) && !defined(float16_t) -+ #define float16_t int16_t -+ #endif -+ -+ // Current versions of MSVC do not define vst1q_f16, so we do it ourselves using -+ // internal methods from MSVC's arm_neon.h -+ #if defined(_M_ARM64) && !defined(vst1q_f16) -+ #define vst1q_f16(A, B) neon_st1m_q16((A), __float16x8_t_to_n128(B)); -+ #endif - #endif - #endif - -@@ -30,7 +53,7 @@ namespace OCIO_NAMESPACE - // Note that it is important for the code below this ifdef stays in the OCIO_NAMESPACE since - // it is redefining two of the functions from sse2neon. - --#if defined(__aarch64__) -+#if defined(__aarch64__) || defined(_M_ARM64) - #if OCIO_USE_SSE2NEON - // Using vmaxnmq_f32 and vminnmq_f32 rather than sse2neon's vmaxq_f32 and vminq_f32 due to - // NaN handling. This doesn't seem to be significantly slower than the default sse2neon behavior. -@@ -321,7 +344,7 @@ struct SSE2RGBAPack - sse2RGBATranspose_4x4(r, g, b, a, rgba0, rgba1, rgba2, rgba3); - - #if OCIO_USE_SSE2NEON -- // use neon hardware support for f32 to f16 -+ // use neon hardware support for f32 to f16 (apart from in MSVC, which doesnt support it) - float16x8_t rgba; - float16x4_t rgba00_01 = vcvt_f16_f32(vreinterpretq_f32_m128(rgba0)); - float16x4_t rgba03_03 = vcvt_f16_f32(vreinterpretq_f32_m128(rgba1)); -diff --git a/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp b/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp -index 96adff44b..e9e977433 100644 ---- a/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp -+++ b/src/OpenColorIO/ops/fixedfunction/FixedFunctionOpCPU.cpp -@@ -1844,7 +1844,7 @@ __m128 Renderer_LIN_TO_PQ_SSE::myPower(__m128 x, __m128 exp) - return ssePower(x, exp); - } - --#ifdef _WIN32 -+#if (_MSC_VER >= 1920) && (OCIO_USE_AVX) - // Only Windows compilers have built-in _mm_pow_ps() SVML intrinsic - // implementation, so non-fast SIMD version is available only on Windows for - // now. -@@ -1853,7 +1853,7 @@ __m128 Renderer_LIN_TO_PQ_SSE::myPower(__m128 x, __m128 exp) - { - return _mm_pow_ps(x, exp); - } --#endif // _WIN32 -+#endif // (_MSC_VER >= 1920) && (OCIO_USE_AVX) - - template - void Renderer_LIN_TO_PQ_SSE::apply(const void* inImg, void* outImg, long numPixels) const diff --git a/build_files/build_environment/patches/ocloc.diff b/build_files/build_environment/patches/ocloc.diff deleted file mode 100644 index 9d06d81a3e0..00000000000 --- a/build_files/build_environment/patches/ocloc.diff +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/shared/offline_compiler/source/CMakeLists.txt b/shared/offline_compiler/source/CMakeLists.txt -index 9d16ca0e736..88e236acd1a 100644 ---- a/shared/offline_compiler/source/CMakeLists.txt -+++ b/shared/offline_compiler/source/CMakeLists.txt -@@ -463,7 +463,7 @@ elseif(UNIX) - set(NEO_OCLOC_FORMER_LIB_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${OCLOC_NAME}${NEO__LEGACY_NAME_SUFFIX}${CMAKE_SHARED_LIBRARY_SUFFIX}) - endif() - -- set(OCLOC_OUTPUT_NAME_SUFFIX "-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_OCLOC_VERSION_MODE}") -+ #set(OCLOC_OUTPUT_NAME_SUFFIX "-${NEO_OCL_VERSION_MAJOR}.${NEO_OCL_VERSION_MINOR}.${NEO_OCLOC_VERSION_MODE}") - endif() - set_target_properties(${OCLOC_NAME} PROPERTIES OUTPUT_NAME ${OCLOC_NAME}${OCLOC_OUTPUT_NAME_SUFFIX}) - set_target_properties(${OCLOC_NAME}_lib PROPERTIES OUTPUT_NAME ${OCLOC_NAME}${LIBOCLOC_OUTPUT_NAME_SUFFIX}) diff --git a/build_files/build_environment/patches/oiio_windows_arm64.diff b/build_files/build_environment/patches/oiio_windows_arm64.diff deleted file mode 100644 index c630f0c63e7..00000000000 --- a/build_files/build_environment/patches/oiio_windows_arm64.diff +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/src/include/OpenImageIO/simd.h b/src/include/OpenImageIO/simd.h -index b1701946f..d148a89d3 100644 ---- a/src/include/OpenImageIO/simd.h -+++ b/src/include/OpenImageIO/simd.h -@@ -119,6 +119,9 @@ - // Cuda -- don't include any of these headers - #elif defined(_WIN32) - # include -+# if defined(__ARM_NEON__) && !defined(OIIO_NO_NEON) -+# include -+# endif - #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) || defined(__e2k__) - # include - #elif defined(__GNUC__) && defined(__ARM_NEON__) && !defined(OIIO_NO_NEON) diff --git a/build_files/build_environment/patches/openexr_1986.diff b/build_files/build_environment/patches/openexr_1986.diff deleted file mode 100644 index 6939c552034..00000000000 --- a/build_files/build_environment/patches/openexr_1986.diff +++ /dev/null @@ -1,62 +0,0 @@ -commit df162955c613d17f966dd4d42a6c9582a3d57683 -Author: Kimball Thurston -Date: Wed Feb 19 05:07:18 2025 +1300 - - Adjust the clamping on the dwa compression (#1986) - - * Adjust the clamping on the dwa compression - - The dwa compression is not truly a quality level like other things, so a - maximal value is controlling quantization, not quality. A value of 0 is - allowed, but negative is not. - - Signed-off-by: Kimball Thurston - - * improve tests for dwa compression level set - - Signed-off-by: Kimball Thurston - - --------- - - Signed-off-by: Kimball Thurston - -diff --git a/src/lib/OpenEXRCore/part.c b/src/lib/OpenEXRCore/part.c -index 6a51b3c7..814fd5ce 100644 ---- a/src/lib/OpenEXRCore/part.c -+++ b/src/lib/OpenEXRCore/part.c -@@ -609,7 +609,12 @@ exr_set_dwa_compression_level (exr_context_t ctxt, int part_index, float level) - return EXR_UNLOCK_AND_RETURN ( - ctxt->standard_error (ctxt, EXR_ERR_NOT_OPEN_WRITE)); - -- if (level > 0.f && level <= 100.f) -+ // avoid bad math (fp exceptions or whatever) by clamping here -+ // there has always been a clamp to 0, but on the upper end, there -+ // is a limit too, where you only get black images anyway, so that -+ // is not particularly useful, not that any large value will -+ // really be crushing the image -+ if (level >= 0.f && level <= (65504.f*100000.f)) - { - part->dwa_compression_level = level; - rv = EXR_ERR_SUCCESS; -diff --git a/src/test/OpenEXRCoreTest/write.cpp b/src/test/OpenEXRCoreTest/write.cpp -index 7da03422..7f971c71 100644 ---- a/src/test/OpenEXRCoreTest/write.cpp -+++ b/src/test/OpenEXRCoreTest/write.cpp -@@ -435,10 +435,16 @@ testWriteBaseHeader (const std::string& tempdir) - exr_set_dwa_compression_level (outf, 0, -2.f)); - EXRCORE_TEST_RVAL_FAIL ( - EXR_ERR_INVALID_ARGUMENT, -- exr_set_dwa_compression_level (outf, 0, 420.f)); -+ exr_set_dwa_compression_level (outf, 0, INFINITY)); -+ EXRCORE_TEST_RVAL_FAIL ( -+ EXR_ERR_INVALID_ARGUMENT, -+ exr_set_dwa_compression_level (outf, 0, NAN)); - EXRCORE_TEST_RVAL (exr_set_dwa_compression_level (outf, 0, 42.f)); - EXRCORE_TEST_RVAL (exr_get_dwa_compression_level (outf, 0, &dlev)); - EXRCORE_TEST (dlev == 42.f); -+ EXRCORE_TEST_RVAL (exr_set_dwa_compression_level (outf, 0, 420.f)); -+ EXRCORE_TEST_RVAL (exr_get_dwa_compression_level (outf, 0, &dlev)); -+ EXRCORE_TEST (dlev == 420.f); - - EXRCORE_TEST_RVAL (exr_finish (&outf)); - remove (outfn.c_str ()); diff --git a/build_files/build_environment/patches/openimageio_png_cicp_4746.diff b/build_files/build_environment/patches/openimageio_png_cicp_4746.diff new file mode 100644 index 00000000000..b697f94f730 --- /dev/null +++ b/build_files/build_environment/patches/openimageio_png_cicp_4746.diff @@ -0,0 +1,105 @@ +diff --git a/src/include/OpenImageIO/imageio.h b/src/include/OpenImageIO/imageio.h +index bb575880c..6a8e04cec 100644 +--- a/src/include/OpenImageIO/imageio.h ++++ b/src/include/OpenImageIO/imageio.h +@@ -2016,6 +2016,9 @@ public: + /// Does this format allow 0x0 sized images, i.e. an image file + /// with metadata only and no pixels? + /// ++ /// - `"cicp"` : ++ /// Does this format support embedding CICP metadata? ++ /// + /// This list of queries may be extended in future releases. Since this + /// can be done simply by recognizing new query strings, and does not + /// require any new API entry points, addition of support for new +@@ -3224,7 +3227,6 @@ OIIO_API void set_colorspace(ImageSpec& spec, string_view name); + /// @version 3.0 + OIIO_API void set_colorspace_rec709_gamma(ImageSpec& spec, float gamma); + +- + /// Are the two named color spaces equivalent, based on the default color + /// config in effect? + /// +diff --git a/src/png.imageio/png_pvt.h b/src/png.imageio/png_pvt.h +index 85ac6ec74..450689a67 100644 +--- a/src/png.imageio/png_pvt.h ++++ b/src/png.imageio/png_pvt.h +@@ -40,7 +40,7 @@ http://lists.openimageio.org/pipermail/oiio-dev-openimageio.org/2009-April/00065 + OIIO_PLUGIN_NAMESPACE_BEGIN + + #define ICC_PROFILE_ATTR "ICCProfile" +- ++#define CICP_ATTR "CICP" + + namespace PNG_pvt { + +@@ -326,6 +326,16 @@ read_info(png_structp& sp, png_infop& ip, int& bit_depth, int& color_type, + + interlace_type = png_get_interlace_type(sp, ip); + ++#ifdef PNG_cICP_SUPPORTED ++ { ++ png_byte pri = 0, trc = 0, mtx = 0, vfr = 0; ++ if (png_get_cICP(sp, ip, &pri, &trc, &mtx, &vfr)) { ++ int cicp[4] = { pri, trc, mtx, vfr }; ++ spec.attribute(CICP_ATTR, TypeDesc(TypeDesc::INT, 4), cicp); ++ } ++ } ++#endif ++ + #ifdef PNG_eXIf_SUPPORTED + // Recent version of PNG and libpng (>= 1.6.32, I think) have direct + // support for Exif chunks. Older versions don't support it, and I'm not +@@ -698,6 +708,21 @@ write_info(png_structp& sp, png_infop& ip, int& color_type, ImageSpec& spec, + (png_uint_32)(yres * scale), unittype); + } + ++#ifdef PNG_cICP_SUPPORTED ++ const ParamValue* p = spec.find_attribute(CICP_ATTR, ++ TypeDesc(TypeDesc::INT, 4)); ++ if (p) { ++ const int* int_vals = static_cast(p->data()); ++ png_byte vals[4]; ++ for (int i = 0; i < 4; ++i) ++ vals[i] = static_cast(int_vals[i]); ++ if (setjmp(png_jmpbuf(sp))) // NOLINT(cert-err52-cpp) ++ return "Could not set PNG cICP chunk"; ++ // libpng will only write the chunk if the third byte is 0 ++ png_set_cICP(sp, ip, vals[0], vals[1], (png_byte)0, vals[3]); ++ } ++#endif ++ + #ifdef PNG_eXIf_SUPPORTED + std::vector exifBlob; + encode_exif(spec, exifBlob, endian::big); +diff --git a/src/png.imageio/pnginput.cpp b/src/png.imageio/pnginput.cpp +index 4947b3b6a..085448e24 100644 +--- a/src/png.imageio/pnginput.cpp ++++ b/src/png.imageio/pnginput.cpp +@@ -18,7 +18,11 @@ public: + const char* format_name(void) const override { return "png"; } + int supports(string_view feature) const override + { +- return (feature == "ioproxy" || feature == "exif"); ++ return (feature == "ioproxy" || feature == "exif" ++#ifdef PNG_cICP_SUPPORTED ++ || feature == "cicp" ++#endif ++ ); + } + bool valid_file(Filesystem::IOProxy* ioproxy) const override; + bool open(const std::string& name, ImageSpec& newspec) override; +diff --git a/src/png.imageio/pngoutput.cpp b/src/png.imageio/pngoutput.cpp +index 1b5c2c385..00e11947c 100644 +--- a/src/png.imageio/pngoutput.cpp ++++ b/src/png.imageio/pngoutput.cpp +@@ -24,6 +24,9 @@ public: + return (feature == "alpha" || feature == "ioproxy" + #ifdef PNG_eXIf_SUPPORTED + || feature == "exif" ++#endif ++#ifdef PNG_cICP_SUPPORTED ++ || feature == "cicp" + #endif + ); + } diff --git a/build_files/build_environment/patches/openjpeg_msvc.diff b/build_files/build_environment/patches/openjpeg_msvc.diff deleted file mode 100644 index e7aa76f0faa..00000000000 --- a/build_files/build_environment/patches/openjpeg_msvc.diff +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/lib/openjp2/ht_dec.c b/src/lib/openjp2/ht_dec.c -index 1eb4d525..e2f3afd6 100644 ---- a/src/lib/openjp2/ht_dec.c -+++ b/src/lib/openjp2/ht_dec.c -@@ -69,7 +69,7 @@ static OPJ_BOOL only_cleanup_pass_is_decoded = OPJ_FALSE; - static INLINE - OPJ_UINT32 population_count(OPJ_UINT32 val) - { --#ifdef OPJ_COMPILER_MSVC -+#if defined(OPJ_COMPILER_MSVC) && (defined(_M_IX86) || defined(_M_AMD64)) - return (OPJ_UINT32)__popcnt(val); - #elif (defined OPJ_COMPILER_GNUC) - return (OPJ_UINT32)__builtin_popcount(val); diff --git a/build_files/build_environment/patches/unifiedruntime.diff b/build_files/build_environment/patches/unifiedruntime.diff index 84571cd6476..0536fcb7a67 100644 --- a/build_files/build_environment/patches/unifiedruntime.diff +++ b/build_files/build_environment/patches/unifiedruntime.diff @@ -35,10 +35,10 @@ index 6d0e10d..3c1f60e 100644 +# we are patching this dirirectly for Blender. \ No newline at end of file diff --git a/source/adapters/level_zero/CMakeLists.txt b/source/adapters/level_zero/CMakeLists.txt -index cb7e028..d3241fa 100644 +index 5bb5cf6..b457adf 100644 --- a/source/adapters/level_zero/CMakeLists.txt +++ b/source/adapters/level_zero/CMakeLists.txt -@@ -59,7 +59,7 @@ if(UR_BUILD_ADAPTER_L0) +@@ -58,7 +58,7 @@ if(UR_BUILD_ADAPTER_L0) # 'utils' target from 'level-zero-loader' includes path which is prefixed # in the source directory, this breaks the installation of 'utils' target. set_target_properties(utils PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "") @@ -47,7 +47,7 @@ index cb7e028..d3241fa 100644 EXPORT ${PROJECT_NAME}-targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -@@ -110,7 +110,6 @@ if(UR_BUILD_ADAPTER_L0) +@@ -109,7 +109,6 @@ if(UR_BUILD_ADAPTER_L0) ${PROJECT_NAME}::umf LevelZeroLoader LevelZeroLoader-Headers @@ -55,7 +55,7 @@ index cb7e028..d3241fa 100644 ) target_include_directories(ur_adapter_level_zero PRIVATE -@@ -206,7 +205,6 @@ if(UR_BUILD_ADAPTER_L0_V2) +@@ -211,7 +210,6 @@ if(UR_BUILD_ADAPTER_L0_V2) ${PROJECT_NAME}::umf LevelZeroLoader LevelZeroLoader-Headers @@ -87,15 +87,3 @@ index fb4c519..615b588 100644 #include #include #include -diff --git a/source/adapters/level_zero/image.cpp b/source/adapters/level_zero/image.cpp -index 8c205f5..217a185 100644 ---- a/source/adapters/level_zero/image.cpp -+++ b/source/adapters/level_zero/image.cpp -@@ -517,6 +517,7 @@ ur_result_t bindlessImagesCreateImpl(ur_context_handle_t hContext, - ZE2UR_CALL(zeContextMakeImageResident, - (hContext->ZeContext, hDevice->ZeDevice, ZeImage)); - } else if (MemAllocProperties.type == ZE_MEMORY_TYPE_DEVICE || -+ MemAllocProperties.type == ZE_MEMORY_TYPE_HOST || - MemAllocProperties.type == ZE_MEMORY_TYPE_SHARED) { - ZeStruct PitchedDesc; - PitchedDesc.ptr = reinterpret_cast(hImageMem); diff --git a/build_files/build_environment/patches/usd.diff b/build_files/build_environment/patches/usd.diff index 5b19ef5f00d..6ae97b66984 100644 --- a/build_files/build_environment/patches/usd.diff +++ b/build_files/build_environment/patches/usd.diff @@ -1,21 +1,8 @@ -diff --git a/cmake/defaults/Packages.cmake b/cmake/defaults/Packages.cmake -index 2bb1f30d0..adcc7422e 100644 ---- a/cmake/defaults/Packages.cmake -+++ b/cmake/defaults/Packages.cmake -@@ -152,7 +152,7 @@ endif() - - - # --TBB --find_package(TBB REQUIRED COMPONENTS tbb) -+find_package(TBB) - add_definitions(${TBB_DEFINITIONS}) - - # --math diff --git a/cmake/defaults/msvcdefaults.cmake b/cmake/defaults/msvcdefaults.cmake -index 0f7fb7ef6..a467341ed 100644 +index f5780c0db..9b5d5c68c 100644 --- a/cmake/defaults/msvcdefaults.cmake +++ b/cmake/defaults/msvcdefaults.cmake -@@ -140,9 +140,6 @@ _add_define("WIN32_LEAN_AND_MEAN") +@@ -126,9 +126,6 @@ _add_define("WIN32_LEAN_AND_MEAN") # for all translation units. set(_PXR_CXX_FLAGS "${_PXR_CXX_FLAGS} /bigobj") @@ -25,49 +12,11 @@ index 0f7fb7ef6..a467341ed 100644 # Enable multiprocessor builds. set(_PXR_CXX_FLAGS "${_PXR_CXX_FLAGS} /MP") set(_PXR_CXX_FLAGS "${_PXR_CXX_FLAGS} /Gm-") -diff --git a/pxr/base/arch/defines.h b/pxr/base/arch/defines.h -index cb6ad44c5..c6c1a604b 100644 ---- a/pxr/base/arch/defines.h -+++ b/pxr/base/arch/defines.h -@@ -49,7 +49,8 @@ - #if defined(i386) || defined(__i386__) || defined(__x86_64__) || \ - defined(_M_IX86) || defined(_M_X64) - #define ARCH_CPU_INTEL --#elif defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) -+#elif defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) || \ -+ defined(_M_ARM64) - #define ARCH_CPU_ARM - #endif - -@@ -57,7 +58,8 @@ - // Bits - // - --#if defined(__x86_64__) || defined(__aarch64__) || defined(_M_X64) -+#if defined(__x86_64__) || defined(__aarch64__) || defined(_M_X64) || \ -+ defined(_M_ARM64) - #define ARCH_BITS_64 - #else - #error "Unsupported architecture. x86_64 or ARM64 required." diff --git a/pxr/base/arch/timing.h b/pxr/base/arch/timing.h -index d78598a84..2f44a5f89 100644 +index 2907195c0..7f8c6097c 100644 --- a/pxr/base/arch/timing.h +++ b/pxr/base/arch/timing.h -@@ -69,7 +69,13 @@ ArchGetTickTime() - return __rdtsc(); - #elif defined (ARCH_CPU_ARM) - uint64_t result; -+ #if defined(ARCH_COMPILER_MSVC) -+ // MSVC does not support inline assembly on ARM64 platforms -+ // 0x5F02 == ARM64_CNTVCT - manually calculated value avoids -+ result = _ReadStatusReg(0x5F02); -+ #else - __asm __volatile("mrs %0, CNTVCT_EL0" : "=&r" (result)); -+ #endif - return result; - #else - #error Unknown architecture. -@@ -84,6 +90,10 @@ ArchGetTickTime() +@@ -77,6 +77,10 @@ ArchGetTickTime() inline uint64_t ArchGetStartTickTime() { @@ -76,9 +25,9 @@ index d78598a84..2f44a5f89 100644 + +#if 0 uint64_t t; - #if defined (ARCH_OS_DARWIN) - return ArchGetTickTime(); -@@ -116,6 +126,7 @@ ArchGetStartTickTime() + #if defined (ARCH_OS_DARWIN) || defined(ARCH_OS_WASM_VM) || \ + (defined (ARCH_CPU_ARM) && defined (ARCH_COMPILER_MSVC)) +@@ -110,6 +114,7 @@ ArchGetStartTickTime() #error "Unsupported architecture." #endif return t; @@ -86,7 +35,7 @@ index d78598a84..2f44a5f89 100644 } /// Get a "stop" tick time for measuring an interval of time. See -@@ -125,6 +136,10 @@ ArchGetStartTickTime() +@@ -119,6 +124,10 @@ ArchGetStartTickTime() inline uint64_t ArchGetStopTickTime() { @@ -95,9 +44,9 @@ index d78598a84..2f44a5f89 100644 + +#if 0 uint64_t t; - #if defined (ARCH_OS_DARWIN) - return ArchGetTickTime(); -@@ -155,11 +170,11 @@ ArchGetStopTickTime() + #if defined (ARCH_OS_DARWIN) || defined(ARCH_OS_WASM_VM) || \ + (defined (ARCH_CPU_ARM) && defined (ARCH_COMPILER_MSVC)) +@@ -150,11 +159,11 @@ ArchGetStopTickTime() #error "Unsupported architecture." #endif return t; @@ -113,7 +62,7 @@ index d78598a84..2f44a5f89 100644 /// A simple timer class for measuring an interval of time using the /// ArchTickTimer facilities. diff --git a/pxr/imaging/hioOpenVDB/CMakeLists.txt b/pxr/imaging/hioOpenVDB/CMakeLists.txt -index e32762cea..d2c08d3da 100644 +index c94b63c5a..b3bcae4eb 100644 --- a/pxr/imaging/hioOpenVDB/CMakeLists.txt +++ b/pxr/imaging/hioOpenVDB/CMakeLists.txt @@ -20,6 +20,12 @@ else() @@ -143,10 +92,10 @@ index 53c026689..e99a5ac17 100644 ) diff --git a/cmake/macros/Private.cmake b/cmake/macros/Private.cmake -index f0bc34ed8..c39db4bc4 100644 +index 6fe1134c1..1d6586fff 100644 --- a/cmake/macros/Private.cmake +++ b/cmake/macros/Private.cmake -@@ -979,7 +979,7 @@ function(_pxr_python_module NAME) +@@ -992,7 +992,7 @@ function(_pxr_python_module NAME) return() endif() diff --git a/build_files/build_environment/patches/usd_3243.diff b/build_files/build_environment/patches/usd_3243.diff deleted file mode 100644 index 6e9e6a2b363..00000000000 --- a/build_files/build_environment/patches/usd_3243.diff +++ /dev/null @@ -1,70 +0,0 @@ -diff --git a/pxr/usd/usdMtlx/reader.cpp b/pxr/usd/usdMtlx/reader.cpp -index f04ab07ac1..aa4d1e65de 100644 ---- a/pxr/usd/usdMtlx/reader.cpp -+++ b/pxr/usd/usdMtlx/reader.cpp -@@ -9,6 +9,7 @@ - #include "pxr/usd/usdMtlx/reader.h" - #include "pxr/usd/usdMtlx/utils.h" - -+#include "pxr/usd/usdGeom/metrics.h" - #include "pxr/usd/usdGeom/primvar.h" - #include "pxr/usd/usdGeom/primvarsAPI.h" - #include "pxr/usd/usdShade/material.h" -@@ -740,11 +741,11 @@ _NodeGraphBuilder::Build(ShaderNamesByOutputName* outputs) - return UsdPrim(); - } - -- const bool isInsideNodeGraph = _mtlxContainer->isA(); -+ const bool isExplicitNodeGraph = _mtlxContainer->isA(); - - // Create the USD nodegraph. - UsdPrim usdPrim; -- if (isInsideNodeGraph) { -+ if (isExplicitNodeGraph) { - // Create the nodegraph. - auto usdNodeGraph = UsdShadeNodeGraph::Define(_usdStage, _usdPath); - if (!usdNodeGraph) { -@@ -769,7 +770,7 @@ _NodeGraphBuilder::Build(ShaderNamesByOutputName* outputs) - } - } - else { -- usdPrim = _usdStage->DefinePrim(_usdPath); -+ usdPrim = UsdShadeNodeGraph::Define(_usdStage, _usdPath).GetPrim(); - } - - // Build the graph of nodes. -@@ -783,19 +784,7 @@ _NodeGraphBuilder::Build(ShaderNamesByOutputName* outputs) - _AddNode(mtlxNode, usdPrim); - } - _ConnectNodes(); -- -- if (isInsideNodeGraph) { -- _ConnectTerminals(_mtlxContainer, UsdShadeConnectableAPI(usdPrim)); -- } -- else if (outputs) { -- // Collect the outputs on the existing shader nodes. -- for (mx::OutputPtr& mtlxOutput : -- _mtlxContainer->getChildrenOfType()) { -- if (auto nodeName = _Attr(mtlxOutput, names.nodename)) { -- (*outputs)[_Name(mtlxOutput)] = TfToken(nodeName); -- } -- } -- } -+ _ConnectTerminals(_mtlxContainer, UsdShadeConnectableAPI(usdPrim)); - - return usdPrim; - } -@@ -2623,6 +2612,13 @@ UsdMtlxRead( - // Translate all materials. - ReadMaterials(mtlxDoc, context); - -+ if (!mtlxDoc->getChildren().empty()) { -+ // This metadata is required to pass usdchecker -+ UsdGeomSetStageUpAxis(stage, UsdGeomGetFallbackUpAxis()); -+ UsdGeomSetStageMetersPerUnit(stage, UsdGeomLinearUnits::centimeters); -+ stage->SetDefaultPrim(stage->GetPrimAtPath(internalPath)); -+ } -+ - // If there are no looks then we're done. - if (mtlxDoc->getLooks().empty()) { - return; diff --git a/build_files/build_environment/patches/usd_3519.diff b/build_files/build_environment/patches/usd_3519.diff deleted file mode 100644 index 3ed4fa7ac92..00000000000 --- a/build_files/build_environment/patches/usd_3519.diff +++ /dev/null @@ -1,70 +0,0 @@ -commit 84c1a9f8e5a8c413dea56852894541f0cc28193b -Author: Brecht Van Lommel -Date: Tue Feb 4 23:33:50 2025 +0100 - - Fix Metal shader errors with MaterialX 1.39 - - * mx_microfacet.glsl uses functions from mx_math.metal, so the - latter must be included first. - * Defining atan(y, x) for GLSL compatibility conflicts with - mx_math.metal using ::atan(y_over_x). Work around this by tweaking - the definition. - * textureQueryLevels(u_envRadiance) does not take into account that - this texture is wrapped in a MetalTexture class. - - Signed-off-by: Brecht Van Lommel - -diff --git a/pxr/imaging/hdSt/materialXShaderGen.cpp b/pxr/imaging/hdSt/materialXShaderGen.cpp -index 58687a760..8345b6fb2 100644 ---- a/pxr/imaging/hdSt/materialXShaderGen.cpp -+++ b/pxr/imaging/hdSt/materialXShaderGen.cpp -@@ -447,8 +447,17 @@ HdStMaterialXShaderGen::_EmitMxInitFunction( - emitLine("u_envIrradiance = HdGetSampler_domeLightFallback()", mxStage); - emitLine("u_envRadiance = HdGetSampler_domeLightFallback()", mxStage); - emitLine("#endif", mxStage, false); -+ emitLine("u_envRadianceMips = textureQueryLevels(u_envRadiance)", mxStage); -+ } -+ else { -+ if (std::is_same_v) { -+ // Msl has this wrapped in a MetalTexture class -+ emitLine("u_envRadianceMips = textureQueryLevels(u_envRadiance.tex)", mxStage); -+ } -+ else { -+ emitLine("u_envRadianceMips = textureQueryLevels(u_envRadiance)", mxStage); -+ } - } -- emitLine("u_envRadianceMips = textureQueryLevels(u_envRadiance)", mxStage); - Base::emitLineBreak(mxStage); - - // Initialize MaterialX Texture samplers with HdGetSampler equivalents -@@ -1309,12 +1318,12 @@ HdStMaterialXShaderGenMsl::_EmitMxFunctions( - mx::GenContext& mxContext, - mx::ShaderStage& mxStage) const - { -- mx::ShaderGenerator::emitLibraryInclude( -- "pbrlib/" + mx::GlslShaderGenerator::TARGET -- + "/lib/mx_microfacet.glsl", mxContext, mxStage); - mx::ShaderGenerator::emitLibraryInclude( - "stdlib/" + mx::MslShaderGenerator::TARGET - + "/lib/mx_math.metal", mxContext, mxStage); -+ mx::ShaderGenerator::emitLibraryInclude( -+ "pbrlib/" + mx::GlslShaderGenerator::TARGET -+ + "/lib/mx_microfacet.glsl", mxContext, mxStage); - _EmitConstantsUniformsAndTypeDefs( - mxContext, mxStage,_syntax->getConstantQualifier()); - -diff --git a/pxr/imaging/hgiMetal/shaderGenerator.mm b/pxr/imaging/hgiMetal/shaderGenerator.mm -index f1db1beb1..6ace76999 100644 ---- a/pxr/imaging/hgiMetal/shaderGenerator.mm -+++ b/pxr/imaging/hgiMetal/shaderGenerator.mm -@@ -515,7 +515,9 @@ _ComputeHeader(id device, HgiShaderStage stage) - "template \n" - "T mod(T y, T x) { return fmod(y, x); }\n\n" - "template \n" -- "T atan(T y, T x) { return atan2(y, x); }\n\n" -+ "T atan(T y_over_x) { return ::atan(y_over_x); }\n\n" -+ "template \n" -+ "T atan(T y, T x) { return ::atan2(y, x); }\n\n" - "template \n" - "T bitfieldReverse(T x) { return reverse_bits(x); }\n\n" - "template \n" diff --git a/build_files/build_environment/patches/usd_3666_vulkan_amd.diff b/build_files/build_environment/patches/usd_3666_vulkan_amd.diff deleted file mode 100644 index dfd3b0a291f..00000000000 --- a/build_files/build_environment/patches/usd_3666_vulkan_amd.diff +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/pxr/imaging/hgiVulkan/computeCmds.cpp b/pxr/imaging/hgiVulkan/computeCmds.cpp -index cbf9704fd..74a81c787 100644 ---- a/pxr/imaging/hgiVulkan/computeCmds.cpp -+++ b/pxr/imaging/hgiVulkan/computeCmds.cpp -@@ -119,10 +119,11 @@ HgiVulkanComputeCmds::Dispatch(int dimX, int dimY) - // Determine device's num compute work group limits - const VkPhysicalDeviceLimits limits = - _hgi->GetCapabilities()->vkDeviceProperties.limits; -+ const uint32_t maxAllowedLimit = (1 << 31) - 1; - const GfVec3i maxNumWorkGroups = GfVec3i( -- limits.maxComputeWorkGroupCount[0], -- limits.maxComputeWorkGroupCount[1], -- limits.maxComputeWorkGroupCount[2]); -+ std::min(maxAllowedLimit, limits.maxComputeWorkGroupCount[0]), -+ std::min(maxAllowedLimit, limits.maxComputeWorkGroupCount[1]), -+ std::min(maxAllowedLimit, limits.maxComputeWorkGroupCount[2])); - - if (numWorkGroupsX > maxNumWorkGroups[0]) { - TF_WARN("Max number of work group available from device is %i, larger " diff --git a/build_files/build_environment/patches/usd_core_profile.diff b/build_files/build_environment/patches/usd_core_profile.diff index 45f8f5b9b33..6e8cbd11aa5 100644 --- a/build_files/build_environment/patches/usd_core_profile.diff +++ b/build_files/build_environment/patches/usd_core_profile.diff @@ -1,8 +1,8 @@ diff --git a/pxr/imaging/hdSt/indirectDrawBatch.cpp b/pxr/imaging/hdSt/indirectDrawBatch.cpp -index cdf400222f..e780d7343b 100644 +index 2b88b2f0f..0b036ffa2 100644 --- a/pxr/imaging/hdSt/indirectDrawBatch.cpp +++ b/pxr/imaging/hdSt/indirectDrawBatch.cpp -@@ -111,11 +111,17 @@ HdSt_IndirectDrawBatch::HdSt_IndirectDrawBatch( +@@ -94,11 +94,17 @@ HdSt_IndirectDrawBatch::HdSt_IndirectDrawBatch( , _instanceCountOffset(0) , _cullInstanceCountOffset(0) , _needsTextureResourceRebinding(false) @@ -21,7 +21,7 @@ index cdf400222f..e780d7343b 100644 /*virtual*/ void -@@ -1199,6 +1205,14 @@ HdSt_IndirectDrawBatch::_ExecuteDraw( +@@ -1182,6 +1188,14 @@ HdSt_IndirectDrawBatch::_ExecuteDraw( state.instancePrimvarBars); } @@ -36,7 +36,7 @@ index cdf400222f..e780d7343b 100644 state.BindResourcesForDrawing(renderPassState, *capabilities); HdSt_GeometricShaderSharedPtr geometricShader = state.geometricShader; -@@ -1455,6 +1469,15 @@ HdSt_IndirectDrawBatch::_ExecuteFrustumCull( +@@ -1438,6 +1452,15 @@ HdSt_IndirectDrawBatch::_ExecuteFrustumCull( cullingProgram.GetGeometricShader()); Hgi * hgi = resourceRegistry->GetHgi(); @@ -53,10 +53,10 @@ index cdf400222f..e780d7343b 100644 HgiGraphicsPipelineSharedPtr const & pso = _GetCullPipeline(resourceRegistry, diff --git a/pxr/imaging/hdSt/indirectDrawBatch.h b/pxr/imaging/hdSt/indirectDrawBatch.h -index 13da3917b0..84f013d310 100644 +index 2b4c9dafb..aad43302a 100644 --- a/pxr/imaging/hdSt/indirectDrawBatch.h +++ b/pxr/imaging/hdSt/indirectDrawBatch.h -@@ -201,6 +201,8 @@ class HdSt_IndirectDrawBatch : public HdSt_DrawBatch +@@ -184,6 +184,8 @@ private: int _cullInstanceCountOffset; bool _needsTextureResourceRebinding; @@ -66,10 +66,10 @@ index 13da3917b0..84f013d310 100644 diff --git a/pxr/imaging/hdSt/renderPassState.cpp b/pxr/imaging/hdSt/renderPassState.cpp -index 5c4d2fac07..908a49f310 100644 +index 76c44980d..730502a22 100644 --- a/pxr/imaging/hdSt/renderPassState.cpp +++ b/pxr/imaging/hdSt/renderPassState.cpp -@@ -760,7 +760,9 @@ HdStRenderPassState::Bind(HgiCapabilities const &hgiCapabilities) +@@ -776,7 +776,9 @@ HdStRenderPassState::Bind(HgiCapabilities const &hgiCapabilities) // If not using GL_MULTISAMPLE, use GL_POINT_SMOOTH to render points as // circles instead of square. // XXX Switch points rendering to emit quad with FS that draws circle. @@ -80,22 +80,24 @@ index 5c4d2fac07..908a49f310 100644 } } -@@ -804,7 +806,9 @@ HdStRenderPassState::Unbind(HgiCapabilities const &hgiCapabilities) +@@ -820,8 +822,10 @@ HdStRenderPassState::Unbind(HgiCapabilities const &hgiCapabilities) } glEnable(GL_MULTISAMPLE); - glDisable(GL_POINT_SMOOTH); +- glDisable(GL_POINT_SPRITE); + if (!hgiCapabilities.GetCoreProfile()) { + glDisable(GL_POINT_SMOOTH); ++ glDisable(GL_POINT_SPRITE); + } } void diff --git a/pxr/imaging/hgi/capabilities.h b/pxr/imaging/hgi/capabilities.h -index ae2ecb4e5b..c86afcb387 100644 +index b53197566..605e4d7ca 100644 --- a/pxr/imaging/hgi/capabilities.h +++ b/pxr/imaging/hgi/capabilities.h -@@ -52,6 +52,11 @@ class HgiCapabilities +@@ -35,6 +35,11 @@ public: HGI_API virtual int GetShaderVersion() const = 0; @@ -108,10 +110,10 @@ index ae2ecb4e5b..c86afcb387 100644 size_t GetMaxUniformBlockSize() const { return _maxUniformBlockSize; diff --git a/pxr/imaging/hgiGL/blitCmds.cpp b/pxr/imaging/hgiGL/blitCmds.cpp -index ce62f41a51..20888a1109 100644 +index 46b2aa0fd..38e5fd4b1 100644 --- a/pxr/imaging/hgiGL/blitCmds.cpp +++ b/pxr/imaging/hgiGL/blitCmds.cpp -@@ -136,7 +136,7 @@ HgiGLBlitCmds::_Submit(Hgi* hgi, HgiSubmitWaitType wait) +@@ -119,7 +119,7 @@ HgiGLBlitCmds::_Submit(Hgi* hgi, HgiSubmitWaitType wait) // Capture OpenGL state before executing the 'ops' and restore it when this // function ends. We do this defensively because parts of our pipeline may // not set and restore all relevant gl state. @@ -121,10 +123,10 @@ index ce62f41a51..20888a1109 100644 HgiGL* hgiGL = static_cast(hgi); HgiGLDevice* device = hgiGL->GetPrimaryDevice(); diff --git a/pxr/imaging/hgiGL/capabilities.cpp b/pxr/imaging/hgiGL/capabilities.cpp -index 920f9cdff4..9941bef7b2 100644 +index eaf70a477..dfd44f5fb 100644 --- a/pxr/imaging/hgiGL/capabilities.cpp +++ b/pxr/imaging/hgiGL/capabilities.cpp -@@ -57,6 +57,7 @@ static const int _DefaultMaxClipDistances = 8; +@@ -42,6 +42,7 @@ static const int _DefaultMaxClipDistances = 8; HgiGLCapabilities::HgiGLCapabilities() : _glVersion(0) , _glslVersion(_DefaultGLSLVersion) @@ -132,7 +134,7 @@ index 920f9cdff4..9941bef7b2 100644 { _LoadCapabilities(); } -@@ -131,6 +132,11 @@ HgiGLCapabilities::_LoadCapabilities() +@@ -117,6 +118,11 @@ HgiGLCapabilities::_LoadCapabilities() &uniformBufferOffsetAlignment); _uniformBufferOffsetAlignment = uniformBufferOffsetAlignment; } @@ -144,7 +146,7 @@ index 920f9cdff4..9941bef7b2 100644 if (_glVersion >= 430) { GLint maxShaderStorageBlockSize = 0; glGetIntegerv(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, -@@ -259,4 +265,9 @@ HgiGLCapabilities::GetShaderVersion() const { +@@ -250,4 +256,9 @@ HgiGLCapabilities::GetShaderVersion() const { return _glslVersion; } @@ -155,10 +157,10 @@ index 920f9cdff4..9941bef7b2 100644 + PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/hgiGL/capabilities.h b/pxr/imaging/hgiGL/capabilities.h -index 3c8f026426..2f25b44936 100644 +index 2ba137e95..64821ad27 100644 --- a/pxr/imaging/hgiGL/capabilities.h +++ b/pxr/imaging/hgiGL/capabilities.h -@@ -52,6 +52,9 @@ class HgiGLCapabilities final : public HgiCapabilities +@@ -35,6 +35,9 @@ public: HGIGL_API int GetShaderVersion() const override; @@ -168,7 +170,7 @@ index 3c8f026426..2f25b44936 100644 private: void _LoadCapabilities(); -@@ -60,6 +63,9 @@ class HgiGLCapabilities final : public HgiCapabilities +@@ -43,6 +46,9 @@ private: // GLSL version int _glslVersion; // 400, 410, ... @@ -179,10 +181,10 @@ index 3c8f026426..2f25b44936 100644 PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/hgiGL/graphicsCmds.cpp b/pxr/imaging/hgiGL/graphicsCmds.cpp -index 5e174165d7..e59ae3502f 100644 +index c22f2d75e..f6b724bb5 100644 --- a/pxr/imaging/hgiGL/graphicsCmds.cpp +++ b/pxr/imaging/hgiGL/graphicsCmds.cpp -@@ -249,7 +249,7 @@ HgiGLGraphicsCmds::_Submit(Hgi* hgi, HgiSubmitWaitType wait) +@@ -232,7 +232,7 @@ HgiGLGraphicsCmds::_Submit(Hgi* hgi, HgiSubmitWaitType wait) // Capture OpenGL state before executing the 'ops' and restore it when this // function ends. We do this defensively because parts of our pipeline may // not set and restore all relevant gl state. @@ -192,10 +194,10 @@ index 5e174165d7..e59ae3502f 100644 // Resolve multisample textures HgiGL* hgiGL = static_cast(hgi); diff --git a/pxr/imaging/hgiGL/graphicsPipeline.cpp b/pxr/imaging/hgiGL/graphicsPipeline.cpp -index 6983dd11e9..a1c7af754e 100644 +index 9704c6e11..6d864f398 100644 --- a/pxr/imaging/hgiGL/graphicsPipeline.cpp +++ b/pxr/imaging/hgiGL/graphicsPipeline.cpp -@@ -42,7 +42,12 @@ HgiGLGraphicsPipeline::HgiGLGraphicsPipeline( +@@ -25,7 +25,12 @@ HgiGLGraphicsPipeline::HgiGLGraphicsPipeline( { } @@ -209,7 +211,7 @@ index 6983dd11e9..a1c7af754e 100644 void HgiGLGraphicsPipeline::BindPipeline() -@@ -50,6 +55,7 @@ HgiGLGraphicsPipeline::BindPipeline() +@@ -33,6 +38,7 @@ HgiGLGraphicsPipeline::BindPipeline() if (_vao) { glBindVertexArray(0); glDeleteVertexArrays(1, &_vao); @@ -217,7 +219,7 @@ index 6983dd11e9..a1c7af754e 100644 } if (!_descriptor.vertexBuffers.empty()) { -@@ -108,6 +114,8 @@ HgiGLGraphicsPipeline::BindPipeline() +@@ -91,6 +97,8 @@ HgiGLGraphicsPipeline::BindPipeline() glBindVertexArray(_vao); } @@ -226,7 +228,7 @@ index 6983dd11e9..a1c7af754e 100644 // // Depth Stencil State // -@@ -172,7 +180,9 @@ HgiGLGraphicsPipeline::BindPipeline() +@@ -160,7 +168,9 @@ HgiGLGraphicsPipeline::BindPipeline() // If not using GL_MULTISAMPLE, use GL_POINT_SMOOTH to render points as // circles instead of square. // XXX Switch points rendering to emit quad with FS that draws circle. @@ -237,7 +239,7 @@ index 6983dd11e9..a1c7af754e 100644 } if (_descriptor.multiSampleState.alphaToCoverageEnable) { glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE); -@@ -207,7 +217,7 @@ HgiGLGraphicsPipeline::BindPipeline() +@@ -195,7 +205,7 @@ HgiGLGraphicsPipeline::BindPipeline() glFrontFace(GL_CCW); } @@ -247,10 +249,10 @@ index 6983dd11e9..a1c7af754e 100644 } diff --git a/pxr/imaging/hgiGL/scopedStateHolder.cpp b/pxr/imaging/hgiGL/scopedStateHolder.cpp -index 89cd0ac224..5c6575330b 100644 +index 28e31b12e..737a75dad 100644 --- a/pxr/imaging/hgiGL/scopedStateHolder.cpp +++ b/pxr/imaging/hgiGL/scopedStateHolder.cpp -@@ -26,6 +26,7 @@ +@@ -9,6 +9,7 @@ #include "pxr/imaging/hgiGL/scopedStateHolder.h" #include "pxr/imaging/hgiGL/conversions.h" #include "pxr/imaging/hgiGL/diagnostic.h" @@ -258,7 +260,7 @@ index 89cd0ac224..5c6575330b 100644 #include "pxr/base/trace/trace.h" #include "pxr/base/tf/diagnostic.h" -@@ -33,8 +34,10 @@ +@@ -16,8 +17,10 @@ PXR_NAMESPACE_OPEN_SCOPE @@ -271,7 +273,7 @@ index 89cd0ac224..5c6575330b 100644 , _restoreVao(0) , _restoreDepthTest(false) , _restoreDepthWriteMask(false) -@@ -115,7 +118,9 @@ HgiGL_ScopedStateHolder::HgiGL_ScopedStateHolder() +@@ -101,7 +104,9 @@ HgiGL_ScopedStateHolder::HgiGL_ScopedStateHolder() glGetBooleanv( GL_SAMPLE_ALPHA_TO_ONE, (GLboolean*)&_restoreSampleAlphaToOne); @@ -282,18 +284,20 @@ index 89cd0ac224..5c6575330b 100644 glGetBooleanv(GL_CULL_FACE, (GLboolean*)&_cullFace); glGetIntegerv(GL_CULL_FACE_MODE, &_cullMode); glGetIntegerv(GL_FRONT_FACE, &_frontFace); -@@ -139,7 +144,9 @@ HgiGL_ScopedStateHolder::HgiGL_ScopedStateHolder() +@@ -125,8 +130,10 @@ HgiGL_ScopedStateHolder::HgiGL_ScopedStateHolder() } glGetBooleanv(GL_MULTISAMPLE, (GLboolean*)&_restoreMultiSample); - glGetBooleanv(GL_POINT_SMOOTH, (GLboolean*)&_restorePointSmooth); +- glGetBooleanv(GL_POINT_SPRITE, (GLboolean*)&_restorePointSprite); + if (!_coreProfile) { + glGetBooleanv(GL_POINT_SMOOTH, (GLboolean*)&_restorePointSmooth); ++ glGetBooleanv(GL_POINT_SPRITE, (GLboolean*)&_restorePointSprite); + } - HGIGL_POST_PENDING_GL_ERRORS(); - #if defined(GL_KHR_debug) -@@ -235,7 +242,9 @@ HgiGL_ScopedStateHolder::~HgiGL_ScopedStateHolder() + glGetIntegerv(GL_UNPACK_ALIGNMENT, &_restoreUnpackAlignment); + glGetIntegerv(GL_PACK_ALIGNMENT, &_restorePackAlignment); +@@ -225,7 +232,9 @@ HgiGL_ScopedStateHolder::~HgiGL_ScopedStateHolder() _restoreViewport[2], _restoreViewport[3]); glBindVertexArray(_restoreVao); glBindRenderbuffer(GL_RENDERBUFFER, _restoreRenderBuffer); @@ -304,7 +308,7 @@ index 89cd0ac224..5c6575330b 100644 if (_cullFace) { glEnable(GL_CULL_FACE); } else { -@@ -285,10 +294,12 @@ HgiGL_ScopedStateHolder::~HgiGL_ScopedStateHolder() +@@ -275,10 +284,12 @@ HgiGL_ScopedStateHolder::~HgiGL_ScopedStateHolder() glDisable(GL_MULTISAMPLE); } @@ -320,12 +324,12 @@ index 89cd0ac224..5c6575330b 100644 + } } - static const GLuint samplers[8] = {0}; + if (_restorePointSprite) { diff --git a/pxr/imaging/hgiGL/scopedStateHolder.h b/pxr/imaging/hgiGL/scopedStateHolder.h -index d006480b9b..be6698e04c 100644 +index 4e76d5426..39de06111 100644 --- a/pxr/imaging/hgiGL/scopedStateHolder.h +++ b/pxr/imaging/hgiGL/scopedStateHolder.h -@@ -32,6 +32,7 @@ +@@ -15,6 +15,7 @@ PXR_NAMESPACE_OPEN_SCOPE @@ -333,7 +337,7 @@ index d006480b9b..be6698e04c 100644 /// \class HgiGLScopedStateHolder /// -@@ -50,7 +51,7 @@ class HgiGL_ScopedStateHolder final +@@ -33,7 +34,7 @@ class HgiGL_ScopedStateHolder final { public: HGIGL_API @@ -342,7 +346,7 @@ index d006480b9b..be6698e04c 100644 HGIGL_API ~HgiGL_ScopedStateHolder(); -@@ -59,6 +60,8 @@ class HgiGL_ScopedStateHolder final +@@ -42,6 +43,8 @@ private: HgiGL_ScopedStateHolder& operator=(const HgiGL_ScopedStateHolder&) = delete; HgiGL_ScopedStateHolder(const HgiGL_ScopedStateHolder&) = delete; @@ -352,26 +356,26 @@ index d006480b9b..be6698e04c 100644 int32_t _restoreVao; diff --git a/pxr/imaging/hgiInterop/opengl.cpp b/pxr/imaging/hgiInterop/opengl.cpp -index 95736721f1..4f970ed608 100644 +index 36bc59bdf..672b9b044 100644 --- a/pxr/imaging/hgiInterop/opengl.cpp +++ b/pxr/imaging/hgiInterop/opengl.cpp -@@ -110,6 +110,7 @@ HgiInteropOpenGL::HgiInteropOpenGL() +@@ -93,6 +93,7 @@ HgiInteropOpenGL::HgiInteropOpenGL() , _fsDepth(0) , _prgNoDepth(0) , _prgDepth(0) + , _vao(0) , _vertexBuffer(0) { - _vs = _CompileShader(_vertexFullscreen, GL_VERTEX_SHADER); -@@ -117,6 +118,7 @@ HgiInteropOpenGL::HgiInteropOpenGL() - _fsDepth = _CompileShader(_fragmentDepthFullscreen, GL_FRAGMENT_SHADER); + _vs = _CompileShader(_vertexFullscreen120, GL_VERTEX_SHADER); +@@ -100,6 +101,7 @@ HgiInteropOpenGL::HgiInteropOpenGL() + _fsDepth = _CompileShader(_fragmentDepthFullscreen120, GL_FRAGMENT_SHADER); _prgNoDepth = _LinkProgram(_vs, _fsNoDepth); _prgDepth = _LinkProgram(_vs, _fsDepth); + glCreateVertexArrays(1, &_vao); _vertexBuffer = _CreateVertexBuffer(); TF_VERIFY(glGetError() == GL_NO_ERROR); } -@@ -129,6 +131,7 @@ HgiInteropOpenGL::~HgiInteropOpenGL() +@@ -112,6 +114,7 @@ HgiInteropOpenGL::~HgiInteropOpenGL() glDeleteProgram(_prgNoDepth); glDeleteProgram(_prgDepth); glDeleteBuffers(1, &_vertexBuffer); @@ -379,7 +383,7 @@ index 95736721f1..4f970ed608 100644 TF_VERIFY(glGetError() == GL_NO_ERROR); } -@@ -202,10 +205,13 @@ HgiInteropOpenGL::CompositeToInterop( +@@ -185,10 +188,13 @@ HgiInteropOpenGL::CompositeToInterop( } // Get the current array buffer binding state @@ -393,7 +397,7 @@ index 95736721f1..4f970ed608 100644 const GLint locPosition = glGetAttribLocation(prg, "position"); glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer); glVertexAttribPointer(locPosition, 4, GL_FLOAT, GL_FALSE, -@@ -271,6 +277,7 @@ HgiInteropOpenGL::CompositeToInterop( +@@ -254,6 +260,7 @@ HgiInteropOpenGL::CompositeToInterop( glDisableVertexAttribArray(locPosition); glDisableVertexAttribArray(locUv); glBindBuffer(GL_ARRAY_BUFFER, restoreArrayBuffer); @@ -402,10 +406,10 @@ index 95736721f1..4f970ed608 100644 if (!blendEnabled) { glDisable(GL_BLEND); diff --git a/pxr/imaging/hgiInterop/opengl.h b/pxr/imaging/hgiInterop/opengl.h -index 18840a92bd..27434ac36f 100644 +index b0dd64a71..5cd1bad95 100644 --- a/pxr/imaging/hgiInterop/opengl.h +++ b/pxr/imaging/hgiInterop/opengl.h -@@ -62,6 +62,7 @@ class HgiInteropOpenGL final +@@ -45,6 +45,7 @@ private: uint32_t _fsDepth; uint32_t _prgNoDepth; uint32_t _prgDepth; diff --git a/build_files/build_environment/patches/usd_ctor.diff b/build_files/build_environment/patches/usd_ctor.diff index e08544fab29..7765738a244 100644 --- a/build_files/build_environment/patches/usd_ctor.diff +++ b/build_files/build_environment/patches/usd_ctor.diff @@ -1,5 +1,5 @@ diff --git a/pxr/base/arch/attributes.cpp b/pxr/base/arch/attributes.cpp -index 1309d6f..de65e99 100644 +index 1309d6f24..b65893b9c 100644 --- a/pxr/base/arch/attributes.cpp +++ b/pxr/base/arch/attributes.cpp @@ -187,7 +187,7 @@ AddImage(const struct mach_header* mh, intptr_t slide) @@ -39,50 +39,50 @@ index 1309d6f..de65e99 100644 if (entries[i].function && entries[i].version == static_cast(PXR_VERSION)) { diff --git a/pxr/base/arch/attributes.h b/pxr/base/arch/attributes.h -index 1d2820d..424e060 100644 +index ea7afe825..b38375ad0 100644 --- a/pxr/base/arch/attributes.h +++ b/pxr/base/arch/attributes.h -@@ -225,22 +225,22 @@ struct Arch_ConstructorEntry { +@@ -219,22 +219,22 @@ struct Arch_ConstructorEntry { unsigned int priority:8; // Priority of function }; -// Emit a Arch_ConstructorEntry in the __Data,pxrctor section. +// Emit a Arch_ConstructorEntry in the __Data,pxbctor section. - # define ARCH_CONSTRUCTOR(_name, _priority, ...) \ - static void _name(__VA_ARGS__); \ + # define ARCH_CONSTRUCTOR(_name, _priority) \ + static void _name(); \ static const Arch_ConstructorEntry _ARCH_CAT_NOEXPAND(arch_ctor_, _name) \ - __attribute__((used, section("__DATA,pxrctor"))) = { \ -+ __attribute__((used, section("__DATA,pxbctor"))) = { \ ++ __attribute__((used, section("__DATA,pxbctor"))) = { \ reinterpret_cast(&_name), \ static_cast(PXR_VERSION), \ _priority \ }; \ - static void _name(__VA_ARGS__) + static void _name() -// Emit a Arch_ConstructorEntry in the __Data,pxrdtor section. +// Emit a Arch_ConstructorEntry in the __Data,pxbdtor section. - # define ARCH_DESTRUCTOR(_name, _priority, ...) \ - static void _name(__VA_ARGS__); \ + # define ARCH_DESTRUCTOR(_name, _priority) \ + static void _name(); \ static const Arch_ConstructorEntry _ARCH_CAT_NOEXPAND(arch_dtor_, _name) \ - __attribute__((used, section("__DATA,pxrdtor"))) = { \ -+ __attribute__((used, section("__DATA,pxbdtor"))) = { \ ++ __attribute__((used, section("__DATA,pxbdtor"))) = { \ reinterpret_cast(&_name), \ static_cast(PXR_VERSION), \ _priority \ -@@ -252,10 +252,10 @@ struct Arch_ConstructorEntry { +@@ -246,10 +246,10 @@ struct Arch_ConstructorEntry { // The used attribute is required to prevent these apparently unused functions // from being removed by the linker. - # define ARCH_CONSTRUCTOR(_name, _priority, ...) \ + # define ARCH_CONSTRUCTOR(_name, _priority) \ - __attribute__((used, section(".pxrctor"), constructor((_priority) + 100))) \ + __attribute__((used, section(".pxbctor"), constructor((_priority) + 100))) \ - static void _name(__VA_ARGS__) - # define ARCH_DESTRUCTOR(_name, _priority, ...) \ + static void _name() + # define ARCH_DESTRUCTOR(_name, _priority) \ - __attribute__((used, section(".pxrdtor"), destructor((_priority) + 100))) \ + __attribute__((used, section(".pxbdtor"), destructor((_priority) + 100))) \ - static void _name(__VA_ARGS__) + static void _name() #elif defined(ARCH_OS_WINDOWS) -@@ -272,8 +272,8 @@ struct Arch_ConstructorEntry { +@@ -266,8 +266,8 @@ struct Arch_ConstructorEntry { }; // Declare the special sections. @@ -93,7 +93,7 @@ index 1d2820d..424e060 100644 // Objects of this type run the ARCH_CONSTRUCTOR and ARCH_DESTRUCTOR functions // for the library containing the object in the c'tor and d'tor, respectively. -@@ -283,14 +283,14 @@ struct Arch_ConstructorInit { +@@ -277,14 +277,14 @@ struct Arch_ConstructorInit { ARCH_API ~Arch_ConstructorInit(); }; @@ -102,25 +102,25 @@ index 1d2820d..424e060 100644 // extern are to convince the compiler and linker to leave the object in the // final library/executable instead of stripping it out. In clang/gcc we use // __attribute__((used)) to do that. - # define ARCH_CONSTRUCTOR(_name, _priority, ...) \ - static void _name(__VA_ARGS__); \ + # define ARCH_CONSTRUCTOR(_name, _priority) \ + static void _name(); \ namespace { \ - __declspec(allocate(".pxrctor")) \ -+ __declspec(allocate(".pxbctor")) \ ++ __declspec(allocate(".pxbctor")) \ extern const Arch_ConstructorEntry \ _ARCH_CAT_NOEXPAND(arch_ctor_, _name) = { \ reinterpret_cast(&_name), \ -@@ -301,11 +301,11 @@ struct Arch_ConstructorInit { +@@ -295,11 +295,11 @@ struct Arch_ConstructorInit { _ARCH_ENSURE_PER_LIB_INIT(Arch_ConstructorInit, _archCtorInit); \ - static void _name(__VA_ARGS__) + static void _name() - // Emit a Arch_ConstructorEntry in the .pxrdtor section. + // Emit a Arch_ConstructorEntry in the .pxbdtor section. - # define ARCH_DESTRUCTOR(_name, _priority, ...) \ - static void _name(__VA_ARGS__); \ + # define ARCH_DESTRUCTOR(_name, _priority) \ + static void _name(); \ namespace { \ - __declspec(allocate(".pxrdtor")) \ -+ __declspec(allocate(".pxbdtor")) \ ++ __declspec(allocate(".pxbdtor")) \ extern const Arch_ConstructorEntry \ _ARCH_CAT_NOEXPAND(arch_dtor_, _name) = { \ reinterpret_cast(&_name), \ diff --git a/build_files/build_environment/patches/usd_forward_compat.diff b/build_files/build_environment/patches/usd_forward_compat.diff deleted file mode 100644 index 9cc81dfe1c5..00000000000 --- a/build_files/build_environment/patches/usd_forward_compat.diff +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/pxr/usd/usd/crateFile.cpp b/pxr/usd/usd/crateFile.cpp -index 55c6d71e1..5d0fcbcfa 100644 ---- a/pxr/usd/usd/crateFile.cpp -+++ b/pxr/usd/usd/crateFile.cpp -@@ -102,7 +102,8 @@ TF_REGISTRY_FUNCTION(TfType) { - TfType::Define(); - } - --#define DEFAULT_NEW_VERSION "0.10.0" -+// BLENDER: Keep USD files forward compatible for longer. -+#define DEFAULT_NEW_VERSION "0.9.0" - TF_DEFINE_ENV_SETTING( - USD_WRITE_NEW_USDC_FILES_AS_VERSION, DEFAULT_NEW_VERSION, - "When writing new Usd Crate files, write them as this version. " diff --git a/build_files/build_environment/patches/usd_no_vulkan_sdk.diff b/build_files/build_environment/patches/usd_no_vulkan_sdk.diff index fa0565232f7..54d2280589a 100644 --- a/build_files/build_environment/patches/usd_no_vulkan_sdk.diff +++ b/build_files/build_environment/patches/usd_no_vulkan_sdk.diff @@ -23,16 +23,14 @@ https://github.com/PixarAnimationStudios/OpenUSD/pull/3603 15 files changed, 305 insertions(+), 98 deletions(-) create mode 100644 cmake/modules/FindShaderC.cmake create mode 100644 cmake/modules/FindSpirvReflect.cmake - delete mode 100644 pxr/imaging/hgiVulkan/spirv_reflect.cpp - delete mode 100644 pxr/imaging/hgiVulkan/spirv_reflect.h delete mode 100644 pxr/imaging/hgiVulkan/vk_mem_alloc.cpp delete mode 100644 pxr/imaging/hgiVulkan/vk_mem_alloc.h diff --git a/cmake/defaults/Packages.cmake b/cmake/defaults/Packages.cmake -index 4e9066ca3a..0a929fda3b 100644 +index 0112058e5..501a0e481 100644 --- a/cmake/defaults/Packages.cmake +++ b/cmake/defaults/Packages.cmake -@@ -187,38 +187,59 @@ if (PXR_BUILD_IMAGING) +@@ -188,38 +188,56 @@ if (PXR_BUILD_IMAGING) endif() if (PXR_ENABLE_VULKAN_SUPPORT) message(STATUS "Enabling experimental feature Vulkan support") @@ -44,27 +42,7 @@ index 4e9066ca3a..0a929fda3b 100644 - include_directories(BEFORE SYSTEM $ENV{VULKAN_SDK} $ENV{VULKAN_SDK}/include $ENV{VULKAN_SDK}/lib $ENV{VULKAN_SDK}/source) - set(ENV{PATH} "$ENV{VULKAN_SDK}:$ENV{VULKAN_SDK}/include:$ENV{VULKAN_SDK}/lib:$ENV{VULKAN_SDK}/source:$ENV{PATH}") - find_package(Vulkan REQUIRED) -+ -+ if (DEFINED ENV{VULKAN_SDK}) -+ message(STATUS "Using Vulkan components from: \"$ENV{VULKAN_SDK}\"") -+ # Not using usd_build.py: find from the Vulkan SDK -+ find_package(Vulkan MODULE REQUIRED COMPONENTS shaderc_combined) -+ -+ # The SDK uniquely places the "vk_mem_alloc.h" header inside a "vma" -+ # subdirectory. This means we would need to use "#include " -+ # only for the SDK build. Instead of forcing non-SDK users to create -+ # this path, we'll add a another include directory for the SDK build. -+ # That way "#include " should work for everyone. -+ target_include_directories(Vulkan::Vulkan INTERFACE -+ "${Vulkan_INCLUDE_DIR}/vma") -+ - list(APPEND VULKAN_LIBS Vulkan::Vulkan) -+ list(APPEND VULKAN_LIBS Vulkan::shaderc_combined) -+ else() -+ message(STATUS "Using locally built Vulkan components") -+ # Using usd_build.py: find individual components -+ find_package(VulkanHeaders CONFIG REQUIRED) -+ list(APPEND VULKAN_LIBS Vulkan::Headers) +- list(APPEND VULKAN_LIBS Vulkan::Vulkan) - # Find the extra vulkan libraries we need - set(EXTRA_VULKAN_LIBS shaderc_combined) @@ -75,7 +53,13 @@ index 4e9066ca3a..0a929fda3b 100644 - find_library("${EXTRA_LIBRARY}_PATH" NAMES "${EXTRA_LIBRARY}" PATHS $ENV{VULKAN_SDK}/lib) - list(APPEND VULKAN_LIBS "${${EXTRA_LIBRARY}_PATH}") - endforeach() -- ++ # We use BUILD_LOCAL_INTERFACE so that the Vulkan dependencies remain ++ # internal only. Except for the headers, which are publicly accessible ++ # from hgiVulkan. ++ if (DEFINED ENV{VULKAN_SDK}) ++ message(STATUS "Using Vulkan components from: \"$ENV{VULKAN_SDK}\"") ++ set(PXR_USING_VULKAN_SDK ON) # for pxrConfig.cmake + - # Find the OS specific libs we need - if (UNIX AND NOT APPLE) - find_package(X11 REQUIRED) @@ -83,36 +67,47 @@ index 4e9066ca3a..0a929fda3b 100644 - elseif (WIN32) - # No extra libs required - endif() ++ # Not using usd_build.py: find from the Vulkan SDK ++ find_package(Vulkan MODULE REQUIRED COMPONENTS shaderc_combined) + +- add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED) ++ list(APPEND VULKAN_LIBS Vulkan::Headers) ++ # The SDK uniquely places the "vk_mem_alloc.h" header inside a "vma" ++ # subdirectory. This means we would need to use "#include " ++ # only for the SDK build. Instead of forcing non-SDK users to create ++ # this path, we'll add a another include directory for the SDK build. ++ # That way "#include " should work for everyone. ++ target_include_directories(Vulkan::Headers INTERFACE ++ "${Vulkan_INCLUDE_DIR}/vma") ++ ++ list(APPEND VULKAN_LIBS $) ++ list(APPEND VULKAN_LIBS $) + else() +- message(FATAL_ERROR "VULKAN_SDK not valid") ++ message(STATUS "Using locally built Vulkan components") ++ set(PXR_USING_VULKAN_SDK OFF) # for pxrConfig.cmake ++ ++ # Using usd_build.py: find individual components ++ find_package(VulkanHeaders CONFIG REQUIRED) ++ list(APPEND VULKAN_LIBS Vulkan::Headers) ++ + find_package(VulkanUtilityLibraries CONFIG REQUIRED) + list(APPEND VULKAN_LIBS Vulkan::UtilityHeaders) + + find_package(VulkanLoader CONFIG REQUIRED) -+ list(APPEND VULKAN_LIBS Vulkan::Loader) - -- add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED) ++ list(APPEND VULKAN_LIBS $) ++ + find_package(VulkanMemoryAllocator CONFIG REQUIRED) + list(APPEND VULKAN_LIBS GPUOpen::VulkanMemoryAllocator) + + find_package(ShaderC MODULE REQUIRED) -+ list(APPEND VULKAN_LIBS shaderc_combined) -+ endif() -+ -+ # In either case we have custom logic for SPIRV-Reflect -+ find_package(SpirvReflect MODULE REQUIRED) -+ if(SpirvReflect_IS_SOURCE_DEP) -+ # SPIRV-Reflect should not be installed nor exported -+ list(APPEND VULKAN_LIBS $) - else() -- message(FATAL_ERROR "VULKAN_SDK not valid") -+ list(APPEND VULKAN_LIBS spirv-reflect) ++ list(APPEND VULKAN_LIBS $) endif() + + # Find the OS specific libs we need + if (UNIX AND NOT APPLE) + find_package(X11 REQUIRED) -+ list(APPEND VULKAN_LIBS ${X11_LIBRARIES}) -+ elseif (WIN32) -+ # No extra libs required ++ list(APPEND VULKAN_LIBS $) + endif() + + add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED) @@ -120,7 +115,7 @@ index 4e9066ca3a..0a929fda3b 100644 # --Opensubdiv set(OPENSUBDIV_USE_GPU ${PXR_BUILD_GPU_SUPPORT}) diff --git a/cmake/macros/Private.cmake b/cmake/macros/Private.cmake -index 6fe1134c14..4629e5a03f 100644 +index 6fe1134c1..4629e5a03 100644 --- a/cmake/macros/Private.cmake +++ b/cmake/macros/Private.cmake @@ -823,6 +823,12 @@ function(_pxr_target_link_libraries NAME) @@ -138,7 +133,7 @@ index 6fe1134c14..4629e5a03f 100644 endif() diff --git a/cmake/modules/FindShaderC.cmake b/cmake/modules/FindShaderC.cmake new file mode 100644 -index 0000000000..4dffb19bcc +index 000000000..4dffb19bc --- /dev/null +++ b/cmake/modules/FindShaderC.cmake @@ -0,0 +1,41 @@ @@ -183,71 +178,11 @@ index 0000000000..4dffb19bcc + IMPORTED_CONFIGURATIONS "${found_configurations}") + endif() +endif() -diff --git a/cmake/modules/FindSpirvReflect.cmake b/cmake/modules/FindSpirvReflect.cmake -new file mode 100644 -index 0000000000..c563252b88 ---- /dev/null -+++ b/cmake/modules/FindSpirvReflect.cmake -@@ -0,0 +1,54 @@ -+include(FindPackageHandleStandardArgs) -+ -+set(vulkan_sdk_source_path_hints) -+set(vulkan_sdk_lib_path_hints) -+if (DEFINED ENV{VULKAN_SDK}) -+ list(APPEND vulkan_sdk_source_path_hints "$ENV{VULKAN_SDK}/source/SPIRV-Reflect") -+ list(APPEND vulkan_sdk_source_path_hints "$ENV{VULKAN_SDK}/include/SPIRV-Reflect") -+ list(APPEND vulkan_sdk_lib_path_hints "$ENV{VULKAN_SDK}/lib") -+endif() -+ -+find_path(spirv-reflect_INCLUDE_DIR "spirv_reflect.h" -+ HINTS ${vulkan_sdk_source_path_hints}) -+find_library(spirv-reflect_LIBRARY "spirv-reflect-static" -+ HINTS ${vulkan_sdk_lib_path_hints}) -+ -+# SPIRV-Reflect is distributed as a source and header file pair, -+# but can also be built as a static library. -+if (spirv-reflect_LIBRARY) -+ find_package_handle_standard_args(SpirvReflect DEFAULT_MSG -+ spirv-reflect_LIBRARY -+ spirv-reflect_INCLUDE_DIR) -+ -+ if (SpirvReflect_FOUND) -+ add_library(spirv-reflect STATIC IMPORTED) -+ set_target_properties(spirv-reflect PROPERTIES IMPORTED_LOCATION "${spirv-reflect_LIBRARY}") -+ target_include_directories(spirv-reflect INTERFACE "${spirv-reflect_INCLUDE_DIR}") -+ set(SpirvReflect_IS_SOURCE_DEP FALSE) -+ endif() -+else() -+ find_file(spirv-reflect_SOURCE "spirv_reflect.c" -+ HINTS ${vulkan_sdk_source_path_hints}) -+ find_package_handle_standard_args(SpirvReflect DEFAULT_MSG -+ spirv-reflect_SOURCE -+ spirv-reflect_INCLUDE_DIR) -+ -+ if (SpirvReflect_FOUND) -+ add_library(spirv-reflect STATIC) -+ target_sources(spirv-reflect PRIVATE "${spirv-reflect_SOURCE}") -+ target_include_directories(spirv-reflect PUBLIC "${spirv-reflect_INCLUDE_DIR}") -+ set_target_properties(spirv-reflect PROPERTIES -+ ARCHIVE_OUTPUT_DIRECTORY "third_party") -+ set(SpirvReflect_IS_SOURCE_DEP TRUE) -+ endif() -+endif() -+ -+if (SpirvReflect_FOUND AND NOT EXISTS "${spirv-reflect_INCLUDE_DIR}/include/spirv/unified1/spirv.h") -+ # Most probably not from the Vulkan SDK, so use a "system path." -+ # If installed from build_usd.py this will be found in the USD install path. -+ if (SpirvReflect_IS_SOURCE_DEP) -+ target_compile_definitions(spirv-reflect PUBLIC SPIRV_REFLECT_USE_SYSTEM_SPIRV_H) -+ else() -+ target_compile_definitions(spirv-reflect INTERFACE SPIRV_REFLECT_USE_SYSTEM_SPIRV_H) -+ endif() -+endif() diff --git a/pxr/imaging/hgiVulkan/CMakeLists.txt b/pxr/imaging/hgiVulkan/CMakeLists.txt -index 00ad754480..dff4754366 100644 +index e98893d3f..772c3edb6 100644 --- a/pxr/imaging/hgiVulkan/CMakeLists.txt +++ b/pxr/imaging/hgiVulkan/CMakeLists.txt -@@ -40,15 +40,11 @@ pxr_library(hgiVulkan +@@ -41,7 +41,6 @@ pxr_library(hgiVulkan shaderProgram shaderSection texture @@ -255,16 +190,8 @@ index 00ad754480..dff4754366 100644 PUBLIC_HEADERS api.h - vulkan.h - -- PRIVATE_CLASSES -- spirv_reflect -- - RESOURCE_FILES - plugInfo.json - ) diff --git a/pxr/imaging/hgiVulkan/device.cpp b/pxr/imaging/hgiVulkan/device.cpp -index 4e5a9627ad..5c0b70ddcb 100644 +index a1c44143a..28fb8d91b 100644 --- a/pxr/imaging/hgiVulkan/device.cpp +++ b/pxr/imaging/hgiVulkan/device.cpp @@ -11,10 +11,12 @@ @@ -281,7 +208,7 @@ index 4e5a9627ad..5c0b70ddcb 100644 PXR_NAMESPACE_OPEN_SCOPE -@@ -171,11 +173,9 @@ HgiVulkanDevice::HgiVulkanDevice(HgiVulkanInstance* instance) +@@ -179,11 +181,9 @@ HgiVulkanDevice::HgiVulkanDevice(HgiVulkanInstance* instance) // Allow certain buffers/images to have dedicated memory allocations to // improve performance on some GPUs. @@ -293,7 +220,7 @@ index 4e5a9627ad..5c0b70ddcb 100644 extensions.push_back(VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME); extensions.push_back(VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME); } -@@ -335,9 +335,16 @@ HgiVulkanDevice::HgiVulkanDevice(HgiVulkanInstance* instance) +@@ -400,9 +400,16 @@ HgiVulkanDevice::HgiVulkanDevice(HgiVulkanInstance* instance) allocatorInfo.instance = instance->GetVulkanInstance(); allocatorInfo.physicalDevice = _vkPhysicalDevice; allocatorInfo.device = _vkDevice; @@ -314,7 +241,7 @@ index 4e5a9627ad..5c0b70ddcb 100644 if (supportsMemExtension) { allocatorInfo.flags |= VMA_ALLOCATOR_CREATE_EXT_MEMORY_BUDGET_BIT; diff --git a/pxr/imaging/hgiVulkan/diagnostic.cpp b/pxr/imaging/hgiVulkan/diagnostic.cpp -index fb8d756d6d..455780e2c8 100644 +index fb8d756d6..455780e2c 100644 --- a/pxr/imaging/hgiVulkan/diagnostic.cpp +++ b/pxr/imaging/hgiVulkan/diagnostic.cpp @@ -274,4 +274,4 @@ HgiVulkanResultString(VkResult result) @@ -325,7 +252,7 @@ index fb8d756d6d..455780e2c8 100644 \ No newline at end of file +PXR_NAMESPACE_CLOSE_SCOPE diff --git a/pxr/imaging/hgiVulkan/sampler.cpp b/pxr/imaging/hgiVulkan/sampler.cpp -index e89235cd6f..01de3a85d0 100644 +index e89235cd6..01de3a85d 100644 --- a/pxr/imaging/hgiVulkan/sampler.cpp +++ b/pxr/imaging/hgiVulkan/sampler.cpp @@ -12,7 +12,8 @@ @@ -345,64 +272,6 @@ index e89235cd6f..01de3a85d0 100644 -PXR_NAMESPACE_CLOSE_SCOPE \ No newline at end of file +PXR_NAMESPACE_CLOSE_SCOPE -diff --git a/pxr/imaging/hgiVulkan/shaderCompiler.cpp b/pxr/imaging/hgiVulkan/shaderCompiler.cpp -index 333c2bf125..576b898a99 100644 ---- a/pxr/imaging/hgiVulkan/shaderCompiler.cpp -+++ b/pxr/imaging/hgiVulkan/shaderCompiler.cpp -@@ -10,9 +10,9 @@ - #include "pxr/imaging/hgiVulkan/device.h" - #include "pxr/imaging/hgiVulkan/diagnostic.h" - #include "pxr/imaging/hgiVulkan/shaderCompiler.h" --#include "pxr/imaging/hgiVulkan/spirv_reflect.h" - - #include -+#include - - #include - -@@ -278,4 +278,4 @@ HgiVulkanMakeDescriptorSetLayouts( - return layouts; - } - --PXR_NAMESPACE_CLOSE_SCOPE -\ No newline at end of file -+PXR_NAMESPACE_CLOSE_SCOPE -diff --git a/pxr/imaging/hgiVulkan/spirv_reflect.cpp b/pxr/imaging/hgiVulkan/spirv_reflect.cpp -deleted file mode 100644 -index b2862df17d..0000000000 ---- a/pxr/imaging/hgiVulkan/spirv_reflect.cpp -+++ /dev/null -@@ -1,9 +0,0 @@ --// --// Copyright 2023 Pixar --// --// Licensed under the terms set forth in the LICENSE.txt file available at --// https://openusd.org/license. --// --#include "pxr/imaging/hgiVulkan/spirv_reflect.h" -- --#include -diff --git a/pxr/imaging/hgiVulkan/spirv_reflect.h b/pxr/imaging/hgiVulkan/spirv_reflect.h -deleted file mode 100644 -index b2779079a5..0000000000 ---- a/pxr/imaging/hgiVulkan/spirv_reflect.h -+++ /dev/null -@@ -1,15 +0,0 @@ --// --// Copyright 2023 Pixar --// --// Licensed under the terms set forth in the LICENSE.txt file available at --// https://openusd.org/license. --// --#ifndef PXR_IMAGING_HGIVULKAN_SPIRV_REFLECT_H --#define PXR_IMAGING_HGIVULKAN_SPIRV_REFLECT_H -- --// This is an implementation of SPIRV-Reflect included --// from the Vulkan SDK. -- --#include -- --#endif diff --git a/pxr/imaging/hgiVulkan/vk_mem_alloc.cpp b/pxr/imaging/hgiVulkan/vk_mem_alloc.cpp deleted file mode 100644 index 8f47ddc85f..0000000000 @@ -441,12 +310,12 @@ index 48f5fceff2..0000000000 - -#endif diff --git a/pxr/imaging/hgiVulkan/vulkan.h b/pxr/imaging/hgiVulkan/vulkan.h -index 3ea215679f..7f28679328 100644 +index 2e8f59064..70b539211 100644 --- a/pxr/imaging/hgiVulkan/vulkan.h +++ b/pxr/imaging/hgiVulkan/vulkan.h -@@ -22,7 +22,11 @@ - - #include +@@ -35,7 +35,11 @@ + #define VK_EXTERNAL_MEMORY_HANDLE_AUTO 0 + #endif -#include "pxr/imaging/hgiVulkan/vk_mem_alloc.h" +#define VMA_STATIC_VULKAN_FUNCTIONS 1 @@ -457,97 +326,12 @@ index 3ea215679f..7f28679328 100644 // Use the default allocator (nullptr) inline VkAllocationCallbacks* - -From b8db3a3ed8dea771fdfa3103562f4f33976efd16 Mon Sep 17 00:00:00 2001 -From: Aleksi Sapon -Date: Tue, 22 Apr 2025 14:43:10 -0400 -Subject: [PATCH 2/2] Add Vulkan dependencies to pxrConfig.cmake - ---- - cmake/defaults/Packages.cmake | 29 +++++++++++++++-------------- - pxr/pxrConfig.cmake.in | 26 ++++++++++++++++++++++++++ - 2 files changed, 41 insertions(+), 14 deletions(-) - -diff --git a/cmake/defaults/Packages.cmake b/cmake/defaults/Packages.cmake -index 0a929fda3b..4d2658441e 100644 ---- a/cmake/defaults/Packages.cmake -+++ b/cmake/defaults/Packages.cmake -@@ -188,23 +188,31 @@ if (PXR_BUILD_IMAGING) - if (PXR_ENABLE_VULKAN_SUPPORT) - message(STATUS "Enabling experimental feature Vulkan support") - -+ # We use BUILD_LOCAL_INTERFACE so that the Vulkan dependencies remain -+ # internal only. Except for the headers, which are publicly accessible -+ # from hgiVulkan. - if (DEFINED ENV{VULKAN_SDK}) - message(STATUS "Using Vulkan components from: \"$ENV{VULKAN_SDK}\"") -+ set(PXR_USING_VULKAN_SDK ON) # for pxrConfig.cmake -+ - # Not using usd_build.py: find from the Vulkan SDK - find_package(Vulkan MODULE REQUIRED COMPONENTS shaderc_combined) - -+ list(APPEND VULKAN_LIBS Vulkan::Headers) - # The SDK uniquely places the "vk_mem_alloc.h" header inside a "vma" - # subdirectory. This means we would need to use "#include " - # only for the SDK build. Instead of forcing non-SDK users to create - # this path, we'll add a another include directory for the SDK build. - # That way "#include " should work for everyone. -- target_include_directories(Vulkan::Vulkan INTERFACE -+ target_include_directories(Vulkan::Headers INTERFACE - "${Vulkan_INCLUDE_DIR}/vma") - -- list(APPEND VULKAN_LIBS Vulkan::Vulkan) -- list(APPEND VULKAN_LIBS Vulkan::shaderc_combined) -+ list(APPEND VULKAN_LIBS $) -+ list(APPEND VULKAN_LIBS $) - else() - message(STATUS "Using locally built Vulkan components") -+ set(PXR_USING_VULKAN_SDK OFF) # for pxrConfig.cmake -+ - # Using usd_build.py: find individual components - find_package(VulkanHeaders CONFIG REQUIRED) - list(APPEND VULKAN_LIBS Vulkan::Headers) -@@ -213,30 +221,23 @@ if (PXR_BUILD_IMAGING) - list(APPEND VULKAN_LIBS Vulkan::UtilityHeaders) - - find_package(VulkanLoader CONFIG REQUIRED) -- list(APPEND VULKAN_LIBS Vulkan::Loader) -+ list(APPEND VULKAN_LIBS $) - - find_package(VulkanMemoryAllocator CONFIG REQUIRED) - list(APPEND VULKAN_LIBS GPUOpen::VulkanMemoryAllocator) - - find_package(ShaderC MODULE REQUIRED) -- list(APPEND VULKAN_LIBS shaderc_combined) -+ list(APPEND VULKAN_LIBS $) - endif() - - # In either case we have custom logic for SPIRV-Reflect - find_package(SpirvReflect MODULE REQUIRED) -- if(SpirvReflect_IS_SOURCE_DEP) -- # SPIRV-Reflect should not be installed nor exported -- list(APPEND VULKAN_LIBS $) -- else() -- list(APPEND VULKAN_LIBS spirv-reflect) -- endif() -+ list(APPEND VULKAN_LIBS $) - - # Find the OS specific libs we need - if (UNIX AND NOT APPLE) - find_package(X11 REQUIRED) -- list(APPEND VULKAN_LIBS ${X11_LIBRARIES}) -- elseif (WIN32) -- # No extra libs required -+ list(APPEND VULKAN_LIBS $) - endif() - - add_definitions(-DPXR_VULKAN_SUPPORT_ENABLED) diff --git a/pxr/pxrConfig.cmake.in b/pxr/pxrConfig.cmake.in -index a7e566bac2..07bd1ad412 100644 +index ae8d02c5c..7c88bb5e9 100644 --- a/pxr/pxrConfig.cmake.in +++ b/pxr/pxrConfig.cmake.in -@@ -90,6 +90,32 @@ if(@Imath_FOUND@) - find_dependency(Imath) +@@ -115,6 +115,32 @@ if(NOT "@PXR_WORK_IMPL_PACKAGE@" STREQUAL "") + find_dependency(@PXR_WORK_IMPL_PACKAGE@) endif() +if(@PXR_ENABLE_VULKAN_SUPPORT@) diff --git a/build_files/build_environment/patches/usd_noboost.diff b/build_files/build_environment/patches/usd_noboost.diff index 4150b1df136..12e16653450 100644 --- a/build_files/build_environment/patches/usd_noboost.diff +++ b/build_files/build_environment/patches/usd_noboost.diff @@ -1,11 +1,21 @@ ---- a/cmake/defaults/Packages.cmake 2025-01-22 08:14:27 -+++ b/cmake/defaults/Packages.cmake 2025-01-22 08:14:41 -@@ -20,7 +20,7 @@ +--- a/cmake/defaults/Packages.cmake 2025-08-20 13:06:07.093053300 -0700 ++++ b/cmake/defaults/Packages.cmake 2025-08-20 13:47:11.656614900 -0700 +@@ -20,18 +20,6 @@ find_package(Threads REQUIRED) set(PXR_THREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}") --if((PXR_ENABLE_PYTHON_SUPPORT AND PXR_USE_BOOST_PYTHON) OR PXR_ENABLE_OPENVDB_SUPPORT) -+if(PXR_ENABLE_PYTHON_SUPPORT AND PXR_USE_BOOST_PYTHON) - # Find Boost package before getting any boost specific components as we need to - # disable boost-provided cmake config, based on the boost version found. - find_package(Boost REQUIRED) +-if(PXR_ENABLE_OPENVDB_SUPPORT) +- # Find Boost package before getting any boost specific components as we need to +- # disable boost-provided cmake config, based on the boost version found. +- find_package(Boost REQUIRED) +- # If a user explicitly sets Boost_NO_BOOST_CMAKE to On, following will +- # disable the use of boost provided cmake config. +- option(Boost_NO_BOOST_CMAKE "Disable boost-provided cmake config" OFF) +- if (Boost_NO_BOOST_CMAKE) +- message(STATUS "Disabling boost-provided cmake config") +- endif() +-endif() +- + if(PXR_ENABLE_PYTHON_SUPPORT) + # 1--Python. + macro(setup_python_package package) diff --git a/build_files/build_environment/patches/usd_storm_vulkan.diff b/build_files/build_environment/patches/usd_storm_vulkan.diff index 37dd548a66d..b05ec80ed56 100644 --- a/build_files/build_environment/patches/usd_storm_vulkan.diff +++ b/build_files/build_environment/patches/usd_storm_vulkan.diff @@ -1,8 +1,8 @@ diff --git a/pxr/imaging/hdSt/renderDelegate.cpp b/pxr/imaging/hdSt/renderDelegate.cpp -index 2e34715d2..329933383 100644 +index 8e81f3804..b171ac540 100644 --- a/pxr/imaging/hdSt/renderDelegate.cpp +++ b/pxr/imaging/hdSt/renderDelegate.cpp -@@ -541,7 +541,10 @@ HdStRenderDelegate::CommitResources(HdChangeTracker *tracker) +@@ -549,7 +549,10 @@ HdStRenderDelegate::CommitResources(HdChangeTracker *tracker) bool HdStRenderDelegate::IsSupported() { diff --git a/build_files/build_environment/windows/nuke_embree.cmd b/build_files/build_environment/windows/nuke_embree.cmd index a8dec3fd906..55defc391d0 100644 --- a/build_files/build_environment/windows/nuke_embree.cmd +++ b/build_files/build_environment/windows/nuke_embree.cmd @@ -4,6 +4,6 @@ call nuke dpcpp call nuke vcintrinsics call nuke openclheaders call nuke icdloader -call nuke mp11 +call nuke emhash call nuke spirvheaders diff --git a/build_files/build_environment/windows/vmbuild.cmd.txt b/build_files/build_environment/windows/vmbuild.cmd.txt index 4b0635e2ba4..35563f32b7a 100644 --- a/build_files/build_environment/windows/vmbuild.cmd.txt +++ b/build_files/build_environment/windows/vmbuild.cmd.txt @@ -11,8 +11,8 @@ set CMAKE_GENERATOR_INSTANCE=c:\vs2019bt\ set CMAKE_GENERATOR=Visual Studio 16 2019 set NODEBUG= set TMPDIR=c:\t\ -set ROCM_PATH=c:\tools\hip -set HIP_PATH=c:\tools\hip +set ROCM_PATH=c:\tools\rocm\6.4 +set HIP_PATH=c:\tools\rocm\6.4 set PERL=c:\db\build\downloads\perl\perl\bin\perl.exe set path=%path%;c:\db\build\downloads\perl\perl\bin\; if not exist c:\db\ ( diff --git a/build_files/build_environment/windows/vmprep.cmd.txt b/build_files/build_environment/windows/vmprep.cmd.txt index cae03795d3f..9d69c15e846 100644 --- a/build_files/build_environment/windows/vmprep.cmd.txt +++ b/build_files/build_environment/windows/vmprep.cmd.txt @@ -28,7 +28,7 @@ echo # - Visual Studio 2010 X64 redist (required for the yaml binary) echo # - Git 2.38.0 echo # - CMake 3.31.7 echo # - Cuda 12.8.0 -echo # - HIP 6.3.42560 +echo # - HIP 6.4.50101 echo # echo # Additionally this will also create and populate the following folders : echo # @@ -105,10 +105,15 @@ echo ********************************************************************* mkdir c:\tools\cuda\12.8.0\ start /wait c:\install\cuda_12.8.0_571.96_windows.exe -echo Obtaining Hip SDK 6.3.42560-881c2d702 -curl https://gpuopen.com/download/hiprt/HIP_SDK_6.3.42560-881c2d702_update.zip -o c:\install\HIP_SDK_6.3.42560-881c2d702_update.zip -echo Installing Hip SDK 6.3.42560-881c2d702 -tar -zxvf c:\install\HIP_SDK_6.3.42560-881c2d702_update.zip -C c:\tools\ +echo Obtaining 7zr +curl https://www.7-zip.org/a/7zr.exe -o c:\install\7zr.exe + +echo Obtaining Hip SDK 6.4.50101-9a6572ae7 +curl https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-25.Q3-Win10-Win11-For-HIP.exe -o c:\install\AMD-Software-PRO-Edition-25.Q3-Win10-Win11-For-HIP.exe +c:\install\7zr.exe x C:\install\AMD-Software-PRO-Edition-25.Q3-Win10-Win11-For-HIP.exe -oC:\install\ +mkdir C:\tools\rocm +echo Installing Hip SDK 6.4.50101-9a6572ae7 +msiexec /i C:\install\Packages\Apps\ROCmSDKPackages\SDKCore\ROCm_SDK_Core.msi INSTALLDIR="C:\tools\rocm" echo Cloning Blender repository mkdir c:\blendergit diff --git a/build_files/cmake/Modules/FindRubberband.cmake b/build_files/cmake/Modules/FindRubberband.cmake new file mode 100644 index 00000000000..8a1ce2ca515 --- /dev/null +++ b/build_files/cmake/Modules/FindRubberband.cmake @@ -0,0 +1,63 @@ +# SPDX-FileCopyrightText: 2025 Blender Authors +# +# SPDX-License-Identifier: BSD-3-Clause + +# - Find Rubberband libraries +# Find the Rubberband includes and libraries +# This module defines +# RUBBERBAND_INCLUDE_DIRS, where to find Rubberband headers, Set when +# RUBBERBAND_INCLUDE_DIR is found. +# RUBBERBAND_LIBRARIES, libraries to link against to use Rubberband. +# RUBBERBAND_ROOT_DIR, The base directory to search for Rubberband. +# This can also be an environment variable. +# RUBBERBAND_FOUND, If false, do not try to use the Rubberband library. +# +# also defined, but not for general use are +# RUBBERBAND_LIBRARY, where to find the Rubberband library. + +if(DEFINED RUBBERBAND_ROOT_DIR) +elseif(DEFINED ENV{RUBBERBAND_ROOT_DIR}) + set(RUBBERBAND_ROOT_DIR $ENV{RUBBERBAND_ROOT_DIR}) +else() + set(RUBBERBAND_ROOT_DIR "") +endif() + +set(_rubberband_SEARCH_DIRS + ${RUBBERBAND_ROOT_DIR} +) + +find_path(RUBBERBAND_INCLUDE_DIR + NAMES + rubberband/RubberBandStretcher.h + HINTS + ${_rubberband_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +find_library(RUBBERBAND_LIBRARY + NAMES + rubberband + HINTS + ${_rubberband_SEARCH_DIRS} + PATH_SUFFIXES + lib lib64 +) + +# handle the QUIETLY and REQUIRED arguments and set RUBBERBAND_FOUND to TRUE if +# all listed variables are TRUE +find_package(PackageHandleStandardArgs) +find_package_handle_standard_args(Rubberband DEFAULT_MSG RUBBERBAND_LIBRARY RUBBERBAND_INCLUDE_DIR) + +if(RUBBERBAND_FOUND) + set(RUBBERBAND_LIBRARIES ${RUBBERBAND_LIBRARY}) + set(RUBBERBAND_INCLUDE_DIRS ${RUBBERBAND_INCLUDE_DIR}) +endif() + + +mark_as_advanced( + RUBBERBAND_LIBRARY + RUBBERBAND_INCLUDE_DIR +) + +unset(_rubberband_SEARCH_DIRS) diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 3e2b72c32fa..51f4912fb6f 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -158,13 +158,22 @@ find_package(OpenEXR REQUIRED) add_bundled_libraries(openexr/lib) add_bundled_libraries(imath/lib) +string(APPEND PLATFORM_CFLAGS " -pipe -funsigned-char -fno-strict-aliasing -ffp-contract=off") +set(PLATFORM_LINKFLAGS + "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa \ + -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework Metal \ + -framework QuartzCore" +) + if(WITH_CODEC_FFMPEG) set(FFMPEG_ROOT_DIR ${LIBDIR}/ffmpeg) set(FFMPEG_FIND_COMPONENTS - avcodec avdevice avformat avutil + avcodec avdevice avfilter avformat avutil mp3lame ogg opus swresample swscale theora theoradec theoraenc vorbis vorbisenc vorbisfile vpx x264) + # Frameworks required by libavfilter, using legacy macOS CGL + string(APPEND PLATFORM_LINKFLAGS " -framework CoreImage -framework OpenGL") if(EXISTS ${LIBDIR}/ffmpeg/lib/libaom.a) list(APPEND FFMPEG_FIND_COMPONENTS aom) endif() @@ -192,11 +201,6 @@ if(SYSTEMSTUBS_LIBRARY) list(APPEND PLATFORM_LINKLIBS SystemStubs) endif() -string(APPEND PLATFORM_CFLAGS " -pipe -funsigned-char -fno-strict-aliasing -ffp-contract=off") -set(PLATFORM_LINKFLAGS - "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework Metal -framework QuartzCore" -) - if(WITH_OPENIMAGEDENOISE) if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64") # OpenImageDenoise uses BNNS from the Accelerate framework. @@ -367,6 +371,10 @@ if(WITH_MANIFOLD) find_package(manifold REQUIRED) endif() +if(WITH_RUBBERBAND) + find_package(Rubberband REQUIRED) +endif() + if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING) find_package(openpgl QUIET) if(openpgl_FOUND) diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index ed9eea0a013..1ed58dc9de1 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -298,7 +298,7 @@ if(WITH_CODEC_FFMPEG) # Override FFMPEG components to also include static library dependencies # included with precompiled libraries, and to ensure correct link order. set(FFMPEG_FIND_COMPONENTS - avformat avcodec avdevice avutil swresample swscale + avformat avdevice avfilter avcodec avutil swresample swscale sndfile FLAC mp3lame @@ -588,6 +588,17 @@ if(WITH_MANIFOLD) mark_as_advanced(manifold_DIR) endif() +if(WITH_RUBBERBAND) + if(DEFINED LIBDIR) + find_package_wrapper(Rubberband) + else() + # Use system libs + find_package(PkgConfig) + pkg_check_modules(RUBBERBAND rubberband) + endif() + set_and_warn_library_found("Rubberband" RUBBERBAND_FOUND WITH_RUBBERBAND) +endif() + if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING) find_package_wrapper(openpgl) mark_as_advanced(openpgl_DIR) diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 94750d165b4..5bd727ca782 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -904,6 +904,15 @@ if(WITH_OPENSUBDIV) endif() endif() +if(WITH_RUBBERBAND) + set(RUBBERBAND_FOUND TRUE) + set(RUBBERBAND_INCLUDE_DIRS ${LIBDIR}/rubberband/include) + set(RUBBERBAND_LIBRARIES + optimized ${LIBDIR}/rubberband/lib/rubberband-static.lib + debug ${LIBDIR}/rubberband/lib/rubberband-static_d.lib + ) +endif() + if(WITH_SDL) set(SDL ${LIBDIR}/sdl) set(SDL_INCLUDE_DIR ${SDL}/include) @@ -1256,7 +1265,11 @@ if(WITH_HARU) set(HARU_FOUND ON) set(HARU_ROOT_DIR ${LIBDIR}/haru) set(HARU_INCLUDE_DIRS ${HARU_ROOT_DIR}/include) - set(HARU_LIBRARIES ${HARU_ROOT_DIR}/lib/libhpdfs.lib) + if(EXISTS ${HARU_ROOT_DIR}/lib/hpdf.lib) # blender 5.0+ + set(HARU_LIBRARIES ${HARU_ROOT_DIR}/lib/hpdf.lib) + else() + set(HARU_LIBRARIES ${HARU_ROOT_DIR}/lib/libhpdfs.lib) + endif() endif() if(WITH_VULKAN_BACKEND) diff --git a/extern/audaspace/blender_config.cmake b/extern/audaspace/blender_config.cmake index 981ca321bc8..57fed8880e5 100644 --- a/extern/audaspace/blender_config.cmake +++ b/extern/audaspace/blender_config.cmake @@ -14,7 +14,7 @@ if(DEFINED WITH_FFTW3 AND WITH_FFTW3) # "Build With FFTW" set(FFTW_LIBRARY ${FFTW3_LIBRARIES}) endif() set(WITH_LIBSNDFILE ${WITH_CODEC_SNDFILE}) # "Build With LibSndFile" -set(WITH_RUBBERBAND FALSE) # "Build With Rubber Band Library" +set(WITH_RUBBERBAND ${WITH_RUBBERBAND}) # "Build With Rubber Band Library" set(SEPARATE_C FALSE) # "Build C Binding as separate library" set(PLUGIN_COREAUDIO FALSE) # "Build CoreAudio Plugin" set(PLUGIN_FFMPEG FALSE) # "Build FFMPEG Plugin" diff --git a/intern/cycles/device/oneapi/device_impl.cpp b/intern/cycles/device/oneapi/device_impl.cpp index 8363cb8bb2f..ae9ecea8a64 100644 --- a/intern/cycles/device/oneapi/device_impl.cpp +++ b/intern/cycles/device/oneapi/device_impl.cpp @@ -1354,7 +1354,7 @@ static const int lowest_supported_driver_version_win = 1016554; * This information is returned by `ocloc query OCL_DRIVER_VERSION`. */ static const int lowest_supported_driver_version_neo = 31896; # else -static const int lowest_supported_driver_version_neo = 31740; +static const int lowest_supported_driver_version_neo = 34666; # endif int parse_driver_build_version(const sycl::device &device) diff --git a/lib/linux_x64 b/lib/linux_x64 index 728b8641b61..9897062edb2 160000 --- a/lib/linux_x64 +++ b/lib/linux_x64 @@ -1 +1 @@ -Subproject commit 728b8641b619d6a50c16bda281b76abe3c350640 +Subproject commit 9897062edb26dc1889eacb09d9022a76e7906afb diff --git a/lib/macos_arm64 b/lib/macos_arm64 index fb94c1b78bd..58078e56ac7 160000 --- a/lib/macos_arm64 +++ b/lib/macos_arm64 @@ -1 +1 @@ -Subproject commit fb94c1b78bd401c5eb03ebad94319b55095f88cc +Subproject commit 58078e56ac76301cdbf4552c6061b2d50e6ed146 diff --git a/lib/windows_arm64 b/lib/windows_arm64 index 5fba888df69..43203f73a3c 160000 --- a/lib/windows_arm64 +++ b/lib/windows_arm64 @@ -1 +1 @@ -Subproject commit 5fba888df69dc35270f65af769011a46c8de7a6f +Subproject commit 43203f73a3c11c6f6f38e755751133092f91da34 diff --git a/lib/windows_x64 b/lib/windows_x64 index d5a0d6a6592..72cdb679df0 160000 --- a/lib/windows_x64 +++ b/lib/windows_x64 @@ -1 +1 @@ -Subproject commit d5a0d6a659273fbc1691f481a27b4abde00b97a0 +Subproject commit 72cdb679df0b959267636be51282d7e7e9b0614f diff --git a/source/blender/io/grease_pencil/CMakeLists.txt b/source/blender/io/grease_pencil/CMakeLists.txt index 467ba7f2ea2..43c043b86c2 100644 --- a/source/blender/io/grease_pencil/CMakeLists.txt +++ b/source/blender/io/grease_pencil/CMakeLists.txt @@ -62,12 +62,8 @@ if(WITH_HARU) ${HARU_INCLUDE_DIRS} ) list(APPEND LIB - ${HARU_LIBRARIES} - - # Haru needs `TIFFFaxBlackCodes` & `TIFFFaxWhiteCodes` symbols from TIFF. - # Can be removed with Haru 2.4.0. They should be shipping with their own - # Fax codes defined by default from that version onward. - ${TIFF_LIBRARY} + PRIVATE ${HARU_LIBRARIES} + PRIVATE ${TIFF_LIBRARY} # needed for TIFFFaxBlackCodes in older (<5.0) lib folders ) add_definitions(-DWITH_HARU) endif() diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 334986b16c7..18fae0be564 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -1420,6 +1420,13 @@ elseif(WIN32) # Filenames change slightly between FFMPEG versions check both 6.0 and fallback to 5.0 # to ease the transition between versions. + if(EXISTS "${LIBDIR}/ffmpeg/lib/avfilter-10.dll") + windows_install_shared_manifest( + FILES + ${LIBDIR}/ffmpeg/lib/avfilter-10.dll + ALL + ) + endif() if(EXISTS "${LIBDIR}/ffmpeg/lib/avcodec-61.dll") windows_install_shared_manifest( FILES diff --git a/tests/files/sequence_editing/video_output/reference/video_output_p3_10bit_aces_mov.png b/tests/files/sequence_editing/video_output/reference/video_output_p3_10bit_aces_mov.png index 90dc2daf4e3..adbe9127b75 100644 --- a/tests/files/sequence_editing/video_output/reference/video_output_p3_10bit_aces_mov.png +++ b/tests/files/sequence_editing/video_output/reference/video_output_p3_10bit_aces_mov.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9a229fb9d356b657782d85eb894c2d05feeeb94cb35daed30244db8727a2dc5 -size 178637 +oid sha256:8cd2115d146f4ec59b189b0e6263f9d211d2489046057172792fbf4db8e6b72d +size 178781