Merge branch 'blender-v4.4-release'
This commit is contained in:
@@ -90,10 +90,9 @@ include(cmake/harfbuzz.cmake)
|
||||
if(NOT APPLE)
|
||||
include(cmake/xr_openxr.cmake)
|
||||
if(NOT BLENDER_PLATFORM_ARM)
|
||||
if(HIP_FOUND)
|
||||
# HIP-RT requires special SDK which is not widely available yet.
|
||||
if(NOT WIN32)
|
||||
include(cmake/hiprt.cmake)
|
||||
else()
|
||||
message(STATUS "Missing HIP compiler, skipping HIPRT build")
|
||||
endif()
|
||||
include(cmake/dpcpp.cmake)
|
||||
include(cmake/dpcpp_deps.cmake)
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
|
||||
message(STATUS "Found C Compiler: ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}")
|
||||
if(UNIX AND NOT APPLE)
|
||||
if(NOT CMAKE_COMPILER_IS_GNUCC OR NOT (CMAKE_C_COMPILER_VERSION MATCHES ${RELEASE_GCC_VERSION}))
|
||||
if(NOT CMAKE_COMPILER_IS_GNUCC OR NOT (CMAKE_C_COMPILER_VERSION MATCHES "${RELEASE_GCC_VERSION}.*"))
|
||||
message(STATUS " NOTE: Official releases uses GCC ${RELEASE_GCC_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "Found C++ Compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
if(UNIX AND NOT APPLE)
|
||||
if(NOT CMAKE_COMPILER_IS_GNUCC OR NOT (CMAKE_CXX_COMPILER_VERSION MATCHES ${RELEASE_GCC_VERSION}))
|
||||
if(NOT CMAKE_COMPILER_IS_GNUCC OR NOT (CMAKE_CXX_COMPILER_VERSION MATCHES "${RELEASE_GCC_VERSION}.*"))
|
||||
message(STATUS " NOTE: Official releases uses GCC ${RELEASE_GCC_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -24,19 +24,18 @@ if(NOT APPLE)
|
||||
message(STATUS "Missing CUDA compiler")
|
||||
else()
|
||||
message(STATUS "Found CUDA Compiler: ${CUDAToolkit_NVCC_EXECUTABLE} ${CUDAToolkit_VERSION}")
|
||||
if(NOT CUDAToolkit_VERSION MATCHES ${RELEASE_CUDA_VERSION})
|
||||
if(NOT CUDAToolkit_VERSION MATCHES "${RELEASE_CUDA_VERSION}.*")
|
||||
message(STATUS " NOTE: Official releases uses CUDA ${RELEASE_CUDA_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
unset(HIP_VERSION)
|
||||
find_package(HIP QUIET)
|
||||
if(NOT HIP_FOUND)
|
||||
message(STATUS "Missing HIP compiler")
|
||||
else()
|
||||
message(STATUS "Found HIP Compiler: ${HIP_HIPCC_EXECUTABLE} ${HIP_VERSION}")
|
||||
if(NOT HIP_VERSION MATCHES ${RELEASE_HIP_VERSION})
|
||||
if(NOT HIP_VERSION MATCHES "${RELEASE_HIP_VERSION}.*")
|
||||
message(STATUS " NOTE: Official releases uses HIP ${RELEASE_HIP_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -2,32 +2,34 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
if(NOT HIP_FOUND)
|
||||
message(STATUS "Missing HIP compiler, skipping HIPRT build")
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT HIP_VERSION MATCHES "${RELEASE_HIP_VERSION}.*")
|
||||
message(STATUS "Wrong HIP compiler version (expected ${RELEASE_HIP_VERSION}), skipping HIPRT build")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Note the utility apps may use png/tiff/gif system libraries, but the
|
||||
# library itself does not depend on them, so should give no problems.
|
||||
|
||||
get_filename_component(_hip_path ${HIP_HIPCC_EXECUTABLE} DIRECTORY)
|
||||
get_filename_component(_hip_path ${_hip_path} DIRECTORY)
|
||||
get_filename_component(_hip_bin_path ${HIP_HIPCC_EXECUTABLE} DIRECTORY)
|
||||
get_filename_component(_hip_path ${_hip_bin_path} DIRECTORY)
|
||||
|
||||
set(HIPRT_EXTRA_ARGS
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DHIP_PATH=${_hip_path}
|
||||
-DBITCODE=ON
|
||||
-DBITCODE=OFF
|
||||
-DGENERATE_BAKE_KERNEL=OFF
|
||||
-DNO_UNITTEST=ON
|
||||
-DBAKE_COMPILED_KERNEL=ON
|
||||
-DPRECOMPILE=ON
|
||||
-DPYTHON_EXECUTABLE=${PYTHON_BINARY}
|
||||
-DFORCE_DISABLE_CUDA=ON
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
# Windows is currently defaulting to HIP 5 for the buildbot and the
|
||||
# dependency build environment.
|
||||
list(APPEND HIPRT_EXTRA_ARGS -DHIPRT_PREFER_HIP_5=ON)
|
||||
else()
|
||||
# The Linux uses HIP 6 by default in those environments, but it had
|
||||
# -DHIPRT_PREFER_HIP_5=ON passed to the dependency builder in its
|
||||
# initial implementation. Force it to off so that incremental build
|
||||
# in the existing build environment does the right thing.
|
||||
list(APPEND HIPRT_EXTRA_ARGS -DHIPRT_PREFER_HIP_5=OFF)
|
||||
endif()
|
||||
|
||||
set(HIPRT_SOURCE_DIR ${BUILD_DIR}/hiprt/src/external_hiprt)
|
||||
set(HIPRT_BUILD_DIR ${BUILD_DIR}/hiprt/src/external_hiprt-build)
|
||||
|
||||
@@ -38,6 +40,10 @@ ExternalProject_Add(external_hiprt
|
||||
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
|
||||
PREFIX ${BUILD_DIR}/hiprt
|
||||
|
||||
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
|
||||
${BUILD_DIR}/hiprt/src/external_hiprt <
|
||||
${PATCH_DIR}/hiprt.diff
|
||||
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/hiprt
|
||||
${HIPRT_EXTRA_ARGS}
|
||||
@@ -45,6 +51,11 @@ ExternalProject_Add(external_hiprt
|
||||
INSTALL_DIR ${LIBDIR}/hiprt
|
||||
)
|
||||
|
||||
add_dependencies(
|
||||
external_hiprt
|
||||
external_python
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
# Strip version from shared library name.
|
||||
ExternalProject_Add_Step(external_hiprt after_install
|
||||
@@ -68,4 +79,5 @@ else()
|
||||
)
|
||||
harvest(external_hiprt hiprt/include hiprt/include "*.h")
|
||||
harvest(external_hiprt hiprt/bin hiprt/lib "*${SHAREDLIBEXT}*")
|
||||
harvest(external_hiprt hiprt/bin hiprt/lib "*.hipfb")
|
||||
endif()
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
# For anyone making their own library build, matching these exactly is not
|
||||
# needed but it can be a useful reference.
|
||||
|
||||
set(RELEASE_GCC_VERSION 11.2.*)
|
||||
set(RELEASE_CUDA_VERSION 12.8.*)
|
||||
set(RELEASE_HIP_VERSION 5.7.*)
|
||||
set(RELEASE_GCC_VERSION 11.2)
|
||||
set(RELEASE_CUDA_VERSION 12.8)
|
||||
set(RELEASE_HIP_VERSION 6.3)
|
||||
|
||||
# Libraries
|
||||
#
|
||||
@@ -1371,10 +1371,10 @@ set(PYBIND11_HOMEPAGE https://github.com/pybind/pybind11)
|
||||
set(PYBIND11_LICENSE SPDX:BSD-2-Clause)
|
||||
set(PYBIND11_COPYRIGHT "Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>, All rights reserved.")
|
||||
|
||||
set(HIPRT_VERSION 83e18cc9c3de8f2f9c48b663cf3189361e891054)
|
||||
set(HIPRT_LIBRARY_VERSION 02003)
|
||||
set(HIPRT_VERSION c4298933fe046e3f915977b5a69537a59aac8f47)
|
||||
set(HIPRT_LIBRARY_VERSION 02005)
|
||||
set(HIPRT_URI https://github.com/GPUOpen-LibrariesAndSDKs/HIPRT/archive/${HIPRT_VERSION}.tar.gz)
|
||||
set(HIPRT_HASH b5639fa06bea45eff98bea2929516f7c)
|
||||
set(HIPRT_HASH 65b8a975d23db04d908c758f3fb7bae3)
|
||||
set(HIPRT_HASH_TYPE MD5)
|
||||
set(HIPRT_FILE hiprt-${HIPRT_VERSION}.tar.gz)
|
||||
set(HIPRT_HOMEPAGE https://github.com/GPUOpen-LibrariesAndSDKs/HIPRT)
|
||||
|
||||
@@ -200,15 +200,27 @@ yum -y install jack-audio-connection-kit-devel
|
||||
# - "Install kernel driver".
|
||||
|
||||
# Register ROCm packages
|
||||
rm -f /etc/yum.repos.d/rocm.repo
|
||||
tee --append /etc/yum.repos.d/rocm.repo <<EOF
|
||||
[ROCm-6.1.3]
|
||||
name=ROCm6.1.3
|
||||
baseurl=https://repo.radeon.com/rocm/rhel8/6.1.3/main
|
||||
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 <<EOF
|
||||
[amdgpu-6.3.1]
|
||||
name=amdgpu-6.3.1
|
||||
baseurl=https://repo.radeon.com/amdgpu/6.3.1/el/8.10/main/x86_64/
|
||||
enabled=1
|
||||
priority=50
|
||||
gpgcheck=1
|
||||
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key
|
||||
EOF
|
||||
tee --append /etc/yum.repos.d/rocm-6.3.1.repo <<EOF
|
||||
[ROCm-6.3.1]
|
||||
name=ROCm-6.3.1
|
||||
baseurl=https://repo.radeon.com/rocm/el8/6.3.1/main
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
exclude=rock-dkms
|
||||
gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key
|
||||
EOF
|
||||
yum -y update
|
||||
yum -y install rocm
|
||||
sudo yum install -y hipcc6.3.1 hip-devel6.3.1 rocm-llvm6.3.1 rocm-core6.3.1 rocm-device-libs6.3.1
|
||||
sudo update-alternatives --set rocm /opt/rocm-6.3.1
|
||||
|
||||
35
build_files/build_environment/patches/hiprt.diff
Normal file
35
build_files/build_environment/patches/hiprt.diff
Normal file
@@ -0,0 +1,35 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 50eb25e..b13d2da 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -503,7 +503,7 @@ if ( BAKE_COMPILED_KERNEL )
|
||||
|
||||
# Create the 'bake_compiled_kernels' project
|
||||
add_custom_target(bake_compiled_kernels ALL
|
||||
- DEPENDS ${KERNEL_HIPRT_H} ${KERNEL_OROCHI_H}
|
||||
+ DEPENDS ${KERNEL_HIPRT_H} ${KERNEL_OROCHI_H} precompile_kernels
|
||||
)
|
||||
|
||||
add_dependencies(${HIPRT_NAME} precompile_kernels bake_compiled_kernels)
|
||||
@@ -585,12 +585,16 @@ install(FILES ${HIPRT_ORO_HEADERS}
|
||||
DESTINATION include/contrib/Orochi/ParallelPrimitives)
|
||||
|
||||
# add hipfb files
|
||||
-file(GLOB HIPRT_HIPFB_FILES "${BASE_OUTPUT_DIR}/${CMAKE_BUILD_TYPE}/*.hipfb")
|
||||
-install(FILES ${HIPRT_HIPFB_FILES}
|
||||
- DESTINATION bin)
|
||||
-
|
||||
-
|
||||
+if(PRECOMPILE)
|
||||
+ install(FILES ${KERNEL_HIPRT_COMP} ${KERNEL_OROCHI_COMP}
|
||||
+ DESTINATION bin)
|
||||
+endif()
|
||||
|
||||
+# Baked headers.
|
||||
+if(BAKE_COMPILED_KERNEL)
|
||||
+ install(FILES ${KERNEL_HIPRT_H}
|
||||
+ DESTINATION include/hiprt/impl)
|
||||
+endif()
|
||||
|
||||
# Project: Unit Test
|
||||
if(NOT NO_UNITTEST)
|
||||
@@ -25,6 +25,7 @@ set(_hip_SEARCH_DIRS
|
||||
${HIP_ROOT_DIR}
|
||||
/opt/rocm
|
||||
/opt/rocm/hip
|
||||
"C:/Program Files/AMD/ROCm/*"
|
||||
)
|
||||
|
||||
find_program(HIP_HIPCC_EXECUTABLE
|
||||
@@ -36,66 +37,25 @@ find_program(HIP_HIPCC_EXECUTABLE
|
||||
bin
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
set(LINKER clang++)
|
||||
else()
|
||||
set(LINKER amdclang++)
|
||||
endif()
|
||||
|
||||
find_program(HIP_LINKER_EXECUTABLE
|
||||
NAMES
|
||||
${LINKER}
|
||||
HINTS
|
||||
${_hip_SEARCH_DIRS}
|
||||
PATH_SUFFIXES
|
||||
bin
|
||||
NO_DEFAULT_PATH
|
||||
NO_CMAKE_PATH
|
||||
)
|
||||
|
||||
|
||||
if(HIP_HIPCC_EXECUTABLE)
|
||||
if(NOT HIP_ROOT_DIR)
|
||||
get_filename_component(HIP_ROOT_DIR ${HIP_HIPCC_EXECUTABLE} DIRECTORY)
|
||||
get_filename_component(HIP_ROOT_DIR ${HIP_ROOT_DIR} DIRECTORY)
|
||||
endif()
|
||||
|
||||
set(HIP_VERSION_MAJOR 0)
|
||||
set(HIP_VERSION_MINOR 0)
|
||||
set(HIP_VERSION_PATCH 0)
|
||||
set(_hipcc_executable ${HIP_HIPCC_EXECUTABLE})
|
||||
|
||||
if(WIN32)
|
||||
set(_hipcc_executable ${HIP_HIPCC_EXECUTABLE}.bat)
|
||||
else()
|
||||
set(_hipcc_executable ${HIP_HIPCC_EXECUTABLE})
|
||||
endif()
|
||||
|
||||
# Get version from the output.
|
||||
execute_process(COMMAND ${_hipcc_executable} --version
|
||||
OUTPUT_VARIABLE _hip_version_raw
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
# Parse parts.
|
||||
if(_hip_version_raw MATCHES "HIP version: .*")
|
||||
# Strip the HIP prefix and get list of individual version components.
|
||||
string(REGEX REPLACE
|
||||
".*HIP version: ([.0-9]+).*" "\\1"
|
||||
_hip_semantic_version "${_hip_version_raw}")
|
||||
string(REPLACE "." ";" _hip_version_parts "${_hip_semantic_version}")
|
||||
list(LENGTH _hip_version_parts _num_hip_version_parts)
|
||||
|
||||
# Extract components into corresponding variables.
|
||||
if(_num_hip_version_parts GREATER 0)
|
||||
list(GET _hip_version_parts 0 HIP_VERSION_MAJOR)
|
||||
endif()
|
||||
if(_num_hip_version_parts GREATER 1)
|
||||
list(GET _hip_version_parts 1 HIP_VERSION_MINOR)
|
||||
endif()
|
||||
if(_num_hip_version_parts GREATER 2)
|
||||
list(GET _hip_version_parts 2 HIP_VERSION_PATCH)
|
||||
endif()
|
||||
|
||||
# Unset temp variables.
|
||||
unset(_num_hip_version_parts)
|
||||
unset(_hip_semantic_version)
|
||||
unset(_hip_version_parts)
|
||||
endif()
|
||||
# Get version from the header.
|
||||
file(STRINGS "${HIP_ROOT_DIR}/include/hip/hip_version.h" _tmp REGEX "^#define HIP_VERSION_MAJOR.*$")
|
||||
string(REGEX MATCHALL "[0-9]+" HIP_VERSION_MAJOR ${_tmp})
|
||||
file(STRINGS "${HIP_ROOT_DIR}/include/hip/hip_version.h" _tmp REGEX "^#define HIP_VERSION_MINOR.*$")
|
||||
string(REGEX MATCHALL "[0-9]+" HIP_VERSION_MINOR ${_tmp})
|
||||
file(STRINGS "${HIP_ROOT_DIR}/include/hip/hip_version.h" _tmp REGEX "^#define HIP_VERSION_PATCH.*$")
|
||||
string(REGEX MATCHALL "[0-9]+" HIP_VERSION_PATCH ${_tmp})
|
||||
unset(_tmp)
|
||||
|
||||
# Construct full semantic version.
|
||||
set(HIP_VERSION "${HIP_VERSION_MAJOR}.${HIP_VERSION_MINOR}.${HIP_VERSION_PATCH}")
|
||||
@@ -111,7 +71,6 @@ find_package_handle_standard_args(HIP
|
||||
|
||||
mark_as_advanced(
|
||||
HIP_HIPCC_EXECUTABLE
|
||||
HIP_LINKER_EXECUTABLE
|
||||
)
|
||||
|
||||
unset(_hip_SEARCH_DIRS)
|
||||
|
||||
@@ -46,7 +46,7 @@ unset(_hiprt_version)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(HIPRT
|
||||
REQUIRED_VARS HIPRT_INCLUDE_DIR HIP_LINKER_EXECUTABLE
|
||||
REQUIRED_VARS HIPRT_INCLUDE_DIR
|
||||
FAIL_MESSAGE "HIP-RT or one of its dependencies not found")
|
||||
|
||||
mark_as_advanced(
|
||||
|
||||
@@ -14,9 +14,9 @@ buildbot:
|
||||
version: '12.8.0'
|
||||
hip:
|
||||
windows:
|
||||
version: '5.7.32000'
|
||||
version: '6.3.42560'
|
||||
linux:
|
||||
version: '6.1.3'
|
||||
version: '6.3.1'
|
||||
optix:
|
||||
version: '7.4.0'
|
||||
ocloc:
|
||||
|
||||
Reference in New Issue
Block a user