This change brings the following improvements on the user level - Support of GPUs with gfx12 architecture - New HIP-RT library which in addition to the gfx12 support brings various bug-fixes. The known limitation of gfx12 is that OpenImageDenoiser does not yet support this GPU architecture. This means that while Cycles will use the full advantage of the gfx12 (including hardware accelerated ray-tracing), denoising will only be possible on CPU, or secondary gfx11 or below GPU. This is something that requires a change in OIDN and it is to late to do it for Blender 4.4, but it is something to look forward for Blender 4.5. The gfx12 changes for the pre-compiled kernels is rather trivial, so it comes together (in the same PR) as the bigger HIP-RT change. On the development side this change brings the following improvements: - One step compile and link (much simpler CMake rules) - Embedding BVH binaries in hiprt dll (which makes it easier to package and load, without relying on special path configuration) Co-authored-by: Sahar Kashi <sahar.kashi@amd.com> Co-authored-by: Sergey Sharybin <sergey@blender.org> Co-authored-by: Brecht Van Lommel <brecht@blender.org> Pull Request: https://projects.blender.org/blender/blender/pulls/133129
57 lines
1.2 KiB
CMake
57 lines
1.2 KiB
CMake
# SPDX-FileCopyrightText: 2021 Blender Authors
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# Find HIPRT SDK. This module defines:
|
|
# HIPRT_INCLUDE_DIR, path to HIPRT include directory
|
|
# HIPRT_FOUND, if SDK found
|
|
|
|
if(NOT (DEFINED HIPRT_ROOT_DIR))
|
|
set(HIPRT_ROOT_DIR "")
|
|
endif()
|
|
|
|
# If `HIPRT_ROOT_DIR` was defined in the environment, use it.
|
|
if(HIPRT_ROOT_DIR)
|
|
# Pass.
|
|
elseif(DEFINED ENV{HIPRT_ROOT_DIR})
|
|
set(HIPRT_ROOT_DIR $ENV{HIPRT_ROOT_DIR})
|
|
elseif(DEFINED ENV{HIP_PATH})
|
|
# Built-in environment variable from SDK.
|
|
set(HIPRT_ROOT_DIR $ENV{HIP_PATH})
|
|
endif()
|
|
|
|
set(_hiprt_SEARCH_DIRS
|
|
${HIPRT_ROOT_DIR}
|
|
/opt/lib/hiprt
|
|
)
|
|
|
|
find_path(HIPRT_INCLUDE_DIR
|
|
NAMES
|
|
hiprt/hiprt.h
|
|
HINTS
|
|
${_hiprt_SEARCH_DIRS}
|
|
PATH_SUFFIXES
|
|
include
|
|
)
|
|
|
|
set(HIPRT_VERSION)
|
|
|
|
if(HIPRT_INCLUDE_DIR)
|
|
file(STRINGS "${HIPRT_INCLUDE_DIR}/hiprt/hiprt.h" _hiprt_version
|
|
REGEX "^#define HIPRT_VERSION_STR[ \t]\".*\"$")
|
|
string(REGEX MATCHALL "[0-9]+[.0-9]+" HIPRT_VERSION ${_hiprt_version})
|
|
endif()
|
|
|
|
unset(_hiprt_version)
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(HIPRT
|
|
REQUIRED_VARS HIPRT_INCLUDE_DIR
|
|
FAIL_MESSAGE "HIP-RT or one of its dependencies not found")
|
|
|
|
mark_as_advanced(
|
|
HIPRT_INCLUDE_DIR
|
|
)
|
|
|
|
unset(_hiprt_SEARCH_DIRS)
|