Tasks
For release in Blender 3.3:
- oneAPI host and kernel code
- NanoVDB support
- Windows
- JIT compilation
- AoT compilation (disabled due to build times in CI)
- Linux
- JIT compilation
- AoT compilation (disabled due to build times in CI)
- User manual update
- Benchmark graph for release notes
- Wiki instructions for building
For later:
- Hardware ray tracing usage
- Host memory as fallback when out of VRAM
- Hardware texture sampler usage
- Memory sharing between devices
- Simplify build process:
- Ability to use SDK provided by Intel instead of building own compiler? to be reconsidered once moving to new C++11 ABI.
- Remove need to use shared library? dynamic libraries still needed but integration improved with https://developer.blender.org/rB7eeeaec6da33971ab7805c9a4bfd5f4e186273d1
- Faster AoT build times - partially adressed by https://developer.blender.org/rBdf29211eeb59f54079123e2bc82578a561431290
Compiler Build Instructions
Additional build steps:
For Windows:
- Compile intel/llvm project (currently recommended version=sycl-nightly/20221019, later version are also supported):
git clone https://github.com/intel/llvm -b sycl-nightly/20221019 python .\llvm\buildbot\configure.py python .\llvm\buildbot\compile.py
Or download prebuilded binaries from the release page
- Download latest dGPU “Intel® Graphics Offline Compiler for OpenCL™ Code” from standalone components webpage: and extract it to the path of your choice.
- Perform Blender configuration “make …” as usual
- edit these CMake options (with SYCL_COMPILER_DIR=.\llvm\build\install from step 1) and rebuild
WITH_CYCLES_DEVICE_ONEAPI=1 WITH_CYCLES_ONEAPI_BINARIES=1 CYCLES_ONEAPI_SPIR64_GEN_DEVICES=dg2 # available targets can be listed from ocloc compile --help SYCL_COMPILER=%SYCL_COMPILER_DIR%\bin\clang++.exe SYCL_INCLUDE_DIR=%SYCL_COMPILER_DIR%\include\sycl SYCL_LIBRARY=%SYCL_COMPILER_DIR%\lib\sycl.lib OCLOC_INSTALL_DIR=path of your choice
- sycl.dll and pi_level_zero.dll from .\llvm\build\install are needed at runtime and will be installed next to blender executable
step 1 is optional now it's available from https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64_vc15/
For Linux:
- Compile intel/llvm project (currently recommended version=sycl-nightly/20221019, later version are also supported):
git clone https://github.com/intel/llvm -b sycl-nightly/20221019 python ./llvm/buildbot/configure.py python ./llvm/buildbot/compile.py
- Follow these steps to build the latest release of the Graphics Compiler: https://github.com/intel/intel-graphics-compiler/blob/master/documentation/build_ubuntu.md and install it to ./llvm/build/install/lib/igc.
- adjust runpath of libsycl.so and libpi_level_zero.so: patchelf --set-rpath '$ORIGIN' *.so
- Follow these steps to build the latest release of ocloc: https://github.com/intel/compute-runtime/blob/master/BUILD.md and install it to ./llvm/build/install/lib/ocloc
- Perform Blender configuration “make …” as usual
- edit these CMake options (with SYCL_COMPILER_DIR=./llvm/build/install from step 1) and rebuild
WITH_CYCLES_DEVICE_ONEAPI=1
WITH_CYCLES_ONEAPI_BINARIES=1
CYCLES_ONEAPI_SPIR64_GEN_DEVICES=dg2 # available targets can be listed from ocloc compile --help
SYCL_COMPILER=${SYCL_COMPILER_DIR}/bin/clang++
SYCL_INCLUDE_DIR=${SYCL_COMPILER_DIR}/include/sycl
SYCL_LIBRARY=${SYCL_COMPILER_DIR}/lib/libsycl.so
OCLOC_INSTALL_DIR=path of your choice if it's different than ${SYCL_COMPILER_DIR}/lib/ocloc- libsycl.so and libpi_level_zero.so from ./llvm/build/install are needed at runtime and will be installed to ./lib.
1/2/3/4 are optional since these now are available from https://svn.blender.org/svnroot/bf-blender/trunk/lib/linux_centos7_x86_64/