Merge branch 'blender-v4.4-release'

This commit is contained in:
Sergey Sharybin
2025-02-20 17:36:37 +01:00
18 changed files with 207 additions and 357 deletions

View File

@@ -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)

View File

@@ -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()

View File

@@ -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()

View File

@@ -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)

View File

@@ -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

View 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)

View File

@@ -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)

View File

@@ -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(

View File

@@ -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: