Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
800794931f | ||
|
|
578fa2d470 | ||
|
|
e4b1a6c9ad | ||
|
|
ae91575ad5 | ||
|
|
b61520b6be | ||
|
|
870607d1b7 | ||
|
|
7363032ded | ||
|
|
a1103da9a2 | ||
|
|
3244cdefe4 | ||
|
|
56d12bac07 | ||
|
|
905a655674 | ||
|
|
1f3d3fcbf2 | ||
|
|
1562c5fe97 | ||
|
|
acfd961a20 | ||
|
|
593203cc2d | ||
|
|
c66ffcaa60 | ||
|
|
5b0607ad57 | ||
|
|
29dd82134b | ||
|
|
a6582330c2 | ||
|
|
34950db33a | ||
|
|
5b0b109840 | ||
|
|
cda4cf1919 | ||
|
|
51f12d4729 | ||
|
|
afb90364a5 | ||
|
|
fee2afe0cb | ||
|
|
de6729720c | ||
|
|
6c1ee46e7c | ||
|
|
fa07e8cab8 | ||
|
|
fc2dfcdc2b | ||
|
|
ecc2b5017b | ||
|
|
291d69079a | ||
|
|
695ca92ef3 | ||
|
|
11eb5f6031 | ||
|
|
a4b8d4a3d0 | ||
|
|
eb8f09d6fc | ||
|
|
5443670bf6 | ||
|
|
9f33b2be06 | ||
|
|
9b33e7afd2 | ||
|
|
819aedb442 | ||
|
|
17fa6e82bb | ||
|
|
e363c4e733 | ||
|
|
f816f353d0 | ||
|
|
8c47331b86 | ||
|
|
a9fe3d3eda | ||
|
|
8990cc91bd | ||
|
|
a617ac32c0 | ||
|
|
e3deefcc07 | ||
|
|
c61b24be1b | ||
|
|
532a1cc415 | ||
|
|
13bbc328d2 | ||
|
|
0c236df6f3 | ||
|
|
93189eacda | ||
|
|
a3aa2d8e43 | ||
|
|
0d29bfc3b8 | ||
|
|
0a0c0cfffd | ||
|
|
614793fe96 | ||
|
|
6c798e906b | ||
|
|
d5757f95b6 | ||
|
|
9eb89a70a1 | ||
|
|
901306395b | ||
|
|
766d120e8f | ||
|
|
926df8ac78 | ||
|
|
7b4a2c22cf | ||
|
|
bb86c822c0 | ||
|
|
23e5fa2902 | ||
|
|
3920a980af | ||
|
|
daa8de0e71 | ||
|
|
94a55e6992 | ||
|
|
01b7dcc4f3 | ||
|
|
e3f3be419b | ||
|
|
cf5be6f9af | ||
|
|
f7d807bcb2 | ||
|
|
17721d46a7 | ||
|
|
c57032c25a | ||
|
|
4a779d690e | ||
|
|
608c019c37 | ||
|
|
39a3e87e06 | ||
|
|
e81584bc2f | ||
|
|
15617d1aa2 | ||
|
|
cdae188cfa | ||
|
|
28abd2346c | ||
|
|
fe449425b8 | ||
|
|
5f82bedf51 | ||
|
|
930a8ac459 | ||
|
|
9f2f9614ce | ||
|
|
1b589beb48 | ||
|
|
133f52ef71 | ||
|
|
289dee276c | ||
|
|
3c50949440 | ||
|
|
dce4f47c84 | ||
|
|
bdcc53d143 | ||
|
|
43c883a36f | ||
|
|
fc0061622d | ||
|
|
70edad3b58 | ||
|
|
49e29dee45 | ||
|
|
d79241c534 | ||
|
|
24c0859fe6 | ||
|
|
cd018d7236 | ||
|
|
dda1fed6e2 | ||
|
|
68f1fa283d | ||
|
|
3567ff9210 | ||
|
|
b03916b5a2 | ||
|
|
aef82ba8fb | ||
|
|
67418a3927 | ||
|
|
a16218e05e | ||
|
|
f4b0106831 | ||
|
|
271f14581e | ||
|
|
c9c58f2117 | ||
|
|
3828b23773 | ||
|
|
14f1996e4b | ||
|
|
767d72d5f2 | ||
|
|
dfae972074 | ||
|
|
a5cec89a24 | ||
|
|
2851deb075 | ||
|
|
eead26e0ea | ||
|
|
be20c01707 | ||
|
|
846a6b9d61 | ||
|
|
42f637060e | ||
|
|
f18f9ce733 | ||
|
|
6730b2afc4 | ||
|
|
d5270e18bb | ||
|
|
076d80e333 | ||
|
|
388557c960 | ||
|
|
1cc5d59e67 | ||
|
|
1f84ca8586 | ||
|
|
5c4edbf519 | ||
|
|
6eed3eb16e | ||
|
|
798d1c1d25 | ||
|
|
fff2e0f6e0 | ||
|
|
b5eed25cdd | ||
|
|
f71d3e4fc8 | ||
|
|
1f045f3c58 | ||
|
|
1292561053 | ||
|
|
9d67ce7bbf | ||
|
|
be0accfd0b | ||
|
|
decc2ff04c | ||
|
|
5536c11647 | ||
|
|
23536d20c2 | ||
|
|
d1a7e57185 | ||
|
|
67bebc4b07 | ||
|
|
f0fcca77fb | ||
|
|
09cd83ec21 | ||
|
|
9253096652 | ||
|
|
6e78c34376 | ||
|
|
c6ab6e511b | ||
|
|
19218b2409 | ||
|
|
2231ed62b7 | ||
|
|
79b02724ed | ||
|
|
906539d21a | ||
|
|
550dff8be6 | ||
|
|
644f052aa1 | ||
|
|
b11d5f3922 | ||
|
|
a7149514a6 | ||
|
|
271aa76219 | ||
|
|
bfc11336af | ||
|
|
1c173b4055 | ||
|
|
bbe4feee98 | ||
|
|
4e93800b99 | ||
|
|
e1406d749b | ||
|
|
0bbe11b64e | ||
|
|
4af9535743 | ||
|
|
e479a834a8 | ||
|
|
32129f8d30 | ||
|
|
9c07dcffe7 | ||
|
|
4e8f066a53 | ||
|
|
89399c10e8 | ||
|
|
c892749430 | ||
|
|
05a6b0767f | ||
|
|
2fe0b4fa48 | ||
|
|
b88b4b5451 | ||
|
|
90f437c7cb | ||
|
|
c4b3140192 | ||
|
|
4b07dc6a2d | ||
|
|
8ebc4e3e28 | ||
|
|
ced8b40f7c | ||
|
|
53e20c928d | ||
|
|
a0ff9e16ff | ||
|
|
c91bc704ae | ||
|
|
50f2fbc696 | ||
|
|
9341ffede5 | ||
|
|
117b26d00a | ||
|
|
e69fe7cc1e | ||
|
|
3a81dbe970 | ||
|
|
62731728d6 | ||
|
|
82f5485c0f | ||
|
|
341ef8c45d | ||
|
|
58ac8e3f3d | ||
|
|
c5d4f158da | ||
|
|
d4509034be | ||
|
|
7ee36d1a36 | ||
|
|
6af3fa61fa | ||
|
|
6d1c92ad9f | ||
|
|
fdf44d201a | ||
|
|
aebb7d7a49 | ||
|
|
32bde766e3 | ||
|
|
922d7f935a | ||
|
|
1ef7d35a9e | ||
|
|
6d201d9216 | ||
|
|
ac6379a476 | ||
|
|
7a03af8136 | ||
|
|
293622b567 | ||
|
|
572e5144e2 | ||
|
|
a0a386174e | ||
|
|
4a9089b4c3 | ||
|
|
c9896d283d | ||
|
|
1b5475fdc6 | ||
|
|
abe945845e | ||
|
|
2750ae9962 | ||
|
|
20b09d04ca | ||
|
|
55c1b772bd | ||
|
|
0a9ece3019 | ||
|
|
14512e7a6e | ||
|
|
c97b61a28c | ||
|
|
05ba861ff1 | ||
|
|
637e1c8aa7 | ||
|
|
3908b8d261 | ||
|
|
9d6ebf2c2a | ||
|
|
e4ea425127 | ||
|
|
752ee7f8a4 | ||
|
|
30d16425db | ||
|
|
a625f5a3b2 | ||
|
|
64247187d6 | ||
|
|
b4277f37ac | ||
|
|
c49eff027c | ||
|
|
0fcb306c91 | ||
|
|
67a6f40c6c | ||
|
|
aad183b993 | ||
|
|
3759bb572d | ||
|
|
28f5fa9d07 | ||
|
|
dcb283e279 | ||
|
|
e087eefe5a | ||
|
|
6ac6171b54 | ||
|
|
b37b536253 | ||
|
|
658f94ab6c | ||
|
|
8ddad2a3f5 | ||
|
|
36d36e5b6e | ||
|
|
02d0038a99 | ||
|
|
113239e8aa | ||
|
|
53e8e0047d | ||
|
|
2080cc0543 | ||
|
|
bdae2bdd04 | ||
|
|
8a72fb41fd | ||
|
|
627ac7ba2c | ||
|
|
71a9563cd8 | ||
|
|
f8bcaa2001 | ||
|
|
d439076261 | ||
|
|
5db1005e8d | ||
|
|
8c881fb01a | ||
|
|
eb5f9fc707 | ||
|
|
7c7e3eed8b | ||
|
|
9e2ca6d4e4 | ||
|
|
d7eb0d2a44 | ||
|
|
2f7f118105 | ||
|
|
90ae80b5fe | ||
|
|
d8e955002f | ||
|
|
d29232b282 | ||
|
|
272f5feb2a | ||
|
|
7723b92932 | ||
|
|
8251272aaf | ||
|
|
ee1c56c6bc | ||
|
|
c819f3bacd | ||
|
|
570d59289c | ||
|
|
c9ee19a5d2 | ||
|
|
f59c6d3ef1 | ||
|
|
b2234567b7 | ||
|
|
619b0e5ea2 | ||
|
|
9ef2018879 | ||
|
|
8de6a5fdf8 | ||
|
|
baa030dd36 | ||
|
|
8b63714aca | ||
|
|
dac55b1974 | ||
|
|
be3e00be56 | ||
|
|
403818c7c0 | ||
|
|
1bc8b94bbd | ||
|
|
8918ed32db | ||
|
|
6008fdf64e | ||
|
|
cbf9a336f8 | ||
|
|
0ee27e4af1 | ||
|
|
66e3f8af2b | ||
|
|
957ae983df | ||
|
|
df51d78be8 | ||
|
|
e22d74ec07 | ||
|
|
b498e2b87e | ||
|
|
825c513d9c | ||
|
|
f4a0f38636 | ||
|
|
02192dc3f9 |
+326
-426
@@ -3,631 +3,531 @@
|
||||
|
||||
name: continuous
|
||||
|
||||
permissions: read-all
|
||||
|
||||
on: [push, workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
|
||||
####################################################################
|
||||
# Setup dpcpp and gfx if not already on NAS
|
||||
####################################################################
|
||||
setup_dpcpp:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
cmd: |
|
||||
DPCPP_VERSION=$(cat .github/workflows/dpcpp-sycl-nightly.env | grep DPCPP_VERSION | sed 's/.*=//')
|
||||
echo "Setup DPCPP ${DPCPP_VERSION}"
|
||||
./scripts/download_dpcpp.sh ${DPCPP_VERSION} ${NAS_LINUX}/dpcpp-compiler-linux LINUX ${PUBLIC_GITHUB_TOKEN}
|
||||
./scripts/download_dpcpp.sh ${DPCPP_VERSION} ${NAS_LINUX}/dpcpp-compiler-win WIN ${PUBLIC_GITHUB_TOKEN}
|
||||
|
||||
setup_gfx:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
cmd: |
|
||||
GFX_DRIVER_VERSION=$(cat .github/workflows/gfx-ubuntu22-embargo.env | grep GFX_DRIVER_VERSION | sed 's/.*=//')
|
||||
echo "Setup embargo GFX driver ${GFX_DRIVER_VERSION} for Linux"
|
||||
./scripts/download_gfx.sh ${GFX_DRIVER_VERSION} ${NAS_LINUX}/gfx-driver-linux/ ${ARTIFACTORY_TOKEN}
|
||||
|
||||
GFX_DRIVER_VERSION=$(cat .github/workflows/gfx-ubuntu22-internal.env | grep GFX_DRIVER_VERSION | sed 's/.*=//')
|
||||
echo "Setup internal GFX driver ${GFX_DRIVER_VERSION} for Linux"
|
||||
./scripts/download_gfx.sh ${GFX_DRIVER_VERSION} ${NAS_LINUX}/gfx-driver-linux/ ${ARTIFACTORY_TOKEN}
|
||||
|
||||
GFX_DRIVER_VERSION=$(cat .github/workflows/gfx-ubuntu22-public.env | grep GFX_DRIVER_VERSION | sed 's/.*=//')
|
||||
echo "Setup public GFX driver ${GFX_DRIVER_VERSION} for Linux"
|
||||
./scripts/download_gfx.sh ${GFX_DRIVER_VERSION} ${NAS_LINUX}/gfx-driver-linux/ ${ARTIFACTORY_TOKEN}
|
||||
|
||||
GFX_DRIVER_VERSION=$(cat .github/workflows/gfx-ubuntu22-release.env | grep GFX_DRIVER_VERSION | sed 's/.*=//')
|
||||
echo "Setup release GFX driver ${GFX_DRIVER_VERSION} for Linux"
|
||||
./scripts/download_gfx.sh ${GFX_DRIVER_VERSION} ${NAS_LINUX}/gfx-driver-linux/ ${ARTIFACTORY_TOKEN}
|
||||
|
||||
GFX_DRIVER_VERSION=$(cat .github/workflows/gfx-windows-internal.env | grep GFX_DRIVER_VERSION | sed 's/.*=//')
|
||||
echo "Setup internal GFX driver ${GFX_DRIVER_VERSION} for Windows"
|
||||
./scripts/download_gfx.sh ${GFX_DRIVER_VERSION} ${NAS_LINUX}/gfx-driver-win/ ${ARTIFACTORY_TOKEN}
|
||||
|
||||
GFX_DRIVER_VERSION=$(cat .github/workflows/gfx-windows-public.env | grep GFX_DRIVER_VERSION | sed 's/.*=//')
|
||||
echo "Setup public GFX driver ${GFX_DRIVER_VERSION} for Windows"
|
||||
./scripts/download_gfx.sh ${GFX_DRIVER_VERSION} ${NAS_LINUX}/gfx-driver-win/ ${ARTIFACTORY_TOKEN}
|
||||
|
||||
GFX_DRIVER_VERSION=$(cat .github/workflows/gfx-windows-release.env | grep GFX_DRIVER_VERSION | sed 's/.*=//')
|
||||
echo "Setup release GFX driver ${GFX_DRIVER_VERSION} for Windows"
|
||||
./scripts/download_gfx.sh ${GFX_DRIVER_VERSION} ${NAS_LINUX}/gfx-driver-win/ ${ARTIFACTORY_TOKEN}
|
||||
|
||||
################################################################################
|
||||
################################################################################
|
||||
# GPU tests
|
||||
################################################################################
|
||||
###############################################################################
|
||||
|
||||
########################################
|
||||
# ze_raytracing
|
||||
########################################
|
||||
|
||||
linux-ze_raytracing:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
artifact-out: linux-ze_raytracing
|
||||
artifact-path: ./build
|
||||
cmd: |
|
||||
source $DPCPP_ROOT/startup.sh
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G Ninja -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_C_COMPILER=clang ../kernels/rthwif
|
||||
cmake --build . --target package
|
||||
|
||||
linux-ze_raytracing-test-DG2:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-ze_raytracing"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
artifact-in: linux-ze_raytracing
|
||||
cmd: |
|
||||
cd build
|
||||
ctest
|
||||
|
||||
windows-ze_raytracing:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-windows-internal.env
|
||||
artifact-path: ./build
|
||||
artifact-out: windows-ze_raytracing
|
||||
shell: cmd
|
||||
cmd: |
|
||||
call %DPCPP_ROOT%\\startup.bat
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G Ninja -D CMAKE_BUILD_TYPE=Release -D CMAKE_CXX_COMPILER=clang++ -D CMAKE_C_COMPILER=clang ../kernels/rthwif
|
||||
cmake --build . --target package
|
||||
ctest
|
||||
|
||||
|
||||
########################################
|
||||
# Linux DG2
|
||||
########################################
|
||||
|
||||
linux-DG2-JIT-INTERNAL:
|
||||
linux-DG2-JIT-INTERNAL-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
artifact-out: linux-DG2-JIT-INTERNAL
|
||||
artifact-path: ./build .ctest_conf
|
||||
dpcpp-version: intel-llvm/sycl-rel_5_2_0-rk
|
||||
artifact-out: linux-DG2-JIT-INTERNAL-build
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 compiler:dpcpp ispc:ispc1.18.1 isa:SSE2 build:RelWithAssert EMBREE_SYCL_SUPPORT:ON sycl:none tasking:TBB2021.7.0 intensity:4
|
||||
scripts/test.py build --debug
|
||||
scripts/test.py build
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-DG2-JIT-INTERNAL -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
linux-DG2-JIT-INTERNAL-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-DG2-JIT-INTERNAL"]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["linux-DG2-JIT-INTERNAL-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
artifact-in: linux-DG2-JIT-INTERNAL
|
||||
env-from-files: ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
dpcpp-version: intel-llvm/sycl-rel_5_2_0-rk
|
||||
artifact-in: linux-DG2-JIT-INTERNAL-build
|
||||
cmd: |
|
||||
scripts/test.py test --debug
|
||||
scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-DG2-JIT-INTERNAL -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
linux-DG2-JIT-PUBLIC:
|
||||
linux-DG2-JIT-PUBLIC-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-out: linux-DG2-JIT-PUBLIC
|
||||
artifact-path: ./build .ctest_conf
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env
|
||||
artifact-out: linux-DG2-JIT-PUBLIC-build
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 compiler:dpcpp ispc:ispc1.18.1 isa:SSE2 build:RelWithAssert EMBREE_SYCL_SUPPORT:ON sycl:none tasking:TBB2021.7.0 intensity:4
|
||||
scripts/test.py build --debug
|
||||
scripts/test.py build
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-DG2-JIT-PUBLIC -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
linux-DG2-JIT-PUBLIC-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-DG2-JIT-PUBLIC"]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["linux-DG2-JIT-PUBLIC-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-in: linux-DG2-JIT-PUBLIC
|
||||
artifact-in: linux-DG2-JIT-PUBLIC-build
|
||||
cmd: |
|
||||
scripts/test.py test --debug
|
||||
scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-DG2-JIT-PUBLIC -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
linux-DG2-JIT-EMBARGO:
|
||||
linux-DG2-JIT-PUBLIC-ICX-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-embargo.env
|
||||
artifact-out: linux-DG2-JIT-EMBARGO
|
||||
artifact-path: ./build .ctest_conf
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-out: linux-DG2-JIT-PUBLIC-ICX-build
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 compiler:dpcpp ispc:ispc1.18.1 isa:SSE2 build:RelWithAssert EMBREE_SYCL_SUPPORT:ON sycl:none tasking:TBB2021.7.0 intensity:4
|
||||
scripts/test.py build --debug
|
||||
scripts/test.py build
|
||||
|
||||
linux-DG2-JIT-EMBARGO-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-DG2-JIT-EMBARGO"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-embargo.env
|
||||
artifact-in: linux-DG2-JIT-EMBARGO
|
||||
cmd: |
|
||||
scripts/test.py test --debug
|
||||
scripts/test.py test
|
||||
|
||||
linux-DG2-JIT-PUBLIC-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-out: linux-DG2-JIT-PUBLIC-ICX
|
||||
artifact-path: ./build .ctest_conf
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 compiler:ICX2023.0.0 ispc:ispc1.18.1 isa:AVX512 build:RelWithAssert EMBREE_SYCL_SUPPORT:ON sycl:none tasking:TBB2021.7.0 intensity:4
|
||||
scripts/test.py build --debug
|
||||
scripts/test.py build
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-DG2-JIT-PUBLIC-ICX -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
linux-DG2-JIT-PUBLIC-ICX-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-DG2-JIT-PUBLIC-ICX"]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["linux-DG2-JIT-PUBLIC-ICX-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-in: linux-DG2-JIT-PUBLIC-ICX
|
||||
env-from-files: ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: linux-DG2-JIT-PUBLIC-ICX-build
|
||||
cmd: |
|
||||
scripts/test.py test --debug
|
||||
scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-DG2-JIT-PUBLIC-ICX -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
########################################
|
||||
# Linux ATS-M
|
||||
########################################
|
||||
# ########################################
|
||||
# # Linux ATS-M
|
||||
# ########################################
|
||||
|
||||
linux-ATSM-JIT-PUBLIC-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-DG2-JIT-PUBLIC"]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["linux-DG2-JIT-PUBLIC-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "atsm" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-in: linux-DG2-JIT-PUBLIC
|
||||
artifact-in: linux-DG2-JIT-PUBLIC-build
|
||||
cmd: |
|
||||
scripts/test.py test --debug
|
||||
scripts/test.py test
|
||||
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-DG2-JIT-PUBLIC -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
########################################
|
||||
# Linux PVC
|
||||
########################################
|
||||
|
||||
linux-PVC-JIT-INTERNAL:
|
||||
linux-PVC-JIT-INTERNAL-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-embargo.env
|
||||
artifact-out: linux-PVC-JIT-INTERNAL
|
||||
artifact-path: ./build .ctest_conf
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env
|
||||
artifact-out: linux-PVC-JIT-INTERNAL-build
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 compiler:dpcpp ispc:ispc1.16.1 isa:SSE2 build:RelWithAssert EMBREE_SYCL_SUPPORT:ON sycl:none tasking:TBB intensity:4
|
||||
scripts/test.py build --debug
|
||||
scripts/test.py build
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-PVC-JIT-INTERNAL-SYCL-RC -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
linux-PVC-1T-JIT-INTERNAL-test:
|
||||
# TODO: move to nightly
|
||||
linux-PVC-JIT-INTERNAL-test-1T:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-PVC-JIT-INTERNAL"]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["linux-PVC-JIT-INTERNAL-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "pvc" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-embargo.env
|
||||
artifact-in: linux-PVC-JIT-INTERNAL
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
artifact-in: linux-PVC-JIT-INTERNAL-build
|
||||
cmd: |
|
||||
export NEOReadDebugKeys=1
|
||||
export UseKmdMigration=0
|
||||
export EnableImplicitScaling=0
|
||||
scripts/test.py test --debug
|
||||
scripts/test.py test
|
||||
export ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-PVC-JIT-INTERNAL-SYCL-RC -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
linux-PVC-2T-JIT-INTERNAL-test:
|
||||
linux-PVC-JIT-INTERNAL-test-2T:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
needs: ["linux-PVC-JIT-INTERNAL"]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["linux-PVC-JIT-INTERNAL-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "pvc" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-embargo.env
|
||||
artifact-in: linux-PVC-JIT-INTERNAL
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
artifact-in: linux-PVC-JIT-INTERNAL-build
|
||||
cmd: |
|
||||
export EnableImplicitScaling=1
|
||||
scripts/test.py test --debug
|
||||
scripts/test.py test
|
||||
export NEOReadDebugKeys=1
|
||||
export UseKmdMigration=0
|
||||
export ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-PVC-JIT-INTERNAL-SYCL-RC -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
# linux-PVC-JIT-PUBLIC:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
# needs: [setup_gfx, setup_dpcpp]
|
||||
# with:
|
||||
# image: embree/ubuntu:22.04
|
||||
# runs-on: '[ "Linux", "docker", "build" ]'
|
||||
# artifact-out: linux-PVC-JIT-PUBLIC
|
||||
# artifact-path: ./build .ctest_conf
|
||||
# cmd: |
|
||||
# scripts/test.py configure platform:x64 compiler:dpcpp ispc:ispc1.16.1 isa:SSE2 build:RelWithAssert EMBREE_SYCL_SUPPORT:ON sycl:none tasking:TBB intensity:4
|
||||
# scripts/test.py build --debug
|
||||
# scripts/test.py build
|
||||
#
|
||||
# linux-PVC-JIT-PUBLIC-test:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
# needs: ["linux-PVC-JIT-PUBLIC"]
|
||||
# with:
|
||||
# image: embree/ubuntu:22.04
|
||||
# options: --device=/dev/dri:/dev/dri
|
||||
# runs-on: '[ "Linux", "docker", "pvc" ]'
|
||||
# artifact-in: linux-PVC-JIT-PUBLIC
|
||||
# cmd: |
|
||||
# scripts/test.py test --debug
|
||||
# scripts/test.py test
|
||||
linux-PVC-JIT-INTERNAL-test-flat:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["linux-PVC-JIT-INTERNAL-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "pvc" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-ubuntu22-internal.env
|
||||
artifact-in: linux-PVC-JIT-INTERNAL-build
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-PVC-JIT-INTERNAL-SYCL-RC -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
|
||||
# linux-PVC-JIT-PUBLIC:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
# with:
|
||||
# image: embree/ubuntu:22.04
|
||||
# runs-on: '[ "Linux", "docker", "build" ]'
|
||||
# artifact-out: linux-PVC-JIT-PUBLIC
|
||||
# artifact-path: ./build .ctest_conf
|
||||
# cmd: |
|
||||
# scripts/test.py configure platform:x64 compiler:dpcpp ispc:ispc1.16.1 isa:SSE2 build:RelWithAssert EMBREE_SYCL_SUPPORT:ON sycl:none tasking:TBB intensity:4
|
||||
# scripts/test.py build --debug
|
||||
# scripts/test.py build
|
||||
#
|
||||
# linux-PVC-JIT-PUBLIC-test:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
# needs: ["linux-PVC-JIT-PUBLIC"]
|
||||
# with:
|
||||
# image: embree/ubuntu:22.04
|
||||
# options: --device=/dev/dri:/dev/dri
|
||||
# runs-on: '[ "Linux", "docker", "pvc" ]'
|
||||
# artifact-in: linux-PVC-JIT-PUBLIC
|
||||
# cmd: |
|
||||
# scripts/test.py test --debug
|
||||
# scripts/test.py test
|
||||
|
||||
|
||||
########################################
|
||||
# Windows DG2
|
||||
########################################
|
||||
|
||||
windows-DG2-JIT-INTERNAL:
|
||||
windows-DG2-JIT-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
with:
|
||||
force-delete: true
|
||||
runs-on: '[ "Windows", "NAS", "build" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env
|
||||
artifact-out: windows-DG2-JIT-build
|
||||
artifact-path: ./build/*.zip
|
||||
cmd: |
|
||||
cmake --preset windows-DG2-JIT-INTERNAL-L0RTAS -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
windows-DG2-JIT-INTERNAL-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
needs: ["windows-DG2-JIT-build"]
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-windows-internal.env
|
||||
artifact-in: windows-DG2-JIT-build
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 compiler:dpcpp isa:SSE2 build:Release EMBREE_SYCL_SUPPORT:ON sycl:none intensity:3
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
cmake --preset windows-DG2-JIT-INTERNAL-L0RTAS -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
windows-DG2-JIT-PUBLIC:
|
||||
windows-DG2-JIT-PUBLIC-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
needs: ["windows-DG2-JIT-build"]
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-windows-public.env
|
||||
artifact-in: windows-DG2-JIT-build
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 compiler:dpcpp isa:SSE2 build:Release EMBREE_SYCL_SUPPORT:ON sycl:none intensity:3
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
cmake --preset windows-DG2-JIT-INTERNAL-L0RTAS -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
windows-DG2-JIT-PUBLIC-ICX:
|
||||
windows-DG2-JIT-ICX-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
project: embree
|
||||
dpcpp-version: oneAPI/compiler/2024.1
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-windows-public.env
|
||||
artifact-out: windows-DG2-JIT-ICX-build
|
||||
artifact-path: ./build/*.zip
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 compiler:ICX2023.0.0 ispc:ispc1.18.1 isa:AVX512 tasking:TBB2021.7.0 build:Release EMBREE_SYCL_SUPPORT:ON sycl:none intensity:2
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
cmake --preset nightly-windows-DG2-JIT-ICX -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
windows-DG2-JIT-INTERNAL-TBB2020_3:
|
||||
windows-DG2-JIT-ICX-INTERNAL-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@devel
|
||||
needs: [setup_gfx, setup_dpcpp]
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
needs: ["windows-DG2-JIT-ICX-build"]
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
project: embree
|
||||
dpcpp-version: oneAPI/compiler/2024.1
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-windows-internal.env
|
||||
artifact-in: windows-DG2-JIT-ICX-build
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 compiler:dpcpp isa:SSE2 build:Release EMBREE_SYCL_SUPPORT:ON sycl:none intensity:3 tasking:TBB2020.3
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
cmake --preset nightly-windows-DG2-JIT-ICX -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
################################################################################
|
||||
################################################################################
|
||||
# CPU tests
|
||||
################################################################################
|
||||
################################################################################
|
||||
|
||||
########################################
|
||||
# Linux
|
||||
########################################
|
||||
|
||||
linux-fedora29_ICX:
|
||||
windows-DG2-JIT-ICX-PUBLIC-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
needs: ["windows-DG2-JIT-ICX-build"]
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
project: embree
|
||||
dpcpp-version: oneAPI/compiler/2024.1
|
||||
env-from-files: ./.github/workflows/dpcpp-sycl-nightly.env ./.github/workflows/gfx-windows-public.env
|
||||
artifact-in: windows-DG2-JIT-ICX-build
|
||||
cmd: |
|
||||
cmake --preset nightly-windows-DG2-JIT-ICX -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTENSITY=3
|
||||
cmake --build build --config Release --target test_package
|
||||
|
||||
# ################################################################################
|
||||
# ################################################################################
|
||||
# # CPU tests
|
||||
# ################################################################################
|
||||
# ################################################################################
|
||||
|
||||
# ########################################
|
||||
# # Linux
|
||||
# ########################################
|
||||
|
||||
linux-fedora29-CLANG4:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
with:
|
||||
image: embree/fedora:29
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:ICX2023.0.0 ispc:ispc1.12.0 isa:AVX512 frequency_level:simd256 tasking:TBB2021.2.0 intensity:2 maxinstancelevelcount:4
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
# python scripts/test.py test sde:hsw
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-fedora29-CLANG4 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
linux-fedora32-GCC:
|
||||
linux-fedora29-CLANG5-INT-ADDRSANITIZER:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
with:
|
||||
image: embree/fedora:32
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:GCC ispc:ispc isa:AVX512 tasking:TBB COMPACT_POLYS:ON MIN_WIDTH:ON intensity:2
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
|
||||
linux-fedora32_ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
with:
|
||||
image: embree/fedora:32
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:ICX2023.0.0 ispc:ispc1.12.0 isa:AVX512 frequency_level:simd256 tasking:TBB2021.7.0 intensity:2 maxinstancelevelcount:4
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
|
||||
linux-fedora26_CLANG4:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
with:
|
||||
image: embree/fedora:26
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:CLANG4.0.0 ispc:ispc1.17.0 isa:AVX512 frequency_level:simd128 tasking:TBB2021.2.0 GLFW:OFF intensity:2
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
|
||||
linux-fedora26_CLANG5-INT-ADDRSANITIZER:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
with:
|
||||
image: embree/fedora:26
|
||||
image: embree/fedora:29
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:CLANG5.0.0 ispc:ispc1.17.0 isa:AVX tasking:INT intensity:1 addrsanitizer:ON
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-fedora29-CLANG5-INT-ADDRSANITIZER -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=1
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
linux-fedora29-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/fedora:29
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-fedora29-ICX -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
linux-fedora32-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/fedora:32
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-fedora32-ICX -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
linux-ubuntu20_04-GCC-NAMESPACE:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:20.04
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:GCC ispc:ispc1.12.0 isa:AVX2 frequency_level:simd256 tasking:TBB intensity:1 api_namespace:myembree
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-ubuntu20_04-GCC-NAMESPACE -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=1
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
linux-ubuntu20_04-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:20.04
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Release threads:4 compiler:ICX2023.0.0 ispc:ispc1.17.0 isa:AVX512 frequency_level:simd256 tasking:TBB2021.5.0 intensity:2
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
|
||||
linux-centos7_4-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@devel
|
||||
with:
|
||||
image: embree/centos:7.4
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:GCC ispc:ispc1.17.0 isa:AVX2 frequency_level:simd128 tasking:TBB intensity:1
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset linux-ubuntu20_04-ICX -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
|
||||
########################################
|
||||
# Windows
|
||||
########################################
|
||||
windows-V140:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_windows.yml@devel
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "build" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 threads:4 build:RelWithDebInfo compiler:V140 ispc:ispc1.16.1 isa:SSE2 tasking:TBB2020.2 intensity:2
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
|
||||
windows-V141:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_windows.yml@devel
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "build" ]'
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:RelWithDebInfo compiler:V141 ispc:ispc1.17.0 isa:SSE2 tasking:TBB2020.2 intensity:2 maxinstancelevelcount:8
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
|
||||
windows-V142:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_windows.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
with:
|
||||
force-delete: true
|
||||
runs-on: '[ "Windows", "NAS", "build" ]'
|
||||
dpcpp-version: none
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:RelWithDebInfo compiler:V142 ispc:ispc1.18.1 isa:SSE2 tasking:TBB2021.7.0 intensity:2 maxinstancelevelcount:8
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
cmake --preset windows-V142 -D CMAKE_BUILD_TYPE=RelWithDebInfo -D EMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --target test_package
|
||||
|
||||
windows-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_windows.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
with:
|
||||
force-delete: true
|
||||
runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
dpcpp-version: oneAPI/compiler/2024.1
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:RelWithDebInfo compiler:ICX2023.0.0 ispc:ispc1.17.0 isa:AVX512 tasking:TBB2021.5.0 threads:16 intensity:2
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
|
||||
################################################################################
|
||||
################################################################################
|
||||
# CPU tests
|
||||
################################################################################
|
||||
################################################################################
|
||||
cmake --preset windows-ICX -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
########################################
|
||||
# MacOS
|
||||
########################################
|
||||
|
||||
macosx-ARM-NEON-AVX2:
|
||||
macosx-ARM-CLANG-NEON-AVX2:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_macos.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
runs-on: '[ "macOS", "arm", "build" ]'
|
||||
runs-on: '[ "macOS", "build", "arm" ]'
|
||||
cmd: |
|
||||
scripts/test.py configure platform:arm64 build:Debug compiler:CLANG ispc:ispc1.17.0 isa:NEON2X tasking:TBB_HOMEBREW intensity:2
|
||||
scripts/test.py build
|
||||
scripts/test.py test
|
||||
cmake --preset macos-ARM-CLANG-NEON-AVX2 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
macosx-ARM-CLANG-NEON:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
runs-on: '[ "macOS", "build", "arm" ]'
|
||||
cmd: |
|
||||
cmake --preset macos-ARM-CLANG-NEON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
macosx-x64-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_macos.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
runs-on: '[ "macOS", "embree", "build" ]'
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 build:Debug compiler:CLANG ispc:ispc1.18.1 isa:SSE2 tasking:TBB2021.1.1 intensity:2
|
||||
scripts/test.py build
|
||||
scripts/test.py test
|
||||
|
||||
|
||||
########################################
|
||||
# Klockwork
|
||||
########################################
|
||||
|
||||
linux-GCC-KLOCWORK:
|
||||
cmake --preset macos-x64-CLANG -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
macosx-ARM-CLANG-NEON-AVX2-universal-binaries:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_static_analysis.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
image: embree/centos:7.4
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
runs-on: '[ "macOS", "build", "arm" ]'
|
||||
cmd: |
|
||||
export CI_PROJECT_DIR=$GITHUB_WORKSPACE
|
||||
export CI_JOB_ID=$GITHUB_RUN_ID
|
||||
python scripts/test.py configure platform:x64 build:Debug compiler:GCC ispc:ispc1.17.0 isa:SSE2 tasking:TBB klocwork:ON intensity:0
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
scripts/klocwork_gen_report.sh
|
||||
scripts/store_files.sh $GITHUB_REPOSITORY $GITHUB_RUN_ID klocwork "klocwork/report.log"
|
||||
cmake --preset macos-ARM-CLANG-NEON-AVX2-UB -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEMBREE_TESTING_INTENSITY=2 -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DEMBREE_BUILD_GLFW_FROM_SOURCE=ON -DEMBREE_ISPC_SUPPORT=OFF
|
||||
cmake --build build --config RelWithDebInfo --target build
|
||||
cmake --build build --config RelWithDebInfo --target test_package
|
||||
|
||||
########################################
|
||||
# Coverity
|
||||
########################################
|
||||
|
||||
static-analysis:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/static_analysis.yml@main
|
||||
with:
|
||||
project: Embree
|
||||
submodules: true
|
||||
coverity: true
|
||||
prebuild: >
|
||||
module load cmake/3.25.3 &&
|
||||
export NAS_LINUX=$STORAGE_PATH/packages/apps &&
|
||||
cmake --preset linux-coverity
|
||||
build: sh scripts/coverity.sh
|
||||
|
||||
success:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Success
|
||||
run: echo Success
|
||||
needs:
|
||||
- linux-ze_raytracing
|
||||
- linux-ze_raytracing-test-DG2
|
||||
- windows-ze_raytracing
|
||||
- linux-DG2-JIT-INTERNAL-test
|
||||
- linux-DG2-JIT-PUBLIC-test
|
||||
- linux-ATSM-JIT-PUBLIC-test
|
||||
- linux-DG2-JIT-EMBARGO-test
|
||||
- linux-DG2-JIT-PUBLIC-ICX-test
|
||||
- linux-PVC-1T-JIT-INTERNAL-test
|
||||
- linux-PVC-2T-JIT-INTERNAL-test
|
||||
- windows-DG2-JIT-INTERNAL
|
||||
- windows-DG2-JIT-PUBLIC
|
||||
- windows-DG2-JIT-PUBLIC-ICX
|
||||
- windows-DG2-JIT-INTERNAL-TBB2020_3
|
||||
- linux-fedora29_ICX
|
||||
- linux-fedora32-GCC
|
||||
- linux-fedora32_ICX
|
||||
- linux-fedora26_CLANG4
|
||||
- linux-fedora26_CLANG5-INT-ADDRSANITIZER
|
||||
- linux-PVC-JIT-INTERNAL-test-1T
|
||||
- linux-PVC-JIT-INTERNAL-test-2T
|
||||
- linux-PVC-JIT-INTERNAL-test-flat
|
||||
- windows-DG2-JIT-INTERNAL-test
|
||||
- windows-DG2-JIT-PUBLIC-test
|
||||
- windows-DG2-JIT-ICX-INTERNAL-test
|
||||
- windows-DG2-JIT-ICX-PUBLIC-test
|
||||
- linux-fedora29-CLANG4
|
||||
- linux-fedora29-CLANG5-INT-ADDRSANITIZER
|
||||
- linux-fedora29-ICX
|
||||
- linux-fedora32-ICX
|
||||
- linux-ubuntu20_04-GCC-NAMESPACE
|
||||
- linux-ubuntu20_04-ICX
|
||||
- linux-centos7_4-GCC
|
||||
- windows-V140
|
||||
- windows-V141
|
||||
- windows-V142
|
||||
- windows-ICX
|
||||
- macosx-ARM-NEON-AVX2
|
||||
- macosx-ARM-CLANG-NEON-AVX2
|
||||
- macosx-ARM-CLANG-NEON
|
||||
- macosx-x64-CLANG
|
||||
- linux-GCC-KLOCWORK
|
||||
- macosx-ARM-CLANG-NEON-AVX2-universal-binaries
|
||||
- static-analysis
|
||||
|
||||
|
||||
if: failure() || cancelled()
|
||||
steps:
|
||||
- name: Failure
|
||||
run: |
|
||||
echo "::notice title=Success::Workflow failed"
|
||||
exit 1
|
||||
@@ -1 +1 @@
|
||||
DPCPP_VERSION=sycl-nightly/20230304
|
||||
DPCPP_VERSION=intel-llvm/nightly-2024-03-17
|
||||
@@ -1 +0,0 @@
|
||||
GFX_DRIVER_VERSION=gfx-driver-builds/ci/master/gfx-driver-ci-master-13324/artifacts/Linux/Ubuntu/22.04/Release
|
||||
@@ -1 +1 @@
|
||||
GFX_DRIVER_VERSION=neo-builds/ci/master/ci-neo-master-025813/artifacts/linux/ubuntu/22.04
|
||||
GFX_DRIVER_VERSION=neo-builds/ci/master/ci-neo-master-029525/artifacts/linux/ubuntu/22.04
|
||||
@@ -1 +1 @@
|
||||
GFX_DRIVER_VERSION=neo-builds/releases/releases_23.05/neo-releases-23.05.25593.11/artifacts/linux/ubuntu/22.04
|
||||
GFX_DRIVER_VERSION=linux-latest
|
||||
@@ -1 +0,0 @@
|
||||
GFX_DRIVER_VERSION=neo-builds/releases/releases_23.05/neo-releases-23.05.25593.11/artifacts/linux/ubuntu/20.04
|
||||
@@ -1 +1 @@
|
||||
GFX_DRIVER_VERSION=gfx-driver-builds/ci/master/gfx-driver-ci-master-13324/artifacts/Windows
|
||||
GFX_DRIVER_VERSION=gfx-driver-builds/ci/master/gfx-driver-ci-master-16477/artifacts/Windows
|
||||
@@ -1 +1 @@
|
||||
GFX_DRIVER_VERSION=gfx-driver-builds/prod/releases_23ww08-ci-master-13370/prod-hini-releases_23ww08-ci-master-13370-revenue-pr-1014250/artifacts/Windows/
|
||||
GFX_DRIVER_VERSION=windows-101.5445
|
||||
@@ -1 +0,0 @@
|
||||
GFX_DRIVER_VERSION=gfx-driver-builds/prod/releases_23ww08-ci-master-13370/prod-hini-releases_23ww08-ci-master-13370-revenue-pr-1014250/artifacts/Windows/
|
||||
@@ -0,0 +1,688 @@
|
||||
## Copyright 2022 Intel Corporation
|
||||
## SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: integrate
|
||||
|
||||
permissions: read-all
|
||||
|
||||
# same as nightly...
|
||||
on:
|
||||
schedule:
|
||||
- cron: '00 00 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
#####################################################################
|
||||
# Integration Tests
|
||||
####################################################################
|
||||
|
||||
# TODO: investigate windows integration tests not working
|
||||
#####################################################################
|
||||
## Windows
|
||||
#####################################################################
|
||||
# integrate-windows-ICX:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-out: integrate-windows-ICX
|
||||
# artifact-path: ./build/embree-*.zip
|
||||
# dpcpp-version: oneAPI/compiler/2024.1
|
||||
# cmd: |
|
||||
# cmake --preset integrate-windows-icx
|
||||
# cmake --build build --config Release --target package -j8
|
||||
# cmake --build build --config Release --target post_package
|
||||
#
|
||||
# integrate-windows-ICX-test:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
# needs: ["integrate-windows-ICX"]
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-in: integrate-windows-ICX
|
||||
# dpcpp-version: oneAPI/compiler/2024.1
|
||||
# cmd: |
|
||||
# cd build
|
||||
# . ..\tests\integration\test_embree_release\unpack-windows.ps1
|
||||
# cd ..\tests\integration\test_embree_release
|
||||
# cmake --preset test-windows-icx
|
||||
# cmake --build build --config Release
|
||||
# .\build\test.exe
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
# integrate-windows-v142:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows.yml@main
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-out: integrate-windows-v142
|
||||
# artifact-path: ./build/embree-*.zip
|
||||
# cmd: |
|
||||
# cmake --preset integrate-windows-v142
|
||||
# cmake --build build --config Release --target package -j8
|
||||
# cmake --build build --config Release --target post_package
|
||||
#
|
||||
# integrate-windows-v142-test-v142:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows.yml@main
|
||||
# needs: ["integrate-windows-v142"]
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-in: integrate-windows-v142
|
||||
# cmd: |
|
||||
# cd build
|
||||
# . ..\tests\integration\test_embree_release\unpack-windows.ps1
|
||||
# cd ..\tests\integration\test_embree_release
|
||||
# cmake --preset test-windows-v142
|
||||
# cmake --build build --config Release
|
||||
# .\build\Release\test.exe
|
||||
#
|
||||
# integrate-windows-v142-test-ICX:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
# needs: ["integrate-windows-v142"]
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-in: integrate-windows-v142
|
||||
# dpcpp-version: oneAPI/compiler/2024.1
|
||||
# cmd: |
|
||||
# cd build
|
||||
# . ..\tests\integration\test_embree_release\unpack-windows.ps1
|
||||
# cd ..\tests\integration\test_embree_release
|
||||
# cmake --preset test-windows-icx
|
||||
# cmake --build build --config Release
|
||||
# .\build\test.exe
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#####################################################################
|
||||
## Windows STATIC
|
||||
#####################################################################
|
||||
# integrate-static-windows-ICX:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-out: integrate-static-windows-ICX
|
||||
# artifact-path: ./build/embree-*.zip
|
||||
# dpcpp-version: oneAPI/compiler/2024.1
|
||||
# cmd: |
|
||||
# cmake --preset integrate-static-windows-icx
|
||||
# cmake --build build --config Release --target package -j8
|
||||
# cmake --build build --config Release --target post_package
|
||||
#
|
||||
# integrate-static-windows-ICX-test:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
# needs: ["integrate-static-windows-ICX"]
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-in: integrate-static-windows-ICX
|
||||
# dpcpp-version: oneAPI/compiler/2024.1
|
||||
# cmd: |
|
||||
# cd build
|
||||
# . ..\tests\integration\test_embree_release\unpack-windows.ps1
|
||||
# cd ..\tests\integration\test_embree_release
|
||||
# cmake --preset test-windows-icx
|
||||
# cmake --build build --config Release
|
||||
# .\build\test.exe
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
# integrate-static-windows-v142:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows.yml@main
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-out: integrate-static-windows-v142
|
||||
# artifact-path: ./build/embree-*.zip
|
||||
# cmd: |
|
||||
# cmake --preset integrate-windows-v142
|
||||
# cmake --build build --config Release --target package -j8
|
||||
# cmake --build build --config Release --target post_package
|
||||
#
|
||||
# integrate-static-windows-v142-test-v142:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows.yml@main
|
||||
# needs: ["integrate-static-windows-v142"]
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-in: integrate-static-windows-v142
|
||||
# cmd: |
|
||||
# cd build
|
||||
# . ..\tests\integration\test_embree_release\unpack-windows.ps1
|
||||
# cd ..\tests\integration\test_embree_release
|
||||
# cmake --preset test-windows-v142
|
||||
# cmake --build build --config Release
|
||||
# .\build\Release\test.exe
|
||||
#
|
||||
# integrate-static-windows-v142-test-ICX:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
# needs: ["integrate-static-windows-v142"]
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
# artifact-in: integrate-static-windows-v142
|
||||
# dpcpp-version: oneAPI/compiler/2024.1
|
||||
# cmd: |
|
||||
# cd build
|
||||
# . ..\tests\integration\test_embree_release\unpack-windows.ps1
|
||||
# cd ..\tests\integration\test_embree_release
|
||||
# cmake --preset test-windows-icx
|
||||
# cmake --build build --config Release
|
||||
# .\build\test.exe
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
####################################################################
|
||||
# Linux
|
||||
####################################################################
|
||||
integrate-linux-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-out: integrate-linux-GCC
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-gcc -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
integrate-linux-GCC-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-linux-GCC" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-linux-GCC
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-linux-GCC-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-linux-GCC" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-linux-GCC
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-linux-GCC-test-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-linux-GCC" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-linux-GCC
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
integrate-linux-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-out: integrate-linux-ICX
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-icx -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
integrate-linux-ICX-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-linux-ICX" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-linux-ICX
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-linux-ICX-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-linux-ICX" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-linux-ICX
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-icx -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-linux-ICX-test-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-linux-ICX" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-linux-ICX
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-icx -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
integrate-static-linux-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-out: integrate-static-linux-CLANG
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-clang -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
integrate-static-linux-CLANG-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-static-linux-CLANG" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-static-linux-CLANG
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-static-linux-CLANG-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-static-linux-CLANG" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-static-linux-CLANG
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-static-linux-CLANG-test-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-static-linux-CLANG" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-static-linux-CLANG
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
####################################################################
|
||||
# Linux STATIC
|
||||
####################################################################
|
||||
integrate-static-linux-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-out: integrate-static-linux-GCC
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-gcc -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
integrate-static-linux-GCC-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-static-linux-GCC" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-static-linux-GCC
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-static-linux-GCC-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-static-linux-GCC" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-static-linux-GCC
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-static-linux-GCC-test-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-static-linux-GCC" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-static-linux-GCC
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
integrate-static-linux-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-out: integrate-static-linux-ICX
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-icx -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
integrate-static-linux-ICX-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-static-linux-ICX" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-static-linux-ICX
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-icx -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-static-linux-ICX-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-static-linux-ICX" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-static-linux-ICX
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-icx -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-static-linux-ICX-test-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-static-linux-ICX" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-static-linux-ICX
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-static-linux-icx -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
integrate-linux-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-out: integrate-linux-CLANG
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-clang -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
integrate-linux-CLANG-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-linux-CLANG" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-linux-CLANG
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-linux-CLANG-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker.yml@main
|
||||
needs: [ "integrate-linux-CLANG" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-in: integrate-linux-CLANG
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-linux-CLANG-test-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-linux-CLANG" ]
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-in: integrate-linux-CLANG
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-linux-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
####################################################################
|
||||
# Linux SYCL
|
||||
####################################################################
|
||||
integrate-sycl-linux-ICX:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: icx/compiler_ppkg-rel/20240110
|
||||
artifact-out: integrate-sycl-linux-ICX
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-sycl-linux-icx -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
integrate-sycl-linux-ICX-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-sycl-linux-ICX" ]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: icx/compiler_ppkg-rel/20240110
|
||||
artifact-in: integrate-sycl-linux-ICX
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-sycl-linux-icx -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
integrate-sycl-linux-DPCPP:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: intel-llvm/nightly-2023-09-22-rk
|
||||
artifact-out: integrate-sycl-linux-DPCPP
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-sycl-linux-dpcpp -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
istegrate-sycl-linux-DPCPP-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [ "integrate-sycl-linux-DPCPP" ]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: icx/compiler_ppkg-rel/20240110
|
||||
artifact-in: integrate-sycl-linux-DPCPP
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-sycl-linux-dpcpp -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
####################################################################
|
||||
# MacOS
|
||||
####################################################################
|
||||
integrate-macos-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
artifact-out: integrate-macos-GCC
|
||||
artifact-path: ./build/*.zip
|
||||
cmd: |
|
||||
cmake --preset integrate-macos-gcc -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
# cmake --build build --config Release --target post_package_notarize TODO: reactivate this when notarization problems are solved
|
||||
|
||||
integrate-macos-GCC-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
needs: [ "integrate-macos-GCC" ]
|
||||
with:
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
artifact-in: integrate-macos-GCC
|
||||
cmd: |
|
||||
cmake --preset integrate-macos-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-macos-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-macos-GCC-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
needs: [ "integrate-macos-GCC" ]
|
||||
with:
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
artifact-in: integrate-macos-GCC
|
||||
cmd: |
|
||||
cmake --preset integrate-macos-gcc -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-macos-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# TODO: cant find tbb/tbb.h ???
|
||||
integrate-macos-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
artifact-out: integrate-macos-CLANG
|
||||
artifact-path: ./build/*.zip
|
||||
cmd: |
|
||||
cmake --preset integrate-macos-clang -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
# cmake --build build --config Release --target post_package_notarize TODO: reactivate this when notarization problems are solved
|
||||
|
||||
integrate-macos-CLANG-test-GCC:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
needs: [ "integrate-macos-CLANG" ]
|
||||
with:
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
artifact-in: integrate-macos-CLANG
|
||||
cmd: |
|
||||
cmake --preset integrate-macos-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-macos-gcc
|
||||
cmake --build build --config Release --target test_integration
|
||||
|
||||
integrate-macos-CLANG-test-CLANG:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
needs: [ "integrate-macos-CLANG" ]
|
||||
with:
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
artifact-in: integrate-macos-CLANG
|
||||
cmd: |
|
||||
cmake --preset integrate-macos-clang -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-macos-clang
|
||||
cmake --build build --config Release --target test_integration
|
||||
+804
-500
File diff suppressed because it is too large
Load Diff
@@ -3,137 +3,177 @@
|
||||
|
||||
name: performance
|
||||
|
||||
on: [workflow_dispatch]
|
||||
permissions: read-all
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '00 01 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
||||
|
||||
########################################
|
||||
# Linux build
|
||||
########################################
|
||||
|
||||
linux-build-DG2-DPCPP:
|
||||
perf-linux-SYCL-DPCPP-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@main
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:20.04
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
artifact-out: linux-DG2-DPCPP
|
||||
artifact-path: ./build/*.tar.gz .ctest_conf
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: intel/2023.0
|
||||
artifact-out: perf-linux-SYCL-DPCPP
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 build:Release compiler:ICX2023.0.0 EMBREE_SYCL_SUPPORT:ON sycl:none gfx:RELEASE ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2-AVX512 tasking:TBB2021.7.0 intensity:4 package:ZIP
|
||||
scripts/test.py build
|
||||
scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset perf-linux-icx-sycl -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
|
||||
linux-build-x86-ICX-ISPC:
|
||||
perf-linux-DG2-A770-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@main
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["perf-linux-SYCL-DPCPP-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2", "perf", "A770" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-in: perf-linux-SYCL-DPCPP
|
||||
setup-benny: true
|
||||
cmd: |
|
||||
cd build
|
||||
ls *.tar.gz
|
||||
tar -xzf embree-?.?.?.sycl.x86_64.linux.tar.gz
|
||||
cd bin
|
||||
source ../embree-vars.sh
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh gpu
|
||||
|
||||
perf-linux-PVC-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["perf-linux-SYCL-DPCPP-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "pvc", "perf" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-in: perf-linux-SYCL-DPCPP
|
||||
setup-benny: true
|
||||
cmd: |
|
||||
# Run it on single tile (disable implicit scaling)
|
||||
export EnableImplicitScaling=0
|
||||
export NEOReadDebugKeys=1
|
||||
export ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE
|
||||
cd build
|
||||
ls *.tar.gz
|
||||
tar -xzf embree-?.?.?.sycl.x86_64.linux.tar.gz
|
||||
cd bin
|
||||
source ../embree-vars.sh
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh gpu
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
perf-linux-x86-ICX-ISPC-build:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-out: linux-build-x86-ICX-ISPC
|
||||
artifact-path: ./build/*.tar.gz .ctest_conf
|
||||
dpcpp-version: intel/2024.1.0
|
||||
artifact-out: perf-linux-x86-ICX-ISPC-build
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 build:Release compiler:ICX2023.0.0 ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2-AVX512 tasking:TBB2021.7.0 intensity:4 package:ZIP
|
||||
scripts/test.py build
|
||||
scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset perf-linux-icx -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
|
||||
|
||||
linux-test-DG2-A750-not_perf:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@main
|
||||
needs: ["linux-build-DG2-DPCPP"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
artifact-in: linux-DG2-DPCPP
|
||||
cmd: |
|
||||
source <(scripts/test.py env --debug)
|
||||
cd build
|
||||
tar -xf embree-4.0.0.sycl.x86_64.linux.tar.gz
|
||||
cd embree-4.0.0.sycl.x86_64.linux
|
||||
chmod +x embree-vars.sh
|
||||
./embree-vars.sh
|
||||
cd bin
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh gpu
|
||||
|
||||
linux-test-DG2-A770:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@main
|
||||
needs: ["linux-build-DG2-DPCPP"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "A770", "perf" ]'
|
||||
artifact-in: linux-DG2-DPCPP
|
||||
cmd: |
|
||||
source <(scripts/test.py env --debug)
|
||||
cd build
|
||||
tar -xf embree-4.0.0.sycl.x86_64.linux.tar.gz
|
||||
cd embree-4.0.0.sycl.x86_64.linux
|
||||
chmod +x embree-vars.sh
|
||||
./embree-vars.sh
|
||||
cd bin
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh gpu
|
||||
|
||||
|
||||
linux-test-i9-12900k:
|
||||
perf-linux-i9-12900k-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/perf.yml@main
|
||||
needs: ["linux-build-x86-ICX-ISPC"]
|
||||
needs: ["perf-linux-x86-ICX-ISPC-build"]
|
||||
with:
|
||||
runs-on: '[ "Linux", "perf", "vis-perf-i9-12900k-1" ]'
|
||||
artifact-in: linux-build-x86-ICX-ISPC
|
||||
artifact-in: perf-linux-x86-ICX-ISPC-build
|
||||
setup-benny: true
|
||||
cmd: |
|
||||
cd build
|
||||
tar -xf embree-4.0.0.x86_64.linux.tar.gz
|
||||
cd embree-4.0.0.x86_64.linux
|
||||
tar -xzf embree-?.?.?.x86_64.linux.tar.gz
|
||||
cd bin
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh cpu
|
||||
|
||||
linux-test-x8380-1:
|
||||
|
||||
perf-linux-x8380-1-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/perf.yml@main
|
||||
needs: ["linux-build-x86-ICX-ISPC"]
|
||||
needs: ["perf-linux-x86-ICX-ISPC-build"]
|
||||
with:
|
||||
runs-on: '[ "Linux", "perf", "vis-perf-x8380-1" ]'
|
||||
artifact-in: linux-build-x86-ICX-ISPC
|
||||
artifact-in: perf-linux-x86-ICX-ISPC-build
|
||||
setup-benny: true
|
||||
cmd: |
|
||||
cd build
|
||||
tar -xf embree-4.0.0.x86_64.linux.tar.gz
|
||||
cd embree-4.0.0.x86_64.linux
|
||||
tar -xzf embree-?.?.?.x86_64.linux.tar.gz
|
||||
cd bin
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh cpu
|
||||
|
||||
linux-test-x8280-1:
|
||||
|
||||
perf-linux-x8280-1-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/perf.yml@main
|
||||
needs: ["linux-build-x86-ICX-ISPC"]
|
||||
needs: ["perf-linux-x86-ICX-ISPC-build"]
|
||||
with:
|
||||
runs-on: '[ "Linux", "perf", "vis-perf-x8280-1" ]'
|
||||
artifact-in: linux-build-x86-ICX-ISPC
|
||||
artifact-in: perf-linux-x86-ICX-ISPC-build
|
||||
setup-benny: true
|
||||
cmd: |
|
||||
cd build
|
||||
tar -xf embree-4.0.0.x86_64.linux.tar.gz
|
||||
cd embree-4.0.0.x86_64.linux
|
||||
tar -xzf embree-?.?.?.x86_64.linux.tar.gz
|
||||
cd bin
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh cpu
|
||||
|
||||
linux-test-a3970x-1:
|
||||
|
||||
perf-linux-a3970x-1-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/perf.yml@main
|
||||
needs: ["linux-build-x86-ICX-ISPC"]
|
||||
needs: ["perf-linux-x86-ICX-ISPC-build"]
|
||||
with:
|
||||
runs-on: '[ "Linux", "perf", "vis-perf-a3970x-1" ]'
|
||||
artifact-in: linux-build-x86-ICX-ISPC
|
||||
artifact-in: perf-linux-x86-ICX-ISPC-build
|
||||
setup-benny: true
|
||||
cmd: |
|
||||
cd build
|
||||
tar -xf embree-4.0.0.x86_64.linux.tar.gz
|
||||
cd embree-4.0.0.x86_64.linux
|
||||
tar -xzf embree-?.?.?.x86_64.linux.tar.gz
|
||||
cd bin
|
||||
$GITHUB_WORKSPACE/scripts/run-perf.sh cpu
|
||||
|
||||
linux-DG2-A770-buildbench:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["perf-linux-SYCL-DPCPP-build"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2", "perf", "A770" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-in: perf-linux-SYCL-DPCPP
|
||||
setup-benny: true
|
||||
cmd: |
|
||||
cd build
|
||||
ls *.tar.gz
|
||||
tar -xzf embree-?.?.?.sycl.x86_64.linux.tar.gz
|
||||
git clone https://github.com/intel-innersource/libraries.graphics.renderkit.embree.models.git embree-models
|
||||
ls -al
|
||||
source embree-vars.sh
|
||||
echo "bin/embree_buildbench --legacy"
|
||||
bin/embree_buildbench --legacy
|
||||
echo "bin/embree_buildbench_sycl --legacy"
|
||||
bin/embree_buildbench_sycl --legacy
|
||||
echo "bin/embree_buildbench --legacy -c embree-models/crown/crown.ecs"
|
||||
bin/embree_buildbench --legacy -c embree-models/crown/crown.ecs
|
||||
echo "bin/embree_buildbench_sycl --legacy -c embree-models/crown/crown.ecs"
|
||||
bin/embree_buildbench_sycl --legacy -c embree-models/crown/crown.ecs
|
||||
+198
-73
@@ -3,6 +3,8 @@
|
||||
|
||||
name: release
|
||||
|
||||
permissions: read-all
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '00 00 * * *'
|
||||
@@ -13,146 +15,269 @@ jobs:
|
||||
#####################################################################
|
||||
# Release Builds
|
||||
####################################################################
|
||||
|
||||
release-windows-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP:
|
||||
release-windows:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_windows.yml@main
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "build", "avx512" ]'
|
||||
artifact-out: release-windows-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-path: ./build/*.zip
|
||||
artifact-out: release-windows
|
||||
artifact-path: ./build/embree-*.zip
|
||||
dpcpp-version: intel-llvm/nightly-2023-10-26-rk
|
||||
shell: cmd
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Release compiler:ICX2023.0.0 ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2-AVX512 tasking:TBB2021.7.0 intensity:4 package:ZIP
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
cmake --preset release-windows -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
cmake --build build --target test_package
|
||||
|
||||
release-macosx-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP:
|
||||
release-macosx:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_macos.yml@main
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
runs-on: '[ "macOS", "embree", "sign", "avx2" ]'
|
||||
artifact-out: release-macosx-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-path: ./build/*.zip
|
||||
project: embree
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 build:Release compiler:ICX2023.0.0 ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2 tasking:TBB2021.7.0 intensity:4 package:ZIP
|
||||
scripts/test.py build
|
||||
scripts/test.py test
|
||||
source scripts/cmake-presets/macos-env.sh
|
||||
cmake --preset release-macos -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
cmake --build build --target test_package
|
||||
rm build/embree-*-testing.zip
|
||||
notarize-package: build/embree-*.zip
|
||||
artifact-out: release-macosx
|
||||
artifact-path: ./build/*.zip
|
||||
|
||||
release-linux-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP:
|
||||
verify-package-macosx:
|
||||
needs: release-macosx
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_docker.yml@main
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
image: embree/rockylinux:8.7
|
||||
project: embree
|
||||
runs-on: '[ "macOS", "build", "x86_64" ]'
|
||||
artifact-in: release-macosx
|
||||
cmd: |
|
||||
mkdir package
|
||||
tar -xzvf build/embree-* -C ./package
|
||||
sign-path-verify: ./package
|
||||
|
||||
release-macosx-arm:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
project: embree
|
||||
runs-on: '[ "macOS13", "test", "arm" ]'
|
||||
cmd: |
|
||||
source scripts/cmake-presets/macos-env.sh
|
||||
cmake --preset release-macos-arm -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
cmake --build build --target test_package
|
||||
rm build/embree-*-testing.zip
|
||||
notarize-package: build/embree-*.zip
|
||||
artifact-out: release-macosx-arm
|
||||
artifact-path: ./build/*.zip
|
||||
|
||||
verify-package-macosx-arm:
|
||||
needs: release-macosx-arm
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/macos.yml@main
|
||||
with:
|
||||
project: embree
|
||||
runs-on: '[ "macOS13", "test", "arm" ]'
|
||||
artifact-in: release-macosx-arm
|
||||
cmd: |
|
||||
mkdir package
|
||||
tar -xzvf build/embree-* -C ./package
|
||||
sign-path-verify: ./package
|
||||
|
||||
release-linux:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "avx512" ]'
|
||||
artifact-out: release-linux-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-out: release-linux
|
||||
artifact-path: ./build/*.tar.gz
|
||||
dpcpp-version: intel-llvm/nightly-2023-10-26-rk
|
||||
pre-cmd: |
|
||||
yum -y install epel-release
|
||||
dnf makecache --refresh
|
||||
dnf config-manager --set-enabled powertools
|
||||
dnf -y update
|
||||
dnf -y install ninja-build
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 build:Release compiler:ICX2023.0.0 ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2-AVX512 tasking:TBB2021.7.0 intensity:4 package:ZIP
|
||||
scripts/test.py build
|
||||
scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset release-linux -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
cmake --build build --target test_package
|
||||
|
||||
|
||||
#####################################################################
|
||||
# DPC++ Release Builds
|
||||
####################################################################
|
||||
|
||||
release-windows-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP:
|
||||
release-windows-sycl:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/windows_gpu.yml@main
|
||||
with:
|
||||
runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-windows-internal.env
|
||||
artifact-out: release-windows-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
env-from-files: ./.github/workflows/gfx-windows-internal.env
|
||||
dpcpp-version: intel-llvm/nightly-2023-10-26-rk
|
||||
artifact-out: release-windows-sycl
|
||||
artifact-path: ./build/*.zip
|
||||
shell: cmd
|
||||
cmd: |
|
||||
python scripts/test.py configure platform:x64 build:Release compiler:ICX2023.0.0 EMBREE_SYCL_SUPPORT:ON sycl:none gfx:RELEASE ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2-AVX512 tasking:TBB2021.7.0 intensity:4 package:ZIP
|
||||
python scripts/test.py build
|
||||
python scripts/test.py test
|
||||
cmake --preset release-windows-sycl -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
cmake --build build --target test_package
|
||||
|
||||
# FIXME: remove this AOT release once JIT properly tested in CI
|
||||
#release-windows-x64-Release-SYCL-ICX2023_0_0-AOT-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP:
|
||||
# secrets: inherit
|
||||
# uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/embree_windows.yml@main
|
||||
# with:
|
||||
# runs-on: '[ "Windows", "NAS", "dg2" ]'
|
||||
# artifact-out: release-windows-x64-Release-SYCL-ICX2023_0_0-AOT-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
# artifact-path: ./build/*.zip
|
||||
# cmd: |
|
||||
# python scripts/test.py configure platform:x64 build:Release compiler:dpcpp EMBREE_SYCL_SUPPORT:ON sycl:dg2 gfx:RELEASE ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2-AVX512 intensity:4 package:ZIP
|
||||
# python scripts/test.py build
|
||||
# python scripts/test.py test
|
||||
|
||||
release-linux-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP:
|
||||
release-linux-sycl:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@devel
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
with:
|
||||
image: embree/ubuntu:20.04
|
||||
image: rockylinux:8.7
|
||||
runs-on: '[ "Linux", "docker", "build" ]'
|
||||
project: embree
|
||||
dpcpp-version: intel-llvm/nightly-2023-10-26-rk
|
||||
artifact-out: release-linux-sycl
|
||||
artifact-path: ./build/*.tar.gz
|
||||
pre-cmd: |
|
||||
yum -y install epel-release
|
||||
dnf makecache --refresh
|
||||
dnf config-manager --set-enabled powertools
|
||||
dnf -y update
|
||||
dnf -y install ninja-build
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
cmake --preset release-linux-sycl -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build --config Release --target build
|
||||
|
||||
release-linux-sycl-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["release-linux-sycl"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-release.env
|
||||
artifact-out: release-linux-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-path: ./build/*.tar.gz
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: intel-llvm/nightly-2023-10-26-rk
|
||||
artifact-in: release-linux-sycl
|
||||
cmd: |
|
||||
scripts/test.py configure platform:x64 build:Release compiler:ICX2023.0.0 EMBREE_SYCL_SUPPORT:ON sycl:none gfx:RELEASE ispc:ispc1.18.1 isas:SSE2-SSE42-AVX-AVX2-AVX512 tasking:TBB2021.7.0 intensity:4 package:ZIP
|
||||
scripts/test.py build
|
||||
scripts/test.py test
|
||||
module load cmake/3.25.3
|
||||
cmake --preset integrate-sycl-linux-dpcpp -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --target test_package
|
||||
|
||||
release-linux-sycl-pvc-test:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: ["release-linux-sycl"]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
options: --device=/dev/dri:/dev/dri
|
||||
runs-on: '[ "Linux", "docker", "pvc" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
dpcpp-version: intel-llvm/nightly-2023-10-26-rk
|
||||
artifact-in: release-linux-sycl
|
||||
cmd: |
|
||||
module load cmake/3.25.3
|
||||
export ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE
|
||||
cmake --preset integrate-sycl-linux-dpcpp -DCMAKE_BUILD_TYPE=Release -DEMBREE_TESTING_INTEGRATION_PRESET=test-linux-icx
|
||||
cmake --build build --target test_package
|
||||
|
||||
#####################################################################
|
||||
# Release binaries scans
|
||||
#####################################################################
|
||||
binary-analysis:
|
||||
needs:
|
||||
- release-windows-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-macosx-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-linux-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-windows
|
||||
- release-macosx
|
||||
- release-linux
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/binary_analysis.yml@main
|
||||
with:
|
||||
project: embree
|
||||
artifact-in-windows: release-windows-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-macos: release-macosx-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-linux: release-linux-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-windows: release-windows
|
||||
artifact-in-macos: release-macosx
|
||||
artifact-in-linux: release-linux
|
||||
path: "build/*.zip build/*.gz"
|
||||
|
||||
antivirus-scan:
|
||||
needs:
|
||||
- release-windows-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-macosx-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-linux-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-windows
|
||||
- release-macosx
|
||||
- release-linux
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/antivirus_scan.yml@main
|
||||
with:
|
||||
project: embree
|
||||
artifact-in-windows: release-windows-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-macos: release-macosx-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-linux: release-linux-x64-Release-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-windows: release-windows
|
||||
artifact-in-macos: release-macosx
|
||||
artifact-in-linux: release-linux
|
||||
path: "build/*.zip build/*.gz"
|
||||
|
||||
binary-analysis-dpcpp:
|
||||
needs:
|
||||
- release-windows-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-linux-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-windows-sycl
|
||||
- release-linux-sycl-test
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/binary_analysis.yml@main
|
||||
with:
|
||||
project: embree
|
||||
artifact-in-windows: release-windows-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-linux: release-linux-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-windows: release-windows-sycl
|
||||
artifact-in-linux: release-linux-sycl
|
||||
path: "build/*.zip build/*.gz"
|
||||
artifact-out-name: "binary-analysis-dpcpp"
|
||||
|
||||
antivirus-scan-dpcpp:
|
||||
needs:
|
||||
- release-windows-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-linux-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
- release-windows-sycl
|
||||
- release-linux-sycl-test
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/antivirus_scan.yml@main
|
||||
with:
|
||||
project: embree
|
||||
artifact-in-windows: release-windows-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-linux: release-linux-x64-Release-SYCL-ICX2023_0_0-ISPC1_18_1-TBB2021_7_0-PACKAGE-ZIP
|
||||
artifact-in-windows: release-windows-sycl
|
||||
artifact-in-linux: release-linux-sycl
|
||||
path: "build/*.zip build/*.gz"
|
||||
artifact-out-name: "antivirus-scan-dpcpp"
|
||||
|
||||
binary-analysis-arm:
|
||||
needs:
|
||||
- release-macosx-arm
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/binary_analysis.yml@main
|
||||
with:
|
||||
project: embree
|
||||
artifact-in-macos: release-macosx-arm
|
||||
path: "build/*.zip"
|
||||
artifact-out-name: "binary-analysis-arm"
|
||||
|
||||
antivirus-scan-arm:
|
||||
needs:
|
||||
- release-macosx-arm
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/antivirus_scan.yml@main
|
||||
with:
|
||||
project: embree
|
||||
artifact-in-macos: release-macosx-arm
|
||||
path: "build/*.zip"
|
||||
artifact-out-name: "antivirus-scan-arm"
|
||||
|
||||
#####################################################################
|
||||
# Testing package
|
||||
#####################################################################
|
||||
test-package:
|
||||
secrets: inherit
|
||||
uses: intel-innersource/libraries.devops.renderkit.workflows/.github/workflows/docker_gpu.yml@main
|
||||
needs: [release-linux]
|
||||
with:
|
||||
image: embree/ubuntu:22.04
|
||||
runs-on: '[ "Linux", "docker", "dg2" ]'
|
||||
project: embree
|
||||
env-from-files: ./.github/workflows/dpcpp-none.env ./.github/workflows/gfx-ubuntu22-public.env
|
||||
artifact-in: release-linux
|
||||
artifact-out: release-testing-PACKAGE-ZIP
|
||||
artifact-path: ./build/*.tar.gz
|
||||
cmd: |
|
||||
rm build/embree-4.3.2.x86_64.linux.tar.gz
|
||||
mv build/embree-4.3.2.x86_64.linux-testing.tar.gz build/embree-4.3.2-testing.tar.gz
|
||||
@@ -9,3 +9,4 @@ kernels/config.h
|
||||
kernels/hash.h
|
||||
include/embree4/rtcore_config.h
|
||||
build
|
||||
out
|
||||
|
||||
@@ -1,6 +1,49 @@
|
||||
Version History
|
||||
---------------
|
||||
|
||||
### Embree 4.3.2
|
||||
- MacOS universal binary compilation now works.
|
||||
- Some bugfixes for AVX512 on MacOS x86 machines.
|
||||
- Embree now uses level zero raytracing extension to build BVH which enables forward-compatibility.
|
||||
|
||||
### Embree 4.3.1
|
||||
- Add missing EMBREE_GEOMETRY types to embree-config.cmake
|
||||
- User defined thread count now takes precedence for internal task scheduler
|
||||
- Fixed static linking issue with ze_wrapper library
|
||||
- Better error reporting for SYCL platform and driver problems in embree_info and tutorial apps.
|
||||
- Patch to glfw source is not applied by default anymore.
|
||||
- Known issue: Running Embree on Intel® Data Center GPU Max Series with 2 tiles (e.g. Intel® Data Center GPU Max 1550) requires setting the environment variable ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE.
|
||||
- Known issue: Embree build using Apple Clang 15 and ARM support (via the SEE2NEON library) may cause "EXEC_BAD_INSTRUCTION" runtime exceptions. Please use Apple Clang <= 14 on macOS.
|
||||
|
||||
### Embree 4.3.0
|
||||
- Added instance array primitive for reducing memony requirements in scenes
|
||||
with large amounts of similar instances.
|
||||
- Properly checks driver if L0 RTAS extension can get loaded.
|
||||
- Added varying version of rtcGetGeometryTransform for ISPC.
|
||||
- Fixed signature of RTCMemoryMonitorFunction for ISPC.
|
||||
- Add support for ARM64 Windows platform in CMake.
|
||||
|
||||
### Embree 4.2.0
|
||||
- SYCL version of Embree with GPU support is no longer in beta phase.
|
||||
- Improved BVH build performance on many core machines for applications that oversubscribe threads.
|
||||
- Added rtcGetGeometryTransformFromScene API function that can get used inside SYCL kernels.
|
||||
- No longer linking to ze_loader in SYCL mode to avoid Intel(R) oneAPI Level Zero dependency
|
||||
for CPU rendering.
|
||||
- Releasing test package to test Embree.
|
||||
|
||||
### Embree 4.1.0
|
||||
- Added support for Intel® Data Center GPU Max Series.
|
||||
- Added ARM64 Linux support.
|
||||
- Added EMBREE_BACKFACE_CULLING_SPHERES cmake option. The new cmake option defaults to OFF.
|
||||
|
||||
### Embree 4.0.1
|
||||
- Improved performance for Tiger Lake, Comet Lake, Cannon Lake, Kaby Lake,
|
||||
and Skylake client CPUs by using 256 bit SIMD instructions by default.
|
||||
- Fixed broken motion blur of RTC_GEOMETRY_TYPE_ROUND_LINEAR_CURVE geometry type.
|
||||
- Fixed bvh build retry issue for TBB 2020.3
|
||||
- Added support for Intel® Data Center GPU Flex Series
|
||||
- Fixed issue on systems without a SYCL platform.
|
||||
|
||||
### Embree 4.0.0
|
||||
- This Embree release adds support for Intel® Arc™ GPUs through SYCL.
|
||||
- The SYCL support of Embree is in beta phase. Current functionality, quality,
|
||||
|
||||
+32
-28
@@ -1,16 +1,12 @@
|
||||
## Copyright 2009-2021 Intel Corporation
|
||||
## SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
|
||||
|
||||
SET(EMBREE_VERSION_MAJOR 4)
|
||||
SET(EMBREE_VERSION_MINOR 0)
|
||||
SET(EMBREE_VERSION_PATCH 1)
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
SET(EMBREE_VERSION_NOTE "-beta") # Embree SYCL version is in beta phase
|
||||
ELSE()
|
||||
SET(EMBREE_VERSION_NOTE "")
|
||||
ENDIF()
|
||||
SET(EMBREE_VERSION_MINOR 3)
|
||||
SET(EMBREE_VERSION_PATCH 2)
|
||||
SET(EMBREE_VERSION_NOTE "")
|
||||
|
||||
SET(EMBREE_VERSION ${EMBREE_VERSION_MAJOR}.${EMBREE_VERSION_MINOR}.${EMBREE_VERSION_PATCH})
|
||||
MATH(EXPR EMBREE_VERSION_NUMBER "10000*${EMBREE_VERSION_MAJOR} + 100*${EMBREE_VERSION_MINOR} + ${EMBREE_VERSION_PATCH}")
|
||||
@@ -76,7 +72,13 @@ IF(COMMAND cmake_policy)
|
||||
if(POLICY CMP0074)
|
||||
cmake_policy(SET CMP0074 NEW)
|
||||
endif()
|
||||
ENDIF(COMMAND cmake_policy)
|
||||
if(POLICY CMP0135)
|
||||
cmake_policy(SET CMP0135 NEW)
|
||||
endif()
|
||||
if(POLICY CMP0057)
|
||||
cmake_policy(SET CMP0057 NEW)
|
||||
endif()
|
||||
ENDIF()
|
||||
|
||||
MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
|
||||
MARK_AS_ADVANCED(EXECUTABLE_OUTPUT_PATH)
|
||||
@@ -89,9 +91,7 @@ MARK_AS_ADVANCED(CLEAR CMAKE_CXX_COMPILER)
|
||||
|
||||
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/common/cmake" ${CMAKE_MODULE_PATH})
|
||||
|
||||
IF (BUILD_TESTING)
|
||||
INCLUDE(test)
|
||||
ENDIF()
|
||||
INCLUDE(test)
|
||||
|
||||
set(BUILD_DOC OFF CACHE INTERNAL "build documentation (internal only)")
|
||||
IF (BUILD_DOC)
|
||||
@@ -145,14 +145,6 @@ OPTION(EMBREE_STACK_PROTECTOR "When enabled Embree compiles with stack protectio
|
||||
|
||||
IF (NOT APPLE)
|
||||
OPTION(EMBREE_SYCL_SUPPORT "Enables SYCL GPU support." OFF)
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
MESSAGE(WARNING
|
||||
"==================================================================================\n"
|
||||
" The SYCL support of Embree is in beta phase. Current functionality, quality, \n"
|
||||
" and GPU performance may not reflect that of the final product. Please read the \n"
|
||||
" documentation section \"Embree SYCL Known Issues\" for known limitations. \n"
|
||||
"==================================================================================\n")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
CMAKE_DEPENDENT_OPTION(EMBREE_SYCL_LARGEGRF "Enables SYCL large GRF support." OFF "EMBREE_SYCL_SUPPORT" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(EMBREE_SYCL_DBG "Enables DPC++ debug info." OFF "EMBREE_SYCL_SUPPORT" OFF)
|
||||
@@ -185,7 +177,7 @@ IF (EMBREE_SYCL_RT_VALIDATION_API)
|
||||
ENDIF()
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(EMBREE_SYCL_IMPLICIT_DISPATCH_GLOBALS "Using L0 allocated Dispatch Globals" ON "EMBREE_SYCL_RT_VALIDATION_API" OFF)
|
||||
IF (NOT EMBREE_SYCL_IMPLICIT_DISPATCH_GLOBALS)
|
||||
IF (EMBREE_SYCL_RT_VALIDATION_API AND NOT EMBREE_SYCL_IMPLICIT_DISPATCH_GLOBALS)
|
||||
ADD_DEFINITIONS("-DEMBREE_SYCL_ALLOC_DISPATCH_GLOBALS")
|
||||
ENDIF()
|
||||
|
||||
@@ -202,8 +194,15 @@ IF (EMBREE_SYCL_SUPPORT)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(EMBREE_SYCL_L0_RTAS_BUILDER "Enable Level Zero RTAS builder" ON "EMBREE_SYCL_SUPPORT" OFF)
|
||||
IF (EMBREE_SYCL_L0_RTAS_BUILDER)
|
||||
ADD_DEFINITIONS("-DEMBREE_SYCL_L0_RTAS_BUILDER")
|
||||
ENDIF()
|
||||
|
||||
OPTION(EMBREE_RAY_MASK "Enables ray mask support." ON)
|
||||
OPTION(EMBREE_BACKFACE_CULLING "Enables backface culling.")
|
||||
OPTION(EMBREE_BACKFACE_CULLING_CURVES "Enables backface culling for curve primitives." OFF)
|
||||
OPTION(EMBREE_BACKFACE_CULLING_SPHERES "Enables backface culling for sphere primitives." OFF)
|
||||
|
||||
OPTION(EMBREE_FILTER_FUNCTION "Enables filter functions." ON)
|
||||
OPTION(EMBREE_IGNORE_INVALID_RAYS "Ignores invalid rays." OFF) # FIXME: enable by default?
|
||||
@@ -214,10 +213,11 @@ OPTION(EMBREE_GEOMETRY_CURVE "Enables support for curve geometries." ON)
|
||||
OPTION(EMBREE_GEOMETRY_SUBDIVISION "Enables support for subdiv geometries." ON)
|
||||
OPTION(EMBREE_GEOMETRY_USER "Enables support for user geometries." ON)
|
||||
OPTION(EMBREE_GEOMETRY_INSTANCE "Enables support for instances." ON)
|
||||
OPTION(EMBREE_GEOMETRY_INSTANCE_ARRAY "Enables support for instance arrays." ON)
|
||||
SET(EMBREE_MAX_INSTANCE_LEVEL_COUNT 1 CACHE STRING "Maximum number of instance levels.")
|
||||
|
||||
IF (NOT EMBREE_GEOMETRY_INSTANCE AND NOT EMBREE_MAX_INSTANCE_LEVEL_COUNT EQUAL 1)
|
||||
message(FATAL_ERROR "EMBREE_MAX_INSTANCE_LEVEL_COUNT must be 1 when EMBREE_GEOMETRY_INSTANCE is disabled")
|
||||
IF (NOT EMBREE_GEOMETRY_INSTANCE AND NOT EMBREE_GEOMETRY_INSTANCE_ARRAY AND NOT EMBREE_MAX_INSTANCE_LEVEL_COUNT EQUAL 1)
|
||||
message(FATAL_ERROR "EMBREE_MAX_INSTANCE_LEVEL_COUNT must be 1 when EMBREE_GEOMETRY_INSTANCE and EMBREE_GEOMETRY_INSTANCE_ARRAY are disabled")
|
||||
ENDIF()
|
||||
|
||||
OPTION(EMBREE_GEOMETRY_GRID "Enables support for grid geometries." ON)
|
||||
@@ -235,10 +235,10 @@ OPTION(EMBREE_MIN_WIDTH "Enables min-width feature to enlarge curve and point th
|
||||
##############################################################
|
||||
|
||||
# detect ARM compilation
|
||||
IF (APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" OR CMAKE_OSX_ARCHITECTURES MATCHES "arm64"))
|
||||
IF (APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" AND CMAKE_OSX_ARCHITECTURES STREQUAL "") OR ("arm64" IN_LIST CMAKE_OSX_ARCHITECTURES))
|
||||
MESSAGE(STATUS "Building for Apple silicon")
|
||||
SET(EMBREE_ARM ON)
|
||||
ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
|
||||
MESSAGE(STATUS "Building for AArch64")
|
||||
SET(EMBREE_ARM ON)
|
||||
ENDIF()
|
||||
@@ -294,6 +294,9 @@ message(DEBUG "CMAKE_GENERATOR_TOOLSET: ${CMAKE_GENERATOR_TOOLSET}")
|
||||
message(DEBUG "CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
|
||||
message(DEBUG "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-fsycl COMPILER_HAS_SYCL_SUPPORT)
|
||||
|
||||
IF (WIN32)
|
||||
IF (NOT DEFAULT_CMAKE_CONFIGURATION_TYPES_SET)
|
||||
SET(CMAKE_CONFIGURATION_TYPES "${CONFIGURATION_TYPES}" CACHE STRING "List of generated configurations." FORCE)
|
||||
@@ -302,8 +305,7 @@ IF (WIN32)
|
||||
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
IF ((${CMAKE_CXX_COMPILER_ID} MATCHES "IntelLLVM") OR
|
||||
(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND ${CMAKE_CXX_COMPILER} MATCHES "icx") OR
|
||||
(${CMAKE_CXX_COMPILER} MATCHES "dpcpp"))
|
||||
(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND COMPILER_HAS_SYCL_SUPPORT))
|
||||
MESSAGE("-- DPCPP compiler detected")
|
||||
INCLUDE(dpcpp)
|
||||
ELSEIF(${CMAKE_GENERATOR_TOOLSET} MATCHES "^LLVM")
|
||||
@@ -411,6 +413,9 @@ IF (EMBREE_MAX_ISA STREQUAL "NONE")
|
||||
ELSE()
|
||||
OPTION(EMBREE_ISA_AVX512 "Enables AVX512 ISA." ${COMPILER_SUPPORTS_AVX512})
|
||||
ENDIF()
|
||||
# Don't use OPTION, but still set them to OFF, so that embree-config.cmake is consisten with its definitions
|
||||
SET(EMBREE_ISA_NEON OFF)
|
||||
SET(EMBREE_ISA_NEON2X OFF)
|
||||
ENDIF()
|
||||
|
||||
ELSEIF (EMBREE_MAX_ISA STREQUAL "DEFAULT")
|
||||
@@ -708,4 +713,3 @@ ENDIF()
|
||||
##############################################################
|
||||
|
||||
INCLUDE(CPack)
|
||||
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"version": 4,
|
||||
"cmakeMinimumRequired": {
|
||||
"major": 3,
|
||||
"minor": 11,
|
||||
"patch": 0
|
||||
},
|
||||
"include": [
|
||||
"scripts/cmake-presets/os.json",
|
||||
"scripts/cmake-presets/package.json",
|
||||
"scripts/cmake-presets/compiler.json",
|
||||
"scripts/cmake-presets/tbb.json",
|
||||
"scripts/cmake-presets/continuous.json",
|
||||
"scripts/cmake-presets/nightly.json",
|
||||
"scripts/cmake-presets/release.json",
|
||||
"scripts/cmake-presets/integrate.json",
|
||||
"scripts/cmake-presets/performance.json"
|
||||
],
|
||||
"configurePresets": [
|
||||
|
||||
{
|
||||
"name": "package-linux-icx-ispc1_19_0-tbb2021_9_0-perf",
|
||||
"inherits": ["package-linux", "env", "icx", "ispc1_19_0", "tbb2021_9_0"],
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"EMBREE_MAX_ISA": "AVX512",
|
||||
"EMBREE_USE_GOOGLE_BENCHMARK": "ON",
|
||||
"EMBREE_BUILD_GOOGLE_BENCHMARK_FROM_SOURCE": "ON"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
"name": "package-linux-icx-sycl-ispc1_19_0-tbb2021_9_0-perf",
|
||||
"inherits": ["package-linux", "env", "icx", "ispc1_19_0", "tbb2021_9_0"],
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"EMBREE_SYCL_SUPPORT": "ON",
|
||||
"EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF",
|
||||
"EMBREE_SYCL_AOT_DEVICES": "none",
|
||||
"EMBREE_MAX_ISA": "AVX512",
|
||||
"EMBREE_USE_GOOGLE_BENCHMARK": "ON",
|
||||
"EMBREE_BUILD_GOOGLE_BENCHMARK_FROM_SOURCE": "ON"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"name": "package-windows-v141-ispc1_19_0-tbb2021_9_0",
|
||||
"inherits": ["package-windows", "env", "v141", "ispc1_19_0", "tbb2021_9_0"],
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"EMBREE_MAX_ISA": "SSE2"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "package-windows-v140-ispc1_19_0-tbb2021_9_0",
|
||||
"inherits": ["package-windows", "env", "v140", "ispc1_19_0", "tbb2021_9_0"],
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"EMBREE_MAX_ISA": "SSE2"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name": "package-windows-icx-sycl-ispc1_19_0-tbb2021_9_0",
|
||||
"inherits": ["package-windows", "env", "icx-windows", "ispc1_19_0", "tbb2021_9_0"],
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"EMBREE_SYCL_SUPPORT": "ON",
|
||||
"EMBREE_SYCL_L0_RTAS_BUILDER" : "OFF",
|
||||
"EMBREE_SYCL_AOT_DEVICES": "none",
|
||||
"EMBREE_MAX_ISA": "AVX512"
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
{
|
||||
"name": "linux-coverity",
|
||||
"inherits": ["package-linux", "env", "gcc", "tasking_internal"],
|
||||
"binaryDir": "${sourceDir}/build",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release",
|
||||
"EMBREE_MAX_ISA": "SSE2"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -12,7 +12,8 @@ namespace embree
|
||||
template<typename Index, class UnaryPredicate>
|
||||
__forceinline bool parallel_any_of (Index first, Index last, UnaryPredicate pred)
|
||||
{
|
||||
bool ret = false;
|
||||
std::atomic_bool ret;
|
||||
ret = false;
|
||||
|
||||
#if defined(TASKING_TBB)
|
||||
#if TBB_INTERFACE_VERSION >= 12002
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#===============================================================================
|
||||
|
||||
# We use INTERFACE libraries, which are only supported in 3.x
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
# These two are used to automatically find the root and include directories.
|
||||
set(_TBB_INCLUDE_SUBDIR "include")
|
||||
|
||||
@@ -8,10 +8,19 @@ MACRO(_SET_IF_EMPTY VAR VALUE)
|
||||
ENDMACRO()
|
||||
|
||||
IF (EMBREE_ARM)
|
||||
SET(FLAGS_SSE2 "-D__SSE__ -D__SSE2__")
|
||||
SET(FLAGS_SSE42 "-D__SSE4_2__ -D__SSE4_1__")
|
||||
SET(FLAGS_AVX "-D__AVX__ -D__SSE4_2__ -D__SSE4_1__ -D__BMI__ -D__BMI2__ -D__LZCNT__")
|
||||
SET(FLAGS_AVX2 "-D__AVX2__ -D__AVX__ -D__SSE4_2__ -D__SSE4_1__ -D__BMI__ -D__BMI2__ -D__LZCNT__")
|
||||
IF ("x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES)
|
||||
# set ARM an x86 flags for macOS universal binary build
|
||||
SET(FLAGS_SSE2 "-D__SSE__ -D__SSE2__ -msse -msse2 -mno-sse4.2")
|
||||
SET(FLAGS_SSE42 "-D__SSE4_2__ -D__SSE4_1__ -msse4.2")
|
||||
SET(FLAGS_AVX "-D__AVX__ -D__SSE4_2__ -D__SSE4_1__ -D__BMI__ -D__BMI2__ -D__LZCNT__ -mavx")
|
||||
SET(FLAGS_AVX2 "-D__AVX2__ -D__AVX__ -D__SSE4_2__ -D__SSE4_1__ -D__BMI__ -D__BMI2__ -D__LZCNT__ -mf16c -mavx2 -mfma -mlzcnt -mbmi -mbmi2")
|
||||
_SET_IF_EMPTY(FLAGS_AVX512 "-march=skx")
|
||||
ELSE ()
|
||||
SET(FLAGS_SSE2 "-D__SSE__ -D__SSE2__")
|
||||
SET(FLAGS_SSE42 "-D__SSE4_2__ -D__SSE4_1__")
|
||||
SET(FLAGS_AVX "-D__AVX__ -D__SSE4_2__ -D__SSE4_1__ -D__BMI__ -D__BMI2__ -D__LZCNT__")
|
||||
SET(FLAGS_AVX2 "-D__AVX2__ -D__AVX__ -D__SSE4_2__ -D__SSE4_1__ -D__BMI__ -D__BMI2__ -D__LZCNT__")
|
||||
ENDIF ()
|
||||
ELSE ()
|
||||
# for `thread` keyword
|
||||
_SET_IF_EMPTY(FLAGS_SSE2 "-msse -msse2 -mno-sse4.2")
|
||||
|
||||
@@ -20,8 +20,6 @@ IF (NOT WIN32)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
OPTION(EMBREE_LEVEL_ZERO "Use level zero API" OFF)
|
||||
|
||||
GET_FILENAME_COMPONENT(SYCL_COMPILER_DIR ${CMAKE_CXX_COMPILER} PATH)
|
||||
GET_FILENAME_COMPONENT(SYCL_COMPILER_NAME ${CMAKE_CXX_COMPILER} NAME_WE)
|
||||
IF (NOT SYCL_COMPILER_NAME STREQUAL "clang++")
|
||||
@@ -74,6 +72,7 @@ IF (EMBREE_SYCL_SUPPORT)
|
||||
${SYCL_COMPILER_LIB_DIR}/sycl[0-9].lib
|
||||
${SYCL_COMPILER_LIB_DIR}/sycl[0-9][0-9].lib)
|
||||
ENDIF()
|
||||
LIST(GET SYCL_LIB 0 SYCL_LIB)
|
||||
GET_FILENAME_COMPONENT(SYCL_LIB_NAME ${SYCL_LIB} NAME_WE)
|
||||
ELSE()
|
||||
SET(SYCL_LIB_NAME "sycl")
|
||||
@@ -145,10 +144,16 @@ IF (EMBREE_SYCL_SUPPORT)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pessimizing-move") # disabled: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
|
||||
|
||||
IF (SYCL_ONEAPI_ICX AND WIN32)
|
||||
IF (${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 2024.0)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I\"${SYCL_COMPILER_DIR}/../opt/compiler/include/sycl\" -I\"${SYCL_COMPILER_DIR}/../opt/compiler/include/sycl/sycl\"") # disable warning from SYCL header
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I\"${SYCL_COMPILER_DIR}/../include/sycl\" -I\"${SYCL_COMPILER_DIR}/../include/\"") # disable warning from SYCL header
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qstd=c++17")
|
||||
ELSE()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
||||
IF (SYCL_ONEAPI_ICX AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 2024.0)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem \"${SYCL_COMPILER_DIR}/../opt/compiler/include/sycl\" -isystem \"${SYCL_COMPILER_DIR}/../opt/compiler/include/sycl/sycl\"") # disable warning from SYCL header
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem \"${SYCL_COMPILER_DIR}/../include/sycl\" -isystem \"${SYCL_COMPILER_DIR}/../include/\"") # disable warning from SYCL header
|
||||
ENDIF()
|
||||
|
||||
@@ -168,6 +173,8 @@ IF(SYCL_ONEAPI_ICX)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Qimf-use-svml:false")
|
||||
SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} /Qno-intel-lib")
|
||||
SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} /Qno-intel-lib")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /Qoption,link,/DEPENDENTLOADFLAG:0x2000")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /Qoption,link,/DEPENDENTLOADFLAG:0x2000")
|
||||
ELSE()
|
||||
SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -static-intel")
|
||||
SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -static-intel")
|
||||
|
||||
@@ -22,6 +22,7 @@ SET(EMBREE_ISA_AVX2 @EMBREE_ISA_AVX2@)
|
||||
SET(EMBREE_ISA_AVX512 @EMBREE_ISA_AVX512@)
|
||||
SET(EMBREE_ISA_AVX512SKX @EMBREE_ISA_AVX512@) # just for compatibility
|
||||
SET(EMBREE_ISA_NEON @EMBREE_ISA_NEON@)
|
||||
SET(EMBREE_ISA_NEON2X @EMBREE_ISA_NEON2X@)
|
||||
|
||||
SET(EMBREE_BUILD_TYPE @CMAKE_BUILD_TYPE@)
|
||||
SET(EMBREE_ISPC_SUPPORT @EMBREE_ISPC_SUPPORT@)
|
||||
@@ -44,6 +45,9 @@ SET(EMBREE_GEOMETRY_QUAD @EMBREE_GEOMETRY_QUAD@)
|
||||
SET(EMBREE_GEOMETRY_CURVE @EMBREE_GEOMETRY_CURVE@)
|
||||
SET(EMBREE_GEOMETRY_SUBDIVISION @EMBREE_GEOMETRY_SUBDIVISION@)
|
||||
SET(EMBREE_GEOMETRY_USER @EMBREE_GEOMETRY_USER@)
|
||||
SET(EMBREE_GEOMETRY_INSTANCE @EMBREE_GEOMETRY_INSTANCE@)
|
||||
SET(EMBREE_GEOMETRY_INSTANCE_ARRAY @EMBREE_GEOMETRY_INSTANCE_ARRAY@)
|
||||
SET(EMBREE_GEOMETRY_GRID @EMBREE_GEOMETRY_GRID@)
|
||||
SET(EMBREE_GEOMETRY_POINT @EMBREE_GEOMETRY_POINT@)
|
||||
|
||||
SET(EMBREE_RAY_PACKETS @EMBREE_RAY_PACKETS@)
|
||||
@@ -93,9 +97,16 @@ IF (EMBREE_SYCL_SUPPORT)
|
||||
ENDIF()
|
||||
IF (EMBREE_STATIC_LIB)
|
||||
INCLUDE("${EMBREE_ROOT_DIR}/@EMBREE_CMAKEEXPORT_DIR@/embree_rthwif-targets.cmake")
|
||||
INCLUDE("${EMBREE_ROOT_DIR}/@EMBREE_CMAKEEXPORT_DIR@/ze_wrapper-targets.cmake")
|
||||
ENDIF()
|
||||
INCLUDE("${EMBREE_ROOT_DIR}/@EMBREE_CMAKEEXPORT_DIR@/embree_sycl-targets.cmake")
|
||||
|
||||
ENDIF()
|
||||
|
||||
INCLUDE("${EMBREE_ROOT_DIR}/@EMBREE_CMAKEEXPORT_DIR@/embree-targets.cmake")
|
||||
|
||||
|
||||
SET(EMBREE_TESTING_ONLY_SYCL_TESTS @EMBREE_TESTING_ONLY_SYCL_TESTS@)
|
||||
SET(EMBREE_TESTING_INTENSITY @EMBREE_TESTING_INTENSITY@)
|
||||
SET(EMBREE_TESTING_MEMCHECK @EMBREE_TESTING_MEMCHECK@)
|
||||
SET(EMBREE_TESTING_BENCHMARK @EMBREE_TESTING_BENCHMARK@)
|
||||
|
||||
@@ -39,8 +39,6 @@ IF (NOT EMBREE_ISPC_EXECUTABLE)
|
||||
FIND_PROGRAM(EMBREE_ISPC_EXECUTABLE ispc PATHS ${ISPC_DIR_HINT} DOC "Path to the ISPC executable.")
|
||||
IF (NOT EMBREE_ISPC_EXECUTABLE)
|
||||
MESSAGE(FATAL_ERROR "Intel SPMD Compiler (ISPC) not found. Disable EMBREE_ISPC_SUPPORT or install ISPC.")
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Found Intel SPMD Compiler (ISPC): ${EMBREE_ISPC_EXECUTABLE}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
@@ -51,6 +49,8 @@ EXECUTE_PROCESS(COMMAND ${EMBREE_ISPC_EXECUTABLE} --version
|
||||
|
||||
IF (NOT ${ISPC_RESULT} STREQUAL "0")
|
||||
MESSAGE(FATAL_ERROR "Error executing ISPC executable '${EMBREE_ISPC_EXECUTABLE}': ${ISPC_RESULT}")
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Found working Intel SPMD Compiler (ISPC): ${EMBREE_ISPC_EXECUTABLE}")
|
||||
ENDIF()
|
||||
|
||||
STRING(REGEX MATCH "([0-9]+[.][0-9]+[.][0-9]+)" DUMMY "${ISPC_OUTPUT}")
|
||||
|
||||
@@ -22,6 +22,9 @@ MACRO(DISABLE_STACK_PROTECTOR_FOR_FILE file)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x2000")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEPENDENTLOADFLAG:0x2000")
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_CXX_FLAGS}")
|
||||
STRING(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) # disable native runtime checks
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DDEBUG") # enables assertions
|
||||
|
||||
+68
-27
@@ -39,7 +39,8 @@ IF (EMBREE_SYCL_SUPPORT AND EMBREE_INSTALL_DEPENDENCIES)
|
||||
"${DPCPP_COMPILER_DIR}/../bin/sycl?.dll")
|
||||
INSTALL(FILES ${LIB_SYCL_DLL_FILES} DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/../bin/pi_level_zero.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/pi_level_zero.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/win_proxy_loader.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib OPTIONAL)
|
||||
|
||||
IF (EXISTS "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/svml_dispmd.dll")
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/svml_dispmd.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
@@ -47,14 +48,21 @@ IF (EMBREE_SYCL_SUPPORT AND EMBREE_INSTALL_DEPENDENCIES)
|
||||
IF (EXISTS "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/libmmd.dll")
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/libmmd.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ENDIF()
|
||||
|
||||
IF (EXISTS "${DPCPP_COMPILER_DIR}/libmmd.dll")
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/libmmd.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ENDIF()
|
||||
|
||||
IF (EXISTS "${DPCPP_COMPILER_DIR}/pi_win_proxy_loader.dll")
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/pi_win_proxy_loader.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
|
||||
FILE(GLOB LIB_SYCL_FILES LIST_DIRECTORIES FALSE
|
||||
"${DPCPP_COMPILER_DIR}/../lib/libsycl.so"
|
||||
"${DPCPP_COMPILER_DIR}/../lib/libsycl.so.?"
|
||||
"${DPCPP_COMPILER_DIR}/../lib/libsycl.so.?.?"
|
||||
"${DPCPP_COMPILER_DIR}/../lib/libsycl.so.?.?.?")
|
||||
"${DPCPP_COMPILER_DIR}/../lib/libsycl.so.?.?.?"
|
||||
"${DPCPP_COMPILER_DIR}/../lib/libsycl.so.?.?.?-?")
|
||||
INSTALL(FILES ${LIB_SYCL_FILES} DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib)
|
||||
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/../lib/libpi_level_zero.so" DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib)
|
||||
@@ -88,6 +96,9 @@ IF (WIN32)
|
||||
IF (EXISTS "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/libmmd.dll")
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/libmmd.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ENDIF()
|
||||
IF (EXISTS "${DPCPP_COMPILER_DIR}//libmmd.dll")
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/libmmd.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ENDIF()
|
||||
IF (EXISTS "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/svml_dispmd.dll")
|
||||
INSTALL(FILES "${DPCPP_COMPILER_DIR}/../redist/intel64_win/compiler/svml_dispmd.dll" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ENDIF()
|
||||
@@ -233,6 +244,7 @@ SET(CPACK_PACKAGE_NAME "Intel(R) Embree Ray Tracing Kernels")
|
||||
SET(CPACK_PACKAGE_FILE_NAME "embree-${EMBREE_VERSION}${EMBREE_VERSION_NOTE}")
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.sycl")
|
||||
SET(EMBREE_VERSION_SUFFIX)
|
||||
ENDIF()
|
||||
#SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/embree-doc/images/icon.png")
|
||||
#SET(CPACK_PACKAGE_RELOCATABLE TRUE)
|
||||
@@ -245,14 +257,25 @@ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Intel(R) Embree implements high performan
|
||||
SET(CPACK_PACKAGE_VENDOR "Intel Corporation")
|
||||
SET(CPACK_PACKAGE_CONTACT embree_support@intel.com)
|
||||
|
||||
|
||||
SET(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
|
||||
SET(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP)
|
||||
|
||||
SET(CPACK_COMPONENT_LIB_DISPLAY_NAME "Library")
|
||||
SET(CPACK_COMPONENT_LIB_DESCRIPTION "The Embree library including documentation.")
|
||||
SET(CPACK_COMPONENT_LIB_GROUP "embree")
|
||||
|
||||
SET(CPACK_COMPONENT_DEVEL_DISPLAY_NAME "Development")
|
||||
SET(CPACK_COMPONENT_DEVEL_DESCRIPTION "Header Files for C and ISPC required to develop applications with Embree.")
|
||||
SET(CPACK_COMPONENT_DEVEL_GROUP "embree")
|
||||
|
||||
SET(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Examples")
|
||||
SET(CPACK_COMPONENT_EXAMPLES_DESCRIPTION "Tutorials demonstrating how to use Embree.")
|
||||
SET(CPACK_COMPONENT_EXAMPLES_GROUP "embree")
|
||||
|
||||
SET(CPACK_COMPONENT_TESTING_DISPLAY_NAME "Testing")
|
||||
SET(CPACK_COMPONENT_TESTING_DESCRIPTION "Models and reference images for tests")
|
||||
SET(CPACK_COMPONENT_TESTING_GROUP "embree-testing")
|
||||
|
||||
# dependencies between components
|
||||
#SET(CPACK_COMPONENT_DEVEL_DEPENDS lib)
|
||||
@@ -265,7 +288,6 @@ SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE.txt")
|
||||
|
||||
# Windows specific settings
|
||||
IF(WIN32)
|
||||
|
||||
IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(ARCH x64)
|
||||
SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME} x64")
|
||||
@@ -276,11 +298,8 @@ IF(WIN32)
|
||||
|
||||
SET(CPACK_GENERATOR ZIP)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.${ARCH}.windows")
|
||||
SET(CPACK_MONOLITHIC_INSTALL 1)
|
||||
IF (EMBREE_TESTING_PACKAGE)
|
||||
SET(PACKAGE_SCRIPT "${PROJECT_SOURCE_DIR}/scripts/package_win.bat")
|
||||
ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" COMMAND ${PACKAGE_SCRIPT} ${CMAKE_BUILD_TYPE} "${CPACK_PACKAGE_FILE_NAME}.zip")
|
||||
ENDIF()
|
||||
SET(PACKAGE_BASE_NAME "${CPACK_PACKAGE_FILE_NAME}")
|
||||
SET(PACKAGE_EXT "zip")
|
||||
|
||||
# MacOSX specific settings
|
||||
ELSEIF(APPLE)
|
||||
@@ -289,30 +308,52 @@ ELSEIF(APPLE)
|
||||
SET(CPACK_RESOURCE_FILE_README "${PROJECT_BINARY_DIR}/README.txt")
|
||||
|
||||
SET(CPACK_GENERATOR ZIP)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.x86_64.macosx")
|
||||
SET(CPACK_MONOLITHIC_INSTALL 1)
|
||||
IF (EMBREE_TESTING_PACKAGE)
|
||||
ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" COMMAND "${PROJECT_SOURCE_DIR}/scripts/package_macosx.sh" ${CMAKE_BUILD_TYPE} "${CPACK_PACKAGE_FILE_NAME}.zip" "${EMBREE_SIGN_FILE}")
|
||||
IF (EMBREE_ARM)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.arm64.macosx")
|
||||
ELSE()
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.x86_64.macosx")
|
||||
ENDIF()
|
||||
SET(PACKAGE_BASE_NAME "${CPACK_PACKAGE_FILE_NAME}")
|
||||
SET(PACKAGE_EXT "zip")
|
||||
|
||||
add_custom_target(
|
||||
post_package_notarize "${PROJECT_SOURCE_DIR}/scripts/package_post_build_notarize_macosx.sh" ${PACKAGE_BASE_NAME} ${EMBREE_SIGN_FILE}
|
||||
)
|
||||
|
||||
# Linux specific settings
|
||||
ELSE()
|
||||
|
||||
SET(CPACK_GENERATOR TGZ)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.x86_64.linux")
|
||||
SET(CPACK_MONOLITHIC_INSTALL 1)
|
||||
IF (EMBREE_TESTING_PACKAGE)
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
SET(PACKAGE_SCRIPT "${PROJECT_SOURCE_DIR}/scripts/package_linux_dpcpp.sh")
|
||||
ELSE()
|
||||
SET(PACKAGE_SCRIPT "${PROJECT_SOURCE_DIR}/scripts/package_linux.sh")
|
||||
ENDIF()
|
||||
ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" COMMAND ${PACKAGE_SCRIPT}
|
||||
${EMBREE_ZIP_MODE} ${EMBREE_LIBRARY_NAME} ${EMBREE_VERSION} ${EMBREE_VERSION_MAJOR} "${EMBREE_SIGN_FILE}")
|
||||
SET(PACKAGE_BASE_NAME "${CPACK_PACKAGE_FILE_NAME}")
|
||||
SET(PACKAGE_EXT "tar.gz")
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
SET(EMBREE_VERSION_SYCL_SUFFIX ".sycl")
|
||||
ENDIF()
|
||||
|
||||
ENDIF()
|
||||
|
||||
IF (EMBREE_TESTING_PACKAGE)
|
||||
SET_TESTS_PROPERTIES(BuildPackage PROPERTIES TIMEOUT 1200)
|
||||
ENDIF()
|
||||
|
||||
add_custom_target(
|
||||
build ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} --target package -j8
|
||||
COMMAND ${CMAKE_COMMAND} -DPACKAGE_BASENAME=${PACKAGE_BASE_NAME} -DPACKAGE_EXT=${PACKAGE_EXT} -P ${PROJECT_SOURCE_DIR}/scripts/package_build.cmake
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
test_package ${CMAKE_COMMAND} -DWHAT="UNPACK" -DPACKAGE_BASENAME=${PACKAGE_BASE_NAME} -DPACKAGE_EXT=${PACKAGE_EXT} -P ${PROJECT_SOURCE_DIR}/scripts/package_test.cmake
|
||||
COMMAND cd embree_install/testing && ${CMAKE_COMMAND} -B build -DEMBREE_TESTING_INTENSITY=${EMBREE_TESTING_INTENSITY}
|
||||
COMMAND ctest --test-dir ${CMAKE_CURRENT_BINARY_DIR}/embree_install/testing/build -VV -C ${CMAKE_BUILD_TYPE} --output-log ctest.output
|
||||
COMMAND ${CMAKE_COMMAND} -DWHAT="CHECK" -P ${PROJECT_SOURCE_DIR}/scripts/package_test.cmake
|
||||
)
|
||||
|
||||
|
||||
if(WIN32)
|
||||
set(INTEGRATE_BINARY "./build/Release/test.exe")
|
||||
else()
|
||||
set(INTEGRATE_BINARY "./build/test")
|
||||
endif()
|
||||
|
||||
add_custom_target(
|
||||
test_integration ${CMAKE_COMMAND} -DWHAT="UNPACK" -DPACKAGE_BASENAME=${PACKAGE_BASE_NAME} -DPACKAGE_EXT=${PACKAGE_EXT} -P ${PROJECT_SOURCE_DIR}/scripts/package_test.cmake
|
||||
COMMAND cd ${PROJECT_SOURCE_DIR}/tests/integration/test_embree_release && ${CMAKE_COMMAND} -B build --preset ${EMBREE_TESTING_INTEGRATION_PRESET} -Dembree_DIR="${CMAKE_CURRENT_BINARY_DIR}/embree_install/lib/cmake/embree-${EMBREE_VERSION}"
|
||||
COMMAND cd ${PROJECT_SOURCE_DIR}/tests/integration/test_embree_release && ${CMAKE_COMMAND} --build build --config Release
|
||||
COMMAND cd ${PROJECT_SOURCE_DIR}/tests/integration/test_embree_release && ${INTEGRATE_BINARY}
|
||||
)
|
||||
+543
-241
@@ -1,267 +1,569 @@
|
||||
## Copyright 2009-2021 Intel Corporation
|
||||
## SPDX-License-Identifier: Apache-2.0
|
||||
if (BUILD_TESTING OR EMBREE_TESTING_INSTALL_TESTS)
|
||||
|
||||
INCLUDE(CTest)
|
||||
INCLUDE(CTest)
|
||||
|
||||
IF (WIN32)
|
||||
IF("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
|
||||
SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")
|
||||
if (EMBREE_TESTING_INSTALL_TESTS)
|
||||
SET(EMBREE_INSTALL_CTESTTESTFILE "${CMAKE_CURRENT_BINARY_DIR}/embree-addtests.cmake")
|
||||
file(WRITE "${EMBREE_INSTALL_CTESTTESTFILE}" "")
|
||||
endif()
|
||||
|
||||
if (NOT EMBREE_TESTING_PACKAGE_TEST_PROJECT)
|
||||
IF (WIN32)
|
||||
IF("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
|
||||
SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")
|
||||
ELSE()
|
||||
SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
ENDIF()
|
||||
else()
|
||||
SET(MY_PROJECT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../${EMBREE_INSTALL_BINDIR}")
|
||||
endif()
|
||||
|
||||
FIND_PATH(EMBREE_TESTING_MODEL_DIR
|
||||
NAMES test-models-intensity2.txt
|
||||
PATHS "${PROJECT_SOURCE_DIR}/models"
|
||||
DOC "Path to the folder containing the Embree models for regression testing."
|
||||
NO_DEFAULT_PATHS)
|
||||
if (NOT EMBREE_TESTING_PACKAGE_TEST_PROJECT)
|
||||
SET(EMBREE_TESTING_INTENSITY 1 CACHE STRING "Intensity of testing (0 = no testing, 1 = verify and tutorials, 2 = light testing, 3 = intensive testing, 4 = very intensive testing.")
|
||||
SET_PROPERTY(CACHE EMBREE_TESTING_INTENSITY PROPERTY STRINGS 0 1 2 3 4)
|
||||
SET(EMBREE_TESTING_ONLY_SYCL_TESTS OFF CACHE BOOL "Run only tests with the sycl support.")
|
||||
SET(EMBREE_TESTING_MEMCHECK OFF CACHE BOOL "Turns on memory checking for some tests.")
|
||||
SET(EMBREE_TESTING_BENCHMARK OFF CACHE BOOL "Turns benchmarking on.")
|
||||
SET(EMBREE_TESTING_BENCHMARK_DATABASE "${PROJECT_BINARY_DIR}" CACHE PATH "Path to database for benchmarking.")
|
||||
SET(EMBREE_TESTING_PACKAGE OFF CACHE BOOL "Packages release as test.")
|
||||
SET(EMBREE_TESTING_KLOCWORK OFF CACHE BOOL "Runs Kocwork as test.")
|
||||
SET(EMBREE_TESTING_SDE OFF CACHE STRING "Uses SDE to run tests for specified CPU.")
|
||||
SET_PROPERTY(CACHE EMBREE_TESTING_SDE PROPERTY STRINGS OFF pnr nhm wsm snb ivb hsw bdw knl skl skx cnl)
|
||||
endif()
|
||||
|
||||
SET(EMBREE_TESTING_INTENSITY 1 CACHE STRING "Intensity of testing (0 = no testing, 1 = verify and tutorials, 2 = light testing, 3 = intensive testing, 4 = very intensive testing.")
|
||||
SET_PROPERTY(CACHE EMBREE_TESTING_INTENSITY PROPERTY STRINGS 0 1 2 3 4)
|
||||
SET(EMBREE_TESTING_ONLY_SYCL_TESTS OFF CACHE BOOL "Run only tests with the sycl support.")
|
||||
SET(EMBREE_TESTING_MEMCHECK OFF CACHE BOOL "Turns on memory checking for some tests.")
|
||||
SET(EMBREE_TESTING_BENCHMARK OFF CACHE BOOL "Turns benchmarking on.")
|
||||
SET(EMBREE_TESTING_BENCHMARK_DATABASE "${PROJECT_BINARY_DIR}" CACHE PATH "Path to database for benchmarking.")
|
||||
SET(EMBREE_TESTING_PACKAGE OFF CACHE BOOL "Packages release as test.")
|
||||
SET(EMBREE_TESTING_KLOCWORK OFF CACHE BOOL "Runs Kocwork as test.")
|
||||
SET(EMBREE_TESTING_SDE OFF CACHE STRING "Uses SDE to run tests for specified CPU.")
|
||||
SET_PROPERTY(CACHE EMBREE_TESTING_SDE PROPERTY STRINGS OFF pnr nhm wsm snb ivb hsw bdw knl skl skx cnl)
|
||||
FUNCTION (SET_EMBREE_TEST_PROPERTIES testname)
|
||||
SET(variants "_cpp;_ispc;_sycl")
|
||||
foreach(v ${variants})
|
||||
if (v STREQUAL "_cpp")
|
||||
SET(v "")
|
||||
endif()
|
||||
set(testnamedef "EMBREE_TEST_${testname}${v}_DEFINED")
|
||||
if(${testnamedef})
|
||||
SET_TESTS_PROPERTIES(${testname}${v} ${ARGN})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# checks if the current cmake configuration is compatible with the requirements declared in the optionsfile
|
||||
MACRO (EMBREE_TEST_CHECK_OPTIONS optionsfile out)
|
||||
if (EMBREE_TESTING_INSTALL_TESTS)
|
||||
file(APPEND "${EMBREE_INSTALL_CTESTTESTFILE}" "SET_EMBREE_TEST_PROPERTIES(${testname} ${ARGN}) \n")
|
||||
endif()
|
||||
ENDFUNCTION()
|
||||
|
||||
# if no optionsfile is found return true (no requirements defined)
|
||||
SET(${out} 1)
|
||||
|
||||
IF(EXISTS "${optionsfile}")
|
||||
FILE(READ "${optionsfile}" lines)
|
||||
STRING(REGEX REPLACE "\n" ";" lines "${lines}")
|
||||
|
||||
FOREACH (line ${lines})
|
||||
|
||||
# parse line into list
|
||||
string(REGEX MATCHALL "([^\ ]+\ |[^\ ]+$)" tokens "${line}")
|
||||
LIST(LENGTH tokens token_count)
|
||||
IF (NOT ${token_count} EQUAL 3)
|
||||
message(FATAL_ERROR "illegal .embree_opitons in ${optionsfile} at line ${line}")
|
||||
ENDIF()
|
||||
|
||||
# we require every line to follow the scheme "option [==/!=] value"
|
||||
LIST(GET tokens 0 option)
|
||||
LIST(GET tokens 1 comp)
|
||||
LIST(GET tokens 2 value)
|
||||
|
||||
STRING(STRIP ${option} option)
|
||||
STRING(STRIP ${comp} comp)
|
||||
STRING(STRIP ${value} value)
|
||||
|
||||
IF ("${comp}" STREQUAL "==")
|
||||
IF (NOT "${${option}}" STREQUAL "${value}")
|
||||
SET(${out} 0)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
IF ("${${option}}" STREQUAL "${value}")
|
||||
SET(${out} 0)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF (${out} EQUAL 0)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_GENERIC_CPP_TEST testname executable args)
|
||||
IF (BUILD_TESTING)
|
||||
MACRO (ADD_EMBREE_GENERIC_TEST testname executable)
|
||||
ADD_TEST(NAME ${testname}
|
||||
WORKING_DIRECTORY "${MY_PROJECT_BINARY_DIR}"
|
||||
COMMAND ${executable} ${args})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
COMMAND ${executable} ${ARGN})
|
||||
SET(testnamedef EMBREE_TEST_${testname}_DEFINED)
|
||||
SET(${testnamedef} "1" CACHE INTERNAL "")
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_GENERIC_ISPC_TEST testname executable args)
|
||||
IF (BUILD_TESTING AND EMBREE_ISPC_SUPPORT AND EMBREE_RAY_PACKETS)
|
||||
ADD_TEST(NAME ${testname}_ispc
|
||||
WORKING_DIRECTORY "${MY_PROJECT_BINARY_DIR}"
|
||||
COMMAND ${executable}_ispc ${args})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_GENERIC_SYCL_TEST testname executable args)
|
||||
IF (BUILD_TESTING AND EMBREE_SYCL_SUPPORT)
|
||||
ADD_TEST(NAME ${testname}_sycl
|
||||
WORKING_DIRECTORY ${MY_PROJECT_BINARY_DIR}
|
||||
COMMAND ${executable}_sycl ${args})
|
||||
SET_TESTS_PROPERTIES(${testname}_sycl PROPERTIES TIMEOUT 50)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_TEST testname executable args)
|
||||
# Check if we should dump the output of this tests
|
||||
LIST(FIND EMBREE_TESTING_DUMPTESTS ${testname} dumptest)
|
||||
if (NOT(EMBREE_TESTING_DUMPFORMAT))
|
||||
SET(EMBREE_TESTING_DUMPFORMAT "tga")
|
||||
endif()
|
||||
set(DUMP_ARG "")
|
||||
IF(NOT(${dumptest} EQUAL -1))
|
||||
file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/tests/dump")
|
||||
set(argsx "${args} -o ${PROJECT_SOURCE_DIR}/tests/dump/${testname}.${EMBREE_TESTING_DUMPFORMAT}")
|
||||
ELSE()
|
||||
set(argsx ${args})
|
||||
ENDIF()
|
||||
|
||||
# By default add tests for all executables
|
||||
SET (extra_args ${ARGN})
|
||||
LIST(APPEND extra_args cpp)
|
||||
LIST(APPEND extra_args ispc)
|
||||
LIST(APPEND extra_args sycl)
|
||||
LIST(REMOVE_DUPLICATES extra_args)
|
||||
|
||||
# Exclude exe with '!'
|
||||
LIST(FIND extra_args "!cpp" p)
|
||||
if (NOT (${p} EQUAL -1))
|
||||
LIST(REMOVE_ITEM extra_args "!cpp")
|
||||
LIST(REMOVE_ITEM extra_args "cpp")
|
||||
endif()
|
||||
|
||||
LIST(FIND extra_args "!ispc" p)
|
||||
if (NOT (${p} EQUAL -1))
|
||||
LIST(REMOVE_ITEM extra_args "!ispc")
|
||||
LIST(REMOVE_ITEM extra_args "ispc")
|
||||
endif()
|
||||
|
||||
LIST(FIND extra_args "!sycl" p)
|
||||
if (NOT (${p} EQUAL -1))
|
||||
LIST(REMOVE_ITEM extra_args "!sycl")
|
||||
LIST(REMOVE_ITEM extra_args "sycl")
|
||||
endif()
|
||||
|
||||
# Add the tests
|
||||
FOREACH(loopvar ${extra_args})
|
||||
MACRO (ADD_EMBREE_GENERIC_CPP_TEST testname executable)
|
||||
if((NOT ${EMBREE_SYCL_SUPPORT}) OR (NOT ${EMBREE_TESTING_ONLY_SYCL_TESTS}))
|
||||
if(${loopvar} STREQUAL "cpp")
|
||||
ADD_EMBREE_GENERIC_CPP_TEST(${testname} ${executable} ${argsx})
|
||||
ENDIF()
|
||||
if(${loopvar} STREQUAL "ispc")
|
||||
ADD_EMBREE_GENERIC_ISPC_TEST(${testname} ${executable} ${argsx})
|
||||
ENDIF()
|
||||
ADD_TEST(NAME ${testname}
|
||||
WORKING_DIRECTORY "${MY_PROJECT_BINARY_DIR}"
|
||||
COMMAND ${executable} ${ARGN})
|
||||
SET(testnamedef EMBREE_TEST_${testname}_DEFINED)
|
||||
SET(${testnamedef} "1" CACHE INTERNAL "")
|
||||
endif()
|
||||
if(${loopvar} STREQUAL "sycl")
|
||||
ADD_EMBREE_GENERIC_SYCL_TEST(${testname} ${executable} ${argsx})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_GENERIC_ISPC_TEST testname executable)
|
||||
if((NOT ${EMBREE_SYCL_SUPPORT}) OR (NOT ${EMBREE_TESTING_ONLY_SYCL_TESTS}))
|
||||
IF (EMBREE_ISPC_SUPPORT AND EMBREE_RAY_PACKETS)
|
||||
ADD_TEST(NAME ${testname}_ispc
|
||||
WORKING_DIRECTORY "${MY_PROJECT_BINARY_DIR}"
|
||||
COMMAND ${executable}_ispc ${ARGN})
|
||||
SET(testnamedef EMBREE_TEST_${testname}_ispc_DEFINED)
|
||||
SET(${testnamedef} "1" CACHE INTERNAL "")
|
||||
ENDIF()
|
||||
endif()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_GENERIC_SYCL_TEST testname executable)
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
ADD_TEST(NAME ${testname}_sycl
|
||||
WORKING_DIRECTORY ${MY_PROJECT_BINARY_DIR}
|
||||
COMMAND ${executable}_sycl ${ARGN})
|
||||
SET(testnamedef EMBREE_TEST_${testname}_sycl_DEFINED)
|
||||
SET(${testnamedef} 1 CACHE INTERNAL "")
|
||||
SET_TESTS_PROPERTIES(${testname}_sycl PROPERTIES TIMEOUT 50)
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDMACRO()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_TUTORIAL_TEST name args)
|
||||
ADD_EMBREE_TEST(${name} embree_${name} "--compare ${PROJECT_SOURCE_DIR}/tests/models/reference/${name}.exr ${args}" ${ARGN})
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
MACRO (ADD_EMBREE_PRIMITIVE_TEST xml shader)
|
||||
EMBREE_TEST_CHECK_OPTIONS("${xml}.embree_options" out)
|
||||
IF (${out} EQUAL 1)
|
||||
|
||||
GET_FILENAME_COMPONENT(FN ${xml} NAME_WE)
|
||||
SET(testname "prim_${FN}_${shader}")
|
||||
SET(compare_threshold "55")
|
||||
|
||||
# TODO: APPLE with AVX2 enabled have a sphere cap intersection problem with linear curves
|
||||
IF ((testname MATCHES "prim_curves_linear_flat.*") AND ((testname MATCHES ".*uv") OR testname MATCHES ".*Ng"))
|
||||
IF (APPLE AND (EMBREE_ISA_AVX2 OR EMBREE_ISA_AVX512))
|
||||
SET(compare_threshold "200")
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Checks if the current cmake configuration is compatible with <condition>
|
||||
# condition may be a triple of CMAKE_VARIABLE_NAME op VALUE
|
||||
# supported operators for op are: ==, !=, <, <=, >, >=
|
||||
FUNCTION (EMBREE_TESTING_CHECK_OPTION out condition)
|
||||
# parse condition into list
|
||||
string(REGEX MATCHALL "([^\ ]+\ |[^\ ]+$)" tokens "${condition}")
|
||||
LIST(LENGTH tokens token_count)
|
||||
IF (NOT ${token_count} EQUAL 3)
|
||||
message(FATAL_ERROR "illegal embree_opitons condition: ${condition}")
|
||||
ENDIF()
|
||||
|
||||
SET(args "-i ${xml} --shader ${shader} --time 0.5 --compare ${PROJECT_SOURCE_DIR}/tests/primitives/reference/${testname}.exr --compare-threshold ${compare_threshold}")
|
||||
ADD_EMBREE_TEST(${testname} embree_viewer ${args})
|
||||
# we require every condition to follow the scheme "variable_name op value"
|
||||
LIST(GET tokens 0 option)
|
||||
LIST(GET tokens 1 comp)
|
||||
LIST(GET tokens 2 value)
|
||||
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
STRING(STRIP ${option} option)
|
||||
STRING(STRIP ${comp} comp)
|
||||
STRING(STRIP ${value} value)
|
||||
|
||||
MACRO (ADD_EMBREE_MODEL_TEST testname executable model reference args)
|
||||
EMBREE_TEST_CHECK_OPTIONS("${PROJECT_SOURCE_DIR}/tests/models/${model}.embree_options" out)
|
||||
IF (${out} EQUAL 1)
|
||||
SET(${out} 0 PARENT_SCOPE)
|
||||
if ("${comp}" STREQUAL "==")
|
||||
if ("${${option}}" STREQUAL "${value}")
|
||||
SET(${out} 1 PARENT_SCOPE)
|
||||
endif()
|
||||
elseif ("${comp}" STREQUAL "!=")
|
||||
if (NOT ("${${option}}" STREQUAL "${value}"))
|
||||
SET(${out} 1 PARENT_SCOPE)
|
||||
endif()
|
||||
elseif ("${comp}" STREQUAL ">")
|
||||
if ("${${option}}" GREATER "${value}")
|
||||
SET(${out} 1 PARENT_SCOPE)
|
||||
endif()
|
||||
elseif ("${comp}" STREQUAL ">=")
|
||||
if ("${${option}}" GREATER_EQUAL "${value}")
|
||||
SET(${out} 1 PARENT_SCOPE)
|
||||
endif()
|
||||
elseif ("${comp}" STREQUAL "<")
|
||||
if ("${${option}}" LESS "${value}")
|
||||
SET(${out} 1 PARENT_SCOPE)
|
||||
endif()
|
||||
elseif ("${comp}" STREQUAL "<=")
|
||||
if ("${${option}}" LESS_EQUAL "${value}")
|
||||
SET(${out} 1 PARENT_SCOPE)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Could not parse embree_option condition: ${condition}")
|
||||
endif()
|
||||
|
||||
SET(extra_args ${ARGN})
|
||||
IF ("${testname}" MATCHES ".*subdiv.*") # skip subdiv models for SYCL mode
|
||||
LIST(APPEND extra_args !sycl)
|
||||
ENDIF()
|
||||
|
||||
SET(argsx "-c ${PROJECT_SOURCE_DIR}/tests/models/${model} --compare ${PROJECT_SOURCE_DIR}/tests/models/reference/${reference}.exr ${args}")
|
||||
ADD_EMBREE_TEST(${testname} ${executable} ${argsx} ${extra_args})
|
||||
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (ADD_EMBREE_MODELS_TEST model_list_file testname executable reference args)
|
||||
IF (BUILD_TESTING)
|
||||
|
||||
SET(full_model_list_file "${PROJECT_SOURCE_DIR}/tests/models/${model_list_file}")
|
||||
|
||||
IF(NOT EXISTS "${full_model_list_file}")
|
||||
MESSAGE(FATAL_ERROR "File ${PROJECT_SOURCE_DIR}/tests/models/${model_list_file} does not exist!")
|
||||
ENDIF()
|
||||
|
||||
FILE(READ "${full_model_list_file}" models)
|
||||
STRING(REGEX REPLACE "\n" ";" models "${models}")
|
||||
|
||||
FOREACH (model ${models})
|
||||
IF (model MATCHES "^#")
|
||||
CONTINUE()
|
||||
ENDIF()
|
||||
IF (model MATCHES ".*mblur.*" OR model MATCHES ".*motion_blur.*") # skip mblur models if motion blur is not enabled
|
||||
IF (NOT EMBREE_SYCL_MBLUR)
|
||||
CONTINUE()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
STRING(REGEX REPLACE " .*" "" modelname "${model}")
|
||||
STRING(REGEX REPLACE "/" "_" modelname "${modelname}")
|
||||
STRING(REGEX REPLACE ".ecs" "" modelname "${modelname}")
|
||||
|
||||
ADD_EMBREE_MODEL_TEST(${testname}_${modelname} ${executable} ${model} ${reference}_${modelname} "${args}")
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# add klocwork test
|
||||
IF (EMBREE_TESTING_KLOCWORK)
|
||||
ADD_TEST(NAME Klocwork-Build WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" COMMAND "${PROJECT_SOURCE_DIR}/scripts/klocwork_build.sh")
|
||||
ADD_TEST(NAME Klocwork-Check WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" COMMAND "${PROJECT_SOURCE_DIR}/scripts/klocwork_check.sh")
|
||||
SET_TESTS_PROPERTIES(Klocwork-Build PROPERTIES TIMEOUT 2400)
|
||||
SET_TESTS_PROPERTIES(Klocwork-Check PROPERTIES TIMEOUT 300)
|
||||
ENDIF()
|
||||
|
||||
# add valgrind test
|
||||
IF (EMBREE_TESTING_MEMCHECK)
|
||||
find_program( EMBREE_MEMORYCHECK_COMMAND valgrind )
|
||||
set( EMBREE_MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full --show-leak-kinds=definite --errors-for-leak-kinds=definite --error-exitcode=1" )
|
||||
IF (NOT EMBREE_MEMORYCHECK_COMMAND)
|
||||
MESSAGE(FATAL_ERROR "valgrind not found")
|
||||
ENDIF()
|
||||
FUNCTION(ADD_MEMCHECK_TEST name binary)
|
||||
set(memcheck_command "${EMBREE_MEMORYCHECK_COMMAND} ${EMBREE_MEMORYCHECK_COMMAND_OPTIONS}")
|
||||
separate_arguments(memcheck_command)
|
||||
add_test(NAME ${name} COMMAND ${memcheck_command} "${MY_PROJECT_BINARY_DIR}/${binary}" ${ARGN})
|
||||
ENDFUNCTION()
|
||||
ENDIF()
|
||||
|
||||
# Checks multiple options from a list with EMBREE_TESTING_CHECK_OPTION
|
||||
FUNCTION (EMBREE_TESTING_CHECK_OPTIONS_LIST out conditions)
|
||||
SET(${out} 1 PARENT_SCOPE)
|
||||
FOREACH (c ${conditions})
|
||||
EMBREE_TESTING_CHECK_OPTION(myout ${c})
|
||||
|
||||
IF (myout EQUAL 0)
|
||||
SET(${out} 0 PARENT_SCOPE)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
# looks for ifile in multiple possible locations and outputs a file with absolute path in ofile
|
||||
FUNCTION (EMBREE_FIND_TEST_FILE ifile ofile errmsgflavor)
|
||||
if (EXISTS "${ifile}") # abs path, use get_filename_component because it could also be relative to cwd
|
||||
get_filename_component(absifile "${ifile}" ABSOLUTE)
|
||||
SET(${ofile} ${absifile} PARENT_SCOPE)
|
||||
elseif(EXISTS "${PROJECT_SOURCE_DIR}/tests/${ifile}") # testing dir
|
||||
set(${ofile} "${PROJECT_SOURCE_DIR}/tests/${ifile}" PARENT_SCOPE)
|
||||
elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ifile}") # relative to source folder
|
||||
set(${ofile} "${CMAKE_CURRENT_SOURCE_DIR}/${ifile}" PARENT_SCOPE)
|
||||
else()
|
||||
set(${ofile} "" PARENT_SCOPE)
|
||||
if (errmsgflavor)
|
||||
message(FATAL_ERROR
|
||||
"Could not find ${errmsgflavor} \"${ifile}\"\n"
|
||||
"looked for:\n"
|
||||
" ${inputfile}\n"
|
||||
" ${PROJECT_SOURCE_DIR}/tests/${ifile}\n"
|
||||
" ${CMAKE_CURRENT_SOURCE_DIR}/${ifile}\n"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
FUNCTION (EMBREE_ADD_TEST_PARSE_SUBLIST args keyword sublist)
|
||||
SET(myargs ${args})
|
||||
SET(mysublist "")
|
||||
SET(keywords "ECS;XML;NO_REFERENCE;REFERENCE;REFERENCE_SUFFIX;INTENSITY;CONDITION_FILE;CONDITION;ARGS;NO_CPP;NO_ISPC;NO_SYCL;GEN_REFERENCE;")
|
||||
|
||||
list(FIND nargs ${keyword} istart)
|
||||
if (NOT(istart EQUAL -1))
|
||||
list(LENGTH myargs iend)
|
||||
foreach(k ${keywords})
|
||||
list(FIND myargs ${k} i)
|
||||
if (NOT(i EQUAL -1) AND (i GREATER istart) AND (i LESS iend))
|
||||
SET(iend ${i})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
MATH(EXPR i "${istart}+1")
|
||||
while (i LESS iend)
|
||||
list(GET myargs ${i} elem)
|
||||
list(APPEND mysublist ${elem})
|
||||
MATH(EXPR i "${i}+1")
|
||||
endwhile()
|
||||
endif()
|
||||
|
||||
SET(${sublist} ${mysublist} PARENT_SCOPE)
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION (EMBREE_ADD_TEST_PARSE_FLAG args keyword value)
|
||||
SET(myargs ${args})
|
||||
SET(${value} OFF PARENT_SCOPE)
|
||||
list(FIND nargs ${keyword} i)
|
||||
if (NOT(i EQUAL -1))
|
||||
SET(${value} ON PARENT_SCOPE)
|
||||
endif()
|
||||
ENDFUNCTION()
|
||||
|
||||
# ADD_EMBREE_TEST_ECS(testname exename [ECS <file> | XML <file>] [NO_REFERENCE | REFERENCE <path> | REFERENCE_SUFFIX <suffix>] [INTENSITY <i>] [CONDITION <conds>] [ARGS <args>] [GEN_REFERENCE])
|
||||
# [ECS <file> | XML <inputfile> | OPTIONS <inputfile>]
|
||||
# - looks for file and calls the test command with either "-c <inputfile>.ecs" or "-i <inputfile>.xml"
|
||||
#
|
||||
# [NO_REFERENCE | REFERENCE <path> | REFERENCE_SUFFIX <suffix>]
|
||||
# - if not found a reference is will be expected in the same folder as *.ecs with name *.ecs.exename.exr
|
||||
# - NO_REFERENCE: don't look for a reference (no --compare in test command)
|
||||
# - REFERENCE <path>: use the reference located in <path>. Same rules aplly as for finding ecs files: absolute or relative to CMAKE_CURRENT_SOURCE_DIR path, must not be located outside the embree root dir.
|
||||
# - REFERENCE_SUFFIX <suffix>: use the default reference location and name with a suffix before the last file extension, e.g. *.ecs.exename<suffix>.exr
|
||||
# - if this argument is not specified, looks for
|
||||
# 1. <inputfile>.exename.exr, or
|
||||
# 2. <testname>.exr, if no <inputfile> was given
|
||||
#
|
||||
# [INTENSITY <i>]
|
||||
# - default i = 1
|
||||
# - sets the intensity level for the test, test is only run if ${EMBREE_TESTING_INTENSITY} GREATER_EQUAL i
|
||||
# - could be done with an *.embree_options file, but this is more flexible, e.g. you can easier share reference images without specifying an absolute path
|
||||
# - DOES NOT overrite EMBREE_TESTING_INTENSITY, if specified in *.embree_options
|
||||
#
|
||||
# [CONDITION_FILE <file>]
|
||||
# - file containing additional conditions
|
||||
# - conditions are specified linewise in form of: EMBREE_OPTION op VALUE, where EMBREE_OPTION is a cmake variable used during embree configuration and op is one of ==, !=, <, <=, >, >=
|
||||
# - if this argument is not specified, looks for
|
||||
# 1. <inputfile>.embree_options, or
|
||||
# 2. <testname>.embree_options, if no <inputfile> was given
|
||||
#
|
||||
# [CONDITION <conds>]
|
||||
# - cmake list of additional conditions, specified the same way as in an embree_options file
|
||||
#
|
||||
# [ARGS <args>]
|
||||
# - additional arguments for the test command
|
||||
#
|
||||
# [GEN_REFERENCE]
|
||||
# - writes the reference to the expected location
|
||||
# - could also be done with the ARGS parameter, but this way we don't have to deal with paths
|
||||
#
|
||||
# EXAMPLES
|
||||
#
|
||||
# all optional arguments default,
|
||||
# - looks for points.ecs.embree_options to filter out test by configured options, if not found no restrictions
|
||||
# - runs for EMBREE_TESTING_INTENSITY >= 1
|
||||
# - reference will be expected in the same folder as points.ecs with name points.ecs.embree_viewer.exr
|
||||
#ADD_EMBREE_TEST_ECS(viewer_points embree_viewer "models/xxx/points.ecs") # 1)
|
||||
#ADD_EMBREE_TEST_ECS(viewer_points embree_viewer "${PROJECT_SOURCE_DIR}/models/xxx/points.ecs") # 2) same as 1) but with absolute path to ecs
|
||||
#ADD_EMBREE_TEST_ECS(viewer_points embree_viewer "points.ecs") # 3) same as 1) but looks for points.ecs in the ${CMAKE_CURRENT_SOURCE_DIR} i.e. <embree_root>/tutorials/viewer/points.ecs
|
||||
|
||||
#ADD_EMBREE_TEST_ECS(viewer_points embree_viewer "models/xxx/points.ecs" ARGS --coherent INTENSITY 2) # 4) same as 1) but runs only at EMBREE_TESTING_INTENSITY >= 2
|
||||
#ADD_EMBREE_TEST_ECS(viewer_points embree_viewer "models/xxx/points.ecs" REFERENCE_SUFFIX "_quads" ARGS
|
||||
# --coherent
|
||||
# --convert-triangles-to-quads INTENSITY 2) # 5) same as 4) but expects reference name points.ecr.embree_viewer_quads.ecs
|
||||
#ADD_EMBREE_TEST_ECS(viewer_points embree_viewer "models/xxx/points.ecs" REFERENCE "special.exr" ARGS
|
||||
# --coherent
|
||||
# --convert-triangles-to-quads INTENSITY 2) # 5) same as 4) but expects reference <embree-root>/tutorials/viewer/special.exr
|
||||
## 1) - 5) all share the same base input arguments defined in points.ecs as well as the points.ecs.embree_options
|
||||
|
||||
#ADD_EMBREE_TEST_ECS(point_geometry embree_point_geometry) # 6) no ecs file, uses point_geometry.embree_options if exists, expects reference ${CMAKE_CURRENT_SOURCE_DIR}/point_geometry.exr
|
||||
#ADD_EMBREE_TEST_ECS(verify verify NO_REFERENCE) # 7) no ecs file, uses verify.embree_options if exists, no reference
|
||||
#ADD_EMBREE_TEST_ECS(verify_memcheck verify NO_REFERENCE CONDITIONS "EMBREE_TESTING_MEMCHECK == ON") # 8) same as 7) but with extra condition
|
||||
|
||||
FUNCTION (ADD_EMBREE_TEST_ECS testname executable)
|
||||
if (EMBREE_TESTING_FILTER_TESTNAMES)
|
||||
list(FIND EMBREE_TESTING_FILTER_TESTNAMES "${testname}" i)
|
||||
if (${i} EQUAL -1)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
SET(nargs ${ARGN})
|
||||
|
||||
# disable everything
|
||||
SET(testnamedef EMBREE_TEST_${testname}_DEFINED)
|
||||
SET(${testnamedef} "0" CACHE INTERNAL "")
|
||||
SET(testnamedef EMBREE_TEST_${testname}_ispc_DEFINED)
|
||||
SET(${testnamedef} "0" CACHE INTERNAL "")
|
||||
SET(testnamedef EMBREE_TEST_${testname}_sycl_DEFINED)
|
||||
SET(${testnamedef} "0" CACHE INTERNAL "")
|
||||
|
||||
# parsing input file
|
||||
# ECS mode -> single parameter with filename after ECS keyword
|
||||
list(FIND nargs "ECS" i)
|
||||
if (NOT(i EQUAL -1))
|
||||
SET(inputtype "-c")
|
||||
MATH(EXPR i "${i}+1")
|
||||
list(GET nargs ${i} out)
|
||||
EMBREE_FIND_TEST_FILE("${out}" inputfile "test file")
|
||||
endif()
|
||||
# XML mode -> single parameter with filename after XML keyword
|
||||
list(FIND nargs "XML" i)
|
||||
if (NOT(i EQUAL -1))
|
||||
SET(inputtype "-i")
|
||||
MATH(EXPR i "${i}+1")
|
||||
list(GET nargs ${i} out)
|
||||
EMBREE_FIND_TEST_FILE("${out}" inputfile "test file")
|
||||
endif()
|
||||
# no filetype keyword -> look for <testname>.ecs/xml
|
||||
# does not need to be specified
|
||||
if (NOT inputtype)
|
||||
EMBREE_FIND_TEST_FILE("${testname}.ecs" inputfile "")
|
||||
if(inputfile)
|
||||
SET(inputtype "-c")
|
||||
endif()
|
||||
EMBREE_FIND_TEST_FILE("${testname}.ecs" inputfile "")
|
||||
if(inputfile)
|
||||
SET(inputtype "-i")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# parsing refernce image
|
||||
# no reference image mode -> no additional parameter to parse
|
||||
list(FIND nargs "NO_REFERENCE" i)
|
||||
if (NOT(i EQUAL -1))
|
||||
SET(no_reference ON)
|
||||
endif()
|
||||
# reference suffix mode -> singe parameter with suffix to default reference file name
|
||||
list(FIND nargs "REFERENCE_SUFFIX" i)
|
||||
if (NOT(i EQUAL -1))
|
||||
MATH(EXPR i "${i}+1")
|
||||
list(GET nargs ${i} out)
|
||||
EMBREE_FIND_TEST_FILE("${inputfile}.${executable}${out}.exr" referencefile "reference image")
|
||||
endif()
|
||||
# reference mode -> singe parameter with absolute path to reference image
|
||||
list(FIND nargs "REFERENCE" i)
|
||||
if (NOT(i EQUAL -1))
|
||||
MATH(EXPR i "${i}+1")
|
||||
list(GET nargs ${i} out)
|
||||
EMBREE_FIND_TEST_FILE("${out}" referencefile "reference image")
|
||||
endif()
|
||||
# no reference keyword -> look for <testname>.exr and <inputfile>.<executable>.exr respectively
|
||||
if ((NOT no_reference) AND (NOT referencefile))
|
||||
if (NOT inputfile)
|
||||
EMBREE_FIND_TEST_FILE("${testname}.exr" referencefile "reference image")
|
||||
else()
|
||||
EMBREE_FIND_TEST_FILE("${inputfile}.${executable}.exr" referencefile "reference image")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# parsing intensity
|
||||
# single integer parameter
|
||||
SET(intensity 1)
|
||||
list(FIND nargs "INTENSITY" i)
|
||||
if (NOT(i EQUAL -1))
|
||||
MATH(EXPR i "${i}+1")
|
||||
list(GET nargs ${i} intensity)
|
||||
endif()
|
||||
|
||||
# parsing condition
|
||||
SET(conditions "")
|
||||
SET(conditionsfile)
|
||||
list(FIND nargs "CONDITION_FILE" i)
|
||||
# condition file -> single parameter to absolute path of conditions file
|
||||
if (NOT(i EQUAL -1))
|
||||
list(GET nargs ${i} conditionsfile)
|
||||
EMBREE_FIND_TEST_FILE("${conditionsfile}" conditionsfile "")
|
||||
# no <inputfile> specified -> look for <testname>.embree_options
|
||||
elseif (NOT inputtype)
|
||||
EMBREE_FIND_TEST_FILE("${testname}.embree_options" conditionsfile "")
|
||||
# <inputfile> specified -> look for <inputfile>.embree_options
|
||||
else()
|
||||
EMBREE_FIND_TEST_FILE("${inputfile}.embree_options" conditionsfile "")
|
||||
endif()
|
||||
if (conditionsfile)
|
||||
file(READ "${conditionsfile}" lines)
|
||||
string(REGEX REPLACE "\n" ";" conditions "${lines}")
|
||||
endif()
|
||||
|
||||
# parsing additional conditions
|
||||
EMBREE_ADD_TEST_PARSE_SUBLIST("${nargs}" "CONDITION" extra_conditions)
|
||||
list(APPEND conditions ${extra_conditions})
|
||||
|
||||
# parsing extra args
|
||||
EMBREE_ADD_TEST_PARSE_SUBLIST("${nargs}" "ARGS" extraargs)
|
||||
|
||||
EMBREE_ADD_TEST_PARSE_FLAG("${nargs}" "MEMCHECK" memcheck)
|
||||
EMBREE_ADD_TEST_PARSE_FLAG("${nargs}" "NO_CPP" no_cpp)
|
||||
EMBREE_ADD_TEST_PARSE_FLAG("${nargs}" "NO_ISPC" no_ispc)
|
||||
EMBREE_ADD_TEST_PARSE_FLAG("${nargs}" "NO_SYCL" no_sycl)
|
||||
EMBREE_ADD_TEST_PARSE_FLAG("${nargs}" "NO_POSTFIX" no_postfix)
|
||||
EMBREE_ADD_TEST_PARSE_FLAG("${nargs}" "GEN_REFERENCE" gen_reference)
|
||||
|
||||
# add the test, if the conditions are met
|
||||
SET(matchconditions ON)
|
||||
if (conditions)
|
||||
EMBREE_TESTING_CHECK_OPTIONS_LIST(out "${conditions}")
|
||||
if (out EQUAL 0)
|
||||
SET(matchconditions OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# LESS_EQUAL not supported on all CI runners
|
||||
if (matchconditions AND ((intensity LESS EMBREE_TESTING_INTENSITY) OR (intensity EQUAL EMBREE_TESTING_INTENSITY)))
|
||||
SET(args "")
|
||||
if (inputfile)
|
||||
list(APPEND args "${inputtype} ${inputfile}")
|
||||
endif()
|
||||
if (NOT no_reference)
|
||||
list(APPEND args "--compare ${referencefile}")
|
||||
endif()
|
||||
if (gen_reference)
|
||||
list(APPEND args "-o ${referencefile}")
|
||||
endif()
|
||||
foreach(a ${extraargs})
|
||||
list(APPEND args "${a}")
|
||||
endforeach()
|
||||
|
||||
|
||||
|
||||
if (memcheck)
|
||||
list(PREPEND args "${MY_PROJECT_BINARY_DIR}/${executable}")
|
||||
list(PREPEND args "${EMBREE_MEMORYCHECK_COMMAND_OPTIONS}")
|
||||
if (no_postfix)
|
||||
ADD_EMBREE_GENERIC_TEST(${testname} ${EMBREE_MEMORYCHECK_COMMAND} ${args})
|
||||
else()
|
||||
if((NOT ${EMBREE_SYCL_SUPPORT}) OR (NOT ${EMBREE_TESTING_ONLY_SYCL_TESTS}))
|
||||
if (NOT(no_cpp))
|
||||
ADD_EMBREE_GENERIC_CPP_TEST(${testname} ${EMBREE_MEMORYCHECK_COMMAND} ${args})
|
||||
endif()
|
||||
if (NOT(no_ispc))
|
||||
ADD_EMBREE_GENERIC_ISPC_TEST(${testname} ${EMBREE_MEMORYCHECK_COMMAND} ${args})
|
||||
endif()
|
||||
endif()
|
||||
if (NOT(no_sycl))
|
||||
ADD_EMBREE_GENERIC_SYCL_TEST(${testname} ${EMBREE_MEMORYCHECK_COMMAND} ${args})
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
if (no_postfix)
|
||||
ADD_EMBREE_GENERIC_TEST(${testname} ${executable} ${args})
|
||||
else()
|
||||
if (NOT(no_cpp))
|
||||
ADD_EMBREE_GENERIC_CPP_TEST(${testname} ${executable} ${args})
|
||||
endif()
|
||||
if (NOT(no_ispc))
|
||||
ADD_EMBREE_GENERIC_ISPC_TEST(${testname} ${executable} ${args})
|
||||
endif()
|
||||
if (NOT(no_sycl))
|
||||
ADD_EMBREE_GENERIC_SYCL_TEST(${testname} ${executable} ${args})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
if (EMBREE_TESTING_INSTALL_TESTS)
|
||||
if (inputfile)
|
||||
get_filename_component(inputpath ${inputfile} DIRECTORY)
|
||||
STRING(REPLACE "${PROJECT_SOURCE_DIR}/" "" inputpath "${inputpath}")
|
||||
INSTALL(FILES "${inputfile}"
|
||||
DESTINATION "${CMAKE_INSTALL_TESTDIR}/${inputpath}"
|
||||
COMPONENT testing)
|
||||
endif()
|
||||
|
||||
if (conditionsfile)
|
||||
get_filename_component(conditionspath ${conditionsfile} DIRECTORY)
|
||||
STRING(REPLACE "${PROJECT_SOURCE_DIR}/" "" conditionspath "${conditionspath}")
|
||||
INSTALL(FILES "${conditionsfile}"
|
||||
DESTINATION "${CMAKE_INSTALL_TESTDIR}/${conditionspath}"
|
||||
COMPONENT testing)
|
||||
endif()
|
||||
|
||||
if (referencefile)
|
||||
get_filename_component(referencepath ${referencefile} DIRECTORY)
|
||||
STRING(REPLACE "${PROJECT_SOURCE_DIR}/" "" referencepath "${referencepath}")
|
||||
INSTALL(FILES "${referencefile}"
|
||||
DESTINATION "${CMAKE_INSTALL_TESTDIR}/${referencepath}"
|
||||
COMPONENT testing)
|
||||
endif()
|
||||
|
||||
SET(testcall "ADD_EMBREE_TEST_ECS(${testname} ${executable}")
|
||||
if (inputfile)
|
||||
STRING(REPLACE "${PROJECT_SOURCE_DIR}/" "" inputfile "${inputfile}")
|
||||
if (inputtype STREQUAL "-c")
|
||||
SET(testcall "${testcall} \n ECS ${inputfile}")
|
||||
elseif (inputtype STREQUAL "-i")
|
||||
SET(testcall "${testcall} \n XML ${inputfile}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (no_reference)
|
||||
SET(testcall "${testcall} \n NO_REFERENCE")
|
||||
else()
|
||||
STRING(REPLACE "${PROJECT_SOURCE_DIR}/" "" referencefile "${referencefile}")
|
||||
SET(testcall "${testcall} \n REFERENCE ${referencefile}")
|
||||
endif()
|
||||
|
||||
SET(testcall "${testcall} \n INTENSITY ${intensity}")
|
||||
if (${memcheck})
|
||||
SET(testcall "${testcall} \n MEMCHECK")
|
||||
endif()
|
||||
if (${no_cpp})
|
||||
SET(testcall "${testcall} \n NO_CPP")
|
||||
endif()
|
||||
if (${no_ispc})
|
||||
SET(testcall "${testcall} \n NO_ISPC")
|
||||
endif()
|
||||
if (${no_sycl})
|
||||
SET(testcall "${testcall} \n NO_SYCL")
|
||||
endif()
|
||||
if (${no_postfix})
|
||||
SET(testcall "${testcall} \n NO_POSTFIX")
|
||||
endif()
|
||||
STRING(REPLACE "${PROJECT_SOURCE_DIR}/" "" conditionsfile "${conditionsfile}")
|
||||
SET(testcall "${testcall} \n CONDITION_FILE ${conditionsfile}")
|
||||
SET(testcall "${testcall} \n CONDITION ")
|
||||
foreach(c ${conditions})
|
||||
SET(testcall "${testcall} \"${c}\"")
|
||||
endforeach()
|
||||
SET(testcall "${testcall} \n ARGS ")
|
||||
foreach(a ${extraargs})
|
||||
SET(testcall "${testcall} ${a}")
|
||||
endforeach()
|
||||
|
||||
SET(testcall "${testcall})\n\n")
|
||||
file(APPEND "${EMBREE_INSTALL_CTESTTESTFILE}" "${testcall}")
|
||||
endif()
|
||||
ENDFUNCTION()
|
||||
|
||||
else()
|
||||
FUNCTION(ADD_EMBREE_TEST_ECS testname executable)
|
||||
ENDFUNCTION()
|
||||
FUNCTION(ADD_EMBREE_GENERIC_TEST testname executable)
|
||||
ENDFUNCTION()
|
||||
FUNCTION(ADD_EMBREE_GENERIC_CPP_TEST testname executable)
|
||||
ENDFUNCTION()
|
||||
FUNCTION(ADD_EMBREE_GENERIC_SYCL_TEST testname executable)
|
||||
ENDFUNCTION()
|
||||
FUNCTION(ADD_EMBREE_GENERIC_ISPC_TEST testname executable)
|
||||
ENDFUNCTION()
|
||||
FUNCTION(SET_EMBREE_TEST_PROPERTIES testname)
|
||||
ENDFUNCTION()
|
||||
endif()
|
||||
+9
-13
@@ -3,10 +3,6 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#if !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include "../sys/platform.h"
|
||||
#include "../sys/ref.h"
|
||||
#include "../sys/filename.h"
|
||||
@@ -126,17 +122,16 @@ namespace embree
|
||||
class FileStream : public Stream<int>
|
||||
{
|
||||
public:
|
||||
|
||||
FileStream (FILE* file, const std::string& name = "file")
|
||||
: file(file), lineNumber(1), colNumber(0), charNumber(0), name(std::shared_ptr<std::string>(new std::string(name))) {}
|
||||
|
||||
FileStream (const FileName& fileName)
|
||||
: lineNumber(1), colNumber(0), charNumber(0), name(std::shared_ptr<std::string>(new std::string(fileName.str())))
|
||||
{
|
||||
file = fopen(fileName.c_str(),"r");
|
||||
if (file == nullptr) THROW_RUNTIME_ERROR("cannot open file " + fileName.str());
|
||||
if (ifs) ifs.close();
|
||||
ifs.open(fileName.str());
|
||||
if (!ifs.is_open()) THROW_RUNTIME_ERROR("cannot open file " + fileName.str());
|
||||
}
|
||||
~FileStream() {
|
||||
if (ifs) ifs.close();
|
||||
}
|
||||
~FileStream() { if (file) fclose(file); }
|
||||
|
||||
public:
|
||||
ParseLocation location() {
|
||||
@@ -144,14 +139,15 @@ namespace embree
|
||||
}
|
||||
|
||||
int next() {
|
||||
int c = fgetc(file);
|
||||
int c = ifs.get();
|
||||
if (c == '\n') { lineNumber++; colNumber = 0; } else if (c != '\r') colNumber++;
|
||||
charNumber++;
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
FILE* file;
|
||||
std::ifstream ifs;
|
||||
ssize_t lineNumber; /// the line number the token is from
|
||||
ssize_t colNumber; /// the character number in the current line
|
||||
ssize_t charNumber; /// the character in the file
|
||||
|
||||
@@ -48,6 +48,9 @@ namespace embree
|
||||
__forceinline int toInt (const float& a) { return int(a); }
|
||||
__forceinline float toFloat(const int& a) { return float(a); }
|
||||
|
||||
__forceinline int asInt (const float& a) { return *((int*)&a); }
|
||||
__forceinline float asFloat(const int& a) { return *((float*)&a); }
|
||||
|
||||
#if defined(__WIN32__)
|
||||
__forceinline bool finite ( const float x ) { return _finite(x) != 0; }
|
||||
#endif
|
||||
|
||||
@@ -75,8 +75,6 @@ namespace embree
|
||||
__forceinline float floor( const float x ) { return sycl::floor(x); }
|
||||
__forceinline float ceil ( const float x ) { return sycl::ceil(x); }
|
||||
__forceinline float frac ( const float x ) { return x-floor(x); }
|
||||
__forceinline float sincos ( const float phi, float* sin, float* cos ) { return *sin = sycl::sincos(phi, cos); }
|
||||
__forceinline float sincosf ( const float phi, float* sin, float* cos ) { return *sin = sycl::sincos(phi, cos); }
|
||||
|
||||
//__forceinline double abs ( const double x ) { return ::fabs(x); }
|
||||
//__forceinline double sign ( const double x ) { return x<0?-1.0:1.0; }
|
||||
|
||||
@@ -95,8 +95,8 @@ namespace embree
|
||||
__forceinline Vec2fa abs ( const Vec2fa& a ) { return Vec2fa(sycl::fabs(a.x),sycl::fabs(a.y)); }
|
||||
__forceinline Vec2fa sign ( const Vec2fa& a ) { return Vec2fa(sycl::sign(a.x),sycl::sign(a.y)); }
|
||||
|
||||
//__forceinline Vec2fa rcp ( const Vec2fa& a ) { return Vec2fa(sycl::recip(a.x),sycl::recip(a.y)); }
|
||||
__forceinline Vec2fa rcp ( const Vec2fa& a ) { return Vec2fa(__sycl_std::__invoke_native_recip<float>(a.x),__sycl_std::__invoke_native_recip<float>(a.y)); }
|
||||
//__forceinline Vec2fa rcp ( const Vec2fa& a ) { return Vec2fa(sycl::native::recip(a.x),sycl::native::recip(a.y)); }
|
||||
__forceinline Vec2fa rcp ( const Vec2fa& a ) { return Vec2fa(sycl::native::recip(a.x),sycl::native::recip(a.y)); }
|
||||
__forceinline Vec2fa sqrt ( const Vec2fa& a ) { return Vec2fa(sycl::sqrt(a.x),sycl::sqrt(a.y)); }
|
||||
__forceinline Vec2fa sqr ( const Vec2fa& a ) { return Vec2fa(a.x*a.x,a.y*a.y); }
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace embree
|
||||
__forceinline Vec3fa sign ( const Vec3fa& a ) { return Vec3fa(sycl::sign(a.x),sycl::sign(a.y),sycl::sign(a.z)); }
|
||||
|
||||
//__forceinline Vec3fa rcp ( const Vec3fa& a ) { return Vec3fa(sycl::recip(a.x),sycl::recip(a.y),sycl::recip(a.z)); }
|
||||
__forceinline Vec3fa rcp ( const Vec3fa& a ) { return Vec3fa(__sycl_std::__invoke_native_recip<float>(a.x),__sycl_std::__invoke_native_recip<float>(a.y),__sycl_std::__invoke_native_recip<float>(a.z)); }
|
||||
__forceinline Vec3fa rcp ( const Vec3fa& a ) { return Vec3fa(sycl::native::recip(a.x),sycl::native::recip(a.y),sycl::native::recip(a.z)); }
|
||||
__forceinline Vec3fa sqrt ( const Vec3fa& a ) { return Vec3fa(sycl::sqrt(a.x),sycl::sqrt(a.y),sycl::sqrt(a.z)); }
|
||||
__forceinline Vec3fa sqr ( const Vec3fa& a ) { return Vec3fa(a.x*a.x,a.y*a.y,a.z*a.z); }
|
||||
|
||||
@@ -393,7 +393,7 @@ namespace embree
|
||||
__forceinline Vec3fx sign ( const Vec3fx& a ) { return Vec3fx(sycl::sign(a.x),sycl::sign(a.y),sycl::sign(a.z),sycl::sign(a.z)); }
|
||||
|
||||
//__forceinline Vec3fx rcp ( const Vec3fx& a ) { return Vec3fx(sycl::recip(a.x),sycl::recip(a.y),sycl::recip(a.z)); }
|
||||
__forceinline Vec3fx rcp ( const Vec3fx& a ) { return Vec3fx(__sycl_std::__invoke_native_recip<float>(a.x),__sycl_std::__invoke_native_recip<float>(a.y),__sycl_std::__invoke_native_recip<float>(a.z),__sycl_std::__invoke_native_recip<float>(a.w)); }
|
||||
__forceinline Vec3fx rcp ( const Vec3fx& a ) { return Vec3fx(sycl::native::recip(a.x),sycl::native::recip(a.y),sycl::native::recip(a.z),sycl::native::recip(a.w)); }
|
||||
__forceinline Vec3fx sqrt ( const Vec3fx& a ) { return Vec3fx(sycl::sqrt(a.x),sycl::sqrt(a.y),sycl::sqrt(a.z),sycl::sqrt(a.w)); }
|
||||
__forceinline Vec3fx sqr ( const Vec3fx& a ) { return Vec3fx(a.x*a.x,a.y*a.y,a.z*a.z,a.w*a.w); }
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ __forceinline __m128 _mm_broadcast_ss (float const * mem_addr)
|
||||
#define _MM_SET_EXCEPTION_MASK(x)
|
||||
// #define _MM_SET_FLUSH_ZERO_MODE(x)
|
||||
|
||||
/*
|
||||
__forceinline int _mm_getcsr()
|
||||
{
|
||||
return 0;
|
||||
@@ -43,6 +44,7 @@ __forceinline void _mm_mfence()
|
||||
{
|
||||
__sync_synchronize();
|
||||
}
|
||||
*/
|
||||
|
||||
__forceinline __m128i _mm_load4epu8_epi32(__m128i *ptr)
|
||||
{
|
||||
|
||||
+2051
-687
File diff suppressed because it is too large
Load Diff
@@ -119,7 +119,7 @@ namespace embree
|
||||
#if defined(__aarch64__)
|
||||
template<int i0, int i1, int i2, int i3>
|
||||
__forceinline vboolf4 shuffle(const vboolf4& v) {
|
||||
return vreinterpretq_f32_u8(vqtbl1q_u8( vreinterpretq_u8_s32(v), _MN_SHUFFLE(i0, i1, i2, i3)));
|
||||
return vreinterpretq_f32_u8(vqtbl1q_u8( vreinterpretq_u8_s32((int32x4_t)v.v), _MN_SHUFFLE(i0, i1, i2, i3)));
|
||||
}
|
||||
|
||||
template<int i0, int i1, int i2, int i3>
|
||||
|
||||
@@ -316,6 +316,17 @@ namespace embree
|
||||
return madd(t,b-a,a);
|
||||
}
|
||||
|
||||
__forceinline bool isvalid (const vfloat16& v) {
|
||||
return all((v > vfloat16(-FLT_LARGE)) & (v < vfloat16(+FLT_LARGE)));
|
||||
}
|
||||
|
||||
__forceinline void xchg(vboolf16 m, vfloat16& a, vfloat16& b)
|
||||
{
|
||||
vfloat16 c = a;
|
||||
a = select(m,b,a);
|
||||
b = select(m,c,b);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Rounding Functions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -48,9 +48,8 @@ namespace embree
|
||||
|
||||
void disableUSMAllocTutorial()
|
||||
{
|
||||
if (tls_context_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled");
|
||||
if (tls_device_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled");
|
||||
|
||||
//if (tls_context_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled");
|
||||
//if (tls_device_tutorial == nullptr) throw std::runtime_error("USM allocation not enabled");
|
||||
tls_context_tutorial = nullptr;
|
||||
tls_device_tutorial = nullptr;
|
||||
}
|
||||
|
||||
@@ -35,18 +35,6 @@ namespace embree
|
||||
filename.resize(filename.size()-1);
|
||||
}
|
||||
|
||||
/*! returns path to home folder */
|
||||
FileName FileName::homeFolder()
|
||||
{
|
||||
#ifdef __WIN32__
|
||||
const char* home = getenv("UserProfile");
|
||||
#else
|
||||
const char* home = getenv("HOME");
|
||||
#endif
|
||||
if (home) return home;
|
||||
return "";
|
||||
}
|
||||
|
||||
/*! returns path to executable */
|
||||
FileName FileName::executableFolder() {
|
||||
return FileName(getExecutableFileName()).path();
|
||||
|
||||
@@ -20,9 +20,6 @@ namespace embree
|
||||
|
||||
/*! create a valid filename from a string */
|
||||
FileName (const std::string& filename);
|
||||
|
||||
/*! returns path to home folder */
|
||||
static FileName homeFolder();
|
||||
|
||||
/*! returns path to executable */
|
||||
static FileName executableFolder();
|
||||
|
||||
@@ -223,7 +223,7 @@ namespace embree
|
||||
|
||||
#if defined(EMBREE_SYCL_SUPPORT) && defined(__SYCL_DEVICE_ONLY__)
|
||||
__forceinline unsigned int bsf(unsigned v) {
|
||||
return SYCL_CTZ::ctz(v);
|
||||
return sycl::ctz(v);
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -248,7 +248,7 @@ namespace embree
|
||||
|
||||
#if defined(EMBREE_SYCL_SUPPORT) && defined(__SYCL_DEVICE_ONLY__)
|
||||
__forceinline size_t bsf(size_t v) {
|
||||
return SYCL_CTZ::ctz(v);
|
||||
return sycl::ctz(v);
|
||||
}
|
||||
#else
|
||||
|
||||
|
||||
+20
-39
@@ -20,6 +20,7 @@
|
||||
#include <cstring>
|
||||
#include <stdint.h>
|
||||
#include <functional>
|
||||
#include <mutex>
|
||||
|
||||
#if defined(EMBREE_SYCL_SUPPORT)
|
||||
|
||||
@@ -33,13 +34,6 @@
|
||||
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
#define SYCL_ONEAPI sycl
|
||||
#define SYCL_EXT_ONEAPI sycl::ext::oneapi
|
||||
#define SYCL_SUBGROUP sycl
|
||||
#define SYCL_EXPERIMENTAL sycl::ext::oneapi::experimental
|
||||
#define SYCL_INTEL sycl::ext::intel
|
||||
#define SYCL_CTZ sycl
|
||||
|
||||
#include "sycl.h"
|
||||
|
||||
#if defined(EMBREE_SYCL_SUPPORT) && defined(__SYCL_DEVICE_ONLY__)
|
||||
@@ -366,38 +360,38 @@ __forceinline std::string toString(long long value) {
|
||||
|
||||
#define sycl_printf0(format, ...) { \
|
||||
static const CONSTANT char fmt[] = format; \
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true))) \
|
||||
SYCL_EXT_ONEAPI::experimental::printf(fmt, __VA_ARGS__ ); \
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true))) \
|
||||
sycl::ext::oneapi::experimental::printf(fmt, __VA_ARGS__ ); \
|
||||
}
|
||||
|
||||
#define sycl_printf0_(format) { \
|
||||
static const CONSTANT char fmt[] = format; \
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true))) \
|
||||
SYCL_EXT_ONEAPI::experimental::printf(fmt); \
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true))) \
|
||||
sycl::ext::oneapi::experimental::printf(fmt); \
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#define sycl_printf0(format, ...) { \
|
||||
static const CONSTANT char fmt[] = format; \
|
||||
SYCL_EXT_ONEAPI::experimental::printf(fmt, __VA_ARGS__ ); \
|
||||
sycl::ext::oneapi::experimental::printf(fmt, __VA_ARGS__ ); \
|
||||
}
|
||||
|
||||
#define sycl_printf0_(format) { \
|
||||
static const CONSTANT char fmt[] = format; \
|
||||
SYCL_EXT_ONEAPI::experimental::printf(fmt); \
|
||||
sycl::ext::oneapi::experimental::printf(fmt); \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#define sycl_printf(format, ...) { \
|
||||
static const CONSTANT char fmt[] = format; \
|
||||
SYCL_EXT_ONEAPI::experimental::printf(fmt, __VA_ARGS__ ); \
|
||||
sycl::ext::oneapi::experimental::printf(fmt, __VA_ARGS__ ); \
|
||||
}
|
||||
|
||||
#define sycl_printf_(format) { \
|
||||
static const CONSTANT char fmt[] = format; \
|
||||
SYCL_EXT_ONEAPI::experimental::printf(fmt); \
|
||||
sycl::ext::oneapi::experimental::printf(fmt); \
|
||||
}
|
||||
|
||||
#if defined(EMBREE_SYCL_SUPPORT) && defined(__SYCL_DEVICE_ONLY__)
|
||||
@@ -418,7 +412,7 @@ namespace embree
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, int i)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%i",i);
|
||||
}
|
||||
else
|
||||
@@ -430,31 +424,18 @@ namespace embree
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, unsigned int i)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%u",i);
|
||||
} else
|
||||
sycl_printf("%u ",i);
|
||||
|
||||
return cout;
|
||||
}
|
||||
|
||||
#if defined(__WIN32__) and defined(__INTEL_LLVM_COMPILER)
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, size_t i)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%i",i);
|
||||
} else {
|
||||
sycl_printf("%i ",i);
|
||||
}
|
||||
return cout;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, float f)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%f",f);
|
||||
} else
|
||||
sycl_printf("%f ",f);
|
||||
@@ -465,7 +446,7 @@ namespace embree
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, double d)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%f",d);
|
||||
} else
|
||||
sycl_printf("%f ",d);
|
||||
@@ -473,10 +454,10 @@ namespace embree
|
||||
return cout;
|
||||
}
|
||||
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, ulong l)
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, uint64_t l)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%lu",l);
|
||||
} else
|
||||
sycl_printf("%lu ",l);
|
||||
@@ -487,7 +468,7 @@ namespace embree
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, long l)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%l",l);
|
||||
} else
|
||||
sycl_printf("%l ",l);
|
||||
@@ -499,7 +480,7 @@ namespace embree
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, void* p)
|
||||
{
|
||||
if (cout.uniform) {
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%p",p);
|
||||
} else
|
||||
sycl_printf("%p ",p);
|
||||
@@ -509,14 +490,14 @@ namespace embree
|
||||
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, const char* c)
|
||||
{
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf("%s",c);
|
||||
return cout;
|
||||
}
|
||||
|
||||
inline sycl_ostream_ operator <<(sycl_ostream_ cout, sycl_endl_)
|
||||
{
|
||||
if (get_sub_group_local_id() == SYCL_CTZ::ctz(intel_sub_group_ballot(true)))
|
||||
if (get_sub_group_local_id() == sycl::ctz(intel_sub_group_ballot(true)))
|
||||
sycl_printf_("\n");
|
||||
return cout;
|
||||
}
|
||||
|
||||
+65
-65
@@ -20,23 +20,16 @@ using sycl::uint8;
|
||||
using sycl::uint4;
|
||||
using sycl::uint3;
|
||||
using sycl::uint2;
|
||||
using sycl::uint;
|
||||
using sycl::ulong;
|
||||
using sycl::uchar16;
|
||||
using sycl::uchar8;
|
||||
using sycl::uchar4;
|
||||
using sycl::uchar3;
|
||||
using sycl::uchar2;
|
||||
using sycl::uchar;
|
||||
using sycl::ushort16;
|
||||
using sycl::ushort8;
|
||||
using sycl::ushort4;
|
||||
using sycl::ushort3;
|
||||
using sycl::ushort2;
|
||||
using sycl::ushort;
|
||||
|
||||
using sycl::fmax;
|
||||
using sycl::fmin;
|
||||
|
||||
#ifdef __SYCL_DEVICE_ONLY__
|
||||
#define GLOBAL __attribute__((opencl_global))
|
||||
@@ -51,7 +44,7 @@ SYCL_EXTERNAL extern float atomic_min(volatile LOCAL float *p, float val);
|
||||
SYCL_EXTERNAL extern float atomic_max(volatile GLOBAL float *p, float val);
|
||||
SYCL_EXTERNAL extern float atomic_max(volatile LOCAL float *p, float val);
|
||||
|
||||
SYCL_EXTERNAL extern "C" uint intel_sub_group_ballot(bool valid);
|
||||
SYCL_EXTERNAL extern "C" unsigned int intel_sub_group_ballot(bool valid);
|
||||
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_assume_uniform(void *p);
|
||||
|
||||
@@ -91,32 +84,32 @@ SYCL_EXTERNAL extern "C" void __builtin_IB_assume_uniform(void *p);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
SYCL_EXTERNAL /* extern "C" */ uint __builtin_IB_lsc_load_global_uchar_to_uint (const GLOBAL sycl::uchar *base, int elemOff, enum LSC_LDCC cacheOpt); //D8U32
|
||||
SYCL_EXTERNAL /* extern "C" */ uint __builtin_IB_lsc_load_global_ushort_to_uint(const GLOBAL sycl::ushort *base, int elemOff, enum LSC_LDCC cacheOpt); //D16U32
|
||||
SYCL_EXTERNAL /* extern "C" */ uint __builtin_IB_lsc_load_global_uint (const GLOBAL sycl::uint *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V1
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint2 __builtin_IB_lsc_load_global_uint2 (const GLOBAL sycl::uint2 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V2
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint3 __builtin_IB_lsc_load_global_uint3 (const GLOBAL sycl::uint3 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V3
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint4 __builtin_IB_lsc_load_global_uint4 (const GLOBAL sycl::uint4 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V4
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint8 __builtin_IB_lsc_load_global_uint8 (const GLOBAL sycl::uint8 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V8
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong __builtin_IB_lsc_load_global_ulong (const GLOBAL sycl::ulong *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V1
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong2 __builtin_IB_lsc_load_global_ulong2(const GLOBAL sycl::ulong2 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V2
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong3 __builtin_IB_lsc_load_global_ulong3(const GLOBAL sycl::ulong3 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V3
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong4 __builtin_IB_lsc_load_global_ulong4(const GLOBAL sycl::ulong4 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V4
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong8 __builtin_IB_lsc_load_global_ulong8(const GLOBAL sycl::ulong8 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V8
|
||||
SYCL_EXTERNAL /* extern "C" */ uint32_t __builtin_IB_lsc_load_global_uchar_to_uint (const GLOBAL uint8_t *base, int elemOff, enum LSC_LDCC cacheOpt); //D8U32
|
||||
SYCL_EXTERNAL /* extern "C" */ uint32_t __builtin_IB_lsc_load_global_ushort_to_uint(const GLOBAL uint16_t *base, int elemOff, enum LSC_LDCC cacheOpt); //D16U32
|
||||
SYCL_EXTERNAL /* extern "C" */ uint32_t __builtin_IB_lsc_load_global_uint (const GLOBAL uint32_t *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V1
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint2 __builtin_IB_lsc_load_global_uint2 (const GLOBAL sycl::uint2 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V2
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint3 __builtin_IB_lsc_load_global_uint3 (const GLOBAL sycl::uint3 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V3
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint4 __builtin_IB_lsc_load_global_uint4 (const GLOBAL sycl::uint4 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V4
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::uint8 __builtin_IB_lsc_load_global_uint8 (const GLOBAL sycl::uint8 *base, int elemOff, enum LSC_LDCC cacheOpt); //D32V8
|
||||
SYCL_EXTERNAL /* extern "C" */ uint64_t __builtin_IB_lsc_load_global_ulong (const GLOBAL uint64_t *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V1
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong2 __builtin_IB_lsc_load_global_ulong2 (const GLOBAL sycl::ulong2 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V2
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong3 __builtin_IB_lsc_load_global_ulong3 (const GLOBAL sycl::ulong3 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V3
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong4 __builtin_IB_lsc_load_global_ulong4 (const GLOBAL sycl::ulong4 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V4
|
||||
SYCL_EXTERNAL /* extern "C" */ sycl::ulong8 __builtin_IB_lsc_load_global_ulong8 (const GLOBAL sycl::ulong8 *base, int elemOff, enum LSC_LDCC cacheOpt); //D64V8
|
||||
|
||||
// global address space
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uchar_from_uint (GLOBAL sycl::uchar *base, int immElemOff, uint val, enum LSC_STCC cacheOpt); //D8U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ushort_from_uint(GLOBAL sycl::ushort *base, int immElemOff, uint val, enum LSC_STCC cacheOpt); //D16U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint (GLOBAL sycl::uint *base, int immElemOff, uint val, enum LSC_STCC cacheOpt); //D32V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint2 (GLOBAL sycl::uint2 *base, int immElemOff, sycl::uint2 val, enum LSC_STCC cacheOpt); //D32V2
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint3 (GLOBAL sycl::uint3 *base, int immElemOff, sycl::uint3 val, enum LSC_STCC cacheOpt); //D32V3
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint4 (GLOBAL sycl::uint4 *base, int immElemOff, sycl::uint4 val, enum LSC_STCC cacheOpt); //D32V4
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint8 (GLOBAL sycl::uint8 *base, int immElemOff, sycl::uint8 val, enum LSC_STCC cacheOpt); //D32V8
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong (GLOBAL sycl::ulong *base, int immElemOff, sycl::ulong val, enum LSC_STCC cacheOpt); //D64V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong2(GLOBAL sycl::ulong2 *base, int immElemOff, sycl::ulong2 val, enum LSC_STCC cacheOpt); //D64V2
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong3(GLOBAL sycl::ulong3 *base, int immElemOff, sycl::ulong3 val, enum LSC_STCC cacheOpt); //D64V3
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong4(GLOBAL sycl::ulong4 *base, int immElemOff, sycl::ulong4 val, enum LSC_STCC cacheOpt); //D64V4
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong8(GLOBAL sycl::ulong8 *base, int immElemOff, sycl::ulong8 val, enum LSC_STCC cacheOpt); //D64V8
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uchar_from_uint (GLOBAL uint8_t *base, int immElemOff, uint32_t val, enum LSC_STCC cacheOpt); //D8U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ushort_from_uint(GLOBAL uint16_t *base, int immElemOff, uint32_t val, enum LSC_STCC cacheOpt); //D16U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint (GLOBAL uint32_t *base, int immElemOff, uint32_t val, enum LSC_STCC cacheOpt); //D32V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint2 (GLOBAL sycl::uint2 *base, int immElemOff, sycl::uint2 val, enum LSC_STCC cacheOpt); //D32V2
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint3 (GLOBAL sycl::uint3 *base, int immElemOff, sycl::uint3 val, enum LSC_STCC cacheOpt); //D32V3
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint4 (GLOBAL sycl::uint4 *base, int immElemOff, sycl::uint4 val, enum LSC_STCC cacheOpt); //D32V4
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_uint8 (GLOBAL sycl::uint8 *base, int immElemOff, sycl::uint8 val, enum LSC_STCC cacheOpt); //D32V8
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong (GLOBAL uint64_t *base, int immElemOff, uint64_t val, enum LSC_STCC cacheOpt); //D64V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong2 (GLOBAL sycl::ulong2 *base, int immElemOff, sycl::ulong2 val, enum LSC_STCC cacheOpt); //D64V2
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong3 (GLOBAL sycl::ulong3 *base, int immElemOff, sycl::ulong3 val, enum LSC_STCC cacheOpt); //D64V3
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong4 (GLOBAL sycl::ulong4 *base, int immElemOff, sycl::ulong4 val, enum LSC_STCC cacheOpt); //D64V4
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong8 (GLOBAL sycl::ulong8 *base, int immElemOff, sycl::ulong8 val, enum LSC_STCC cacheOpt); //D64V8
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// prefetching
|
||||
@@ -124,14 +117,14 @@ SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_store_global_ulong8(GLOBAL sycl
|
||||
//
|
||||
// LSC Pre-Fetch Load functions with CacheControls
|
||||
// global address space
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uchar (const GLOBAL sycl::uchar *base, int immElemOff, enum LSC_LDCC cacheOpt); //D8U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_ushort(const GLOBAL sycl::ushort *base, int immElemOff, enum LSC_LDCC cacheOpt); //D16U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint (const GLOBAL sycl::uint *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint2 (const GLOBAL sycl::uint2 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V2
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint3 (const GLOBAL sycl::uint3 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V3
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint4 (const GLOBAL sycl::uint4 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V4
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint8 (const GLOBAL sycl::uint8 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V8
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_ulong (const GLOBAL sycl::ulong *base, int immElemOff, enum LSC_LDCC cacheOpt); //D64V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uchar (const GLOBAL uint8_t *base, int immElemOff, enum LSC_LDCC cacheOpt); //D8U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_ushort(const GLOBAL uint16_t *base, int immElemOff, enum LSC_LDCC cacheOpt); //D16U32
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint (const GLOBAL uint32_t *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint2 (const GLOBAL sycl::uint2 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V2
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint3 (const GLOBAL sycl::uint3 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V3
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint4 (const GLOBAL sycl::uint4 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V4
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_uint8 (const GLOBAL sycl::uint8 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D32V8
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_ulong (const GLOBAL uint64_t *base, int immElemOff, enum LSC_LDCC cacheOpt); //D64V1
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_ulong2(const GLOBAL sycl::ulong2 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D64V2
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_ulong3(const GLOBAL sycl::ulong3 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D64V3
|
||||
SYCL_EXTERNAL extern "C" void __builtin_IB_lsc_prefetch_global_ulong4(const GLOBAL sycl::ulong4 *base, int immElemOff, enum LSC_LDCC cacheOpt); //D64V4
|
||||
@@ -150,14 +143,14 @@ inline float work_group_reduce_max(float x) { return x; }
|
||||
inline float atomic_min(volatile float *p, float val) { return val; };
|
||||
inline float atomic_max(volatile float *p, float val) { return val; };
|
||||
|
||||
inline uint intel_sub_group_ballot(bool valid) { return 0; }
|
||||
inline uint32_t intel_sub_group_ballot(bool valid) { return 0; }
|
||||
|
||||
#endif
|
||||
|
||||
/* creates a temporary that is enforced to be uniform */
|
||||
#define SYCL_UNIFORM_VAR(Ty,tmp,k) \
|
||||
Ty tmp##_data; \
|
||||
Ty* p##tmp##_data = (Ty*) sub_group_broadcast((ulong)&tmp##_data,k); \
|
||||
Ty* p##tmp##_data = (Ty*) sub_group_broadcast((uint64_t)&tmp##_data,k); \
|
||||
Ty& tmp = *p##tmp##_data;
|
||||
|
||||
#if !defined(__forceinline)
|
||||
@@ -188,48 +181,55 @@ namespace embree
|
||||
return sycl::select(b,a,mask);
|
||||
}
|
||||
|
||||
__forceinline const SYCL_EXT_ONEAPI::sub_group this_sub_group() {
|
||||
return SYCL_EXPERIMENTAL::this_sub_group();
|
||||
#define XSTR(x) STR(x)
|
||||
#define STR(x) #x
|
||||
|
||||
__forceinline const sycl::sub_group this_sub_group() {
|
||||
#if __LIBSYCL_MAJOR_VERSION >= 8
|
||||
return sycl::ext::oneapi::this_work_item::get_sub_group();
|
||||
#else
|
||||
return sycl::ext::oneapi::experimental::this_sub_group();
|
||||
#endif
|
||||
}
|
||||
|
||||
__forceinline const uint get_sub_group_local_id() {
|
||||
__forceinline const uint32_t get_sub_group_local_id() {
|
||||
return this_sub_group().get_local_id()[0];
|
||||
}
|
||||
|
||||
__forceinline const uint get_sub_group_size() {
|
||||
__forceinline const uint32_t get_sub_group_size() {
|
||||
return this_sub_group().get_max_local_range().size();
|
||||
}
|
||||
|
||||
__forceinline const uint get_sub_group_id() {
|
||||
__forceinline const uint32_t get_sub_group_id() {
|
||||
return this_sub_group().get_group_id()[0];
|
||||
}
|
||||
|
||||
__forceinline const uint get_num_sub_groups() {
|
||||
__forceinline const uint32_t get_num_sub_groups() {
|
||||
return this_sub_group().get_group_range().size();
|
||||
}
|
||||
|
||||
__forceinline uint sub_group_ballot(bool pred) {
|
||||
__forceinline uint32_t sub_group_ballot(bool pred) {
|
||||
return intel_sub_group_ballot(pred);
|
||||
}
|
||||
|
||||
__forceinline bool sub_group_all_of(bool pred) {
|
||||
return SYCL_ONEAPI::all_of_group(this_sub_group(),pred);
|
||||
return sycl::all_of_group(this_sub_group(),pred);
|
||||
}
|
||||
|
||||
__forceinline bool sub_group_any_of(bool pred) {
|
||||
return SYCL_ONEAPI::any_of_group(this_sub_group(),pred);
|
||||
return sycl::any_of_group(this_sub_group(),pred);
|
||||
}
|
||||
|
||||
__forceinline bool sub_group_none_of(bool pred) {
|
||||
return SYCL_ONEAPI::none_of_group(this_sub_group(),pred);
|
||||
return sycl::none_of_group(this_sub_group(),pred);
|
||||
}
|
||||
|
||||
template <typename T> __forceinline T sub_group_broadcast(T x, sycl::id<1> local_id) {
|
||||
return SYCL_SUBGROUP::group_broadcast<SYCL_EXT_ONEAPI::sub_group>(this_sub_group(),x,local_id);
|
||||
return sycl::group_broadcast<sycl::sub_group>(this_sub_group(),x,local_id);
|
||||
}
|
||||
|
||||
template <typename T> __forceinline T sub_group_make_uniform(T x) {
|
||||
return sub_group_broadcast(x,SYCL_CTZ::ctz(intel_sub_group_ballot(true)));
|
||||
return sub_group_broadcast(x,sycl::ctz(intel_sub_group_ballot(true)));
|
||||
}
|
||||
|
||||
__forceinline void assume_uniform_array(void* ptr) {
|
||||
@@ -239,47 +239,47 @@ namespace embree
|
||||
}
|
||||
|
||||
template <typename T, class BinaryOperation> __forceinline T sub_group_reduce(T x, BinaryOperation binary_op) {
|
||||
return SYCL_SUBGROUP::reduce_over_group<SYCL_EXT_ONEAPI::sub_group>(this_sub_group(),x,binary_op);
|
||||
return sycl::reduce_over_group<sycl::sub_group>(this_sub_group(),x,binary_op);
|
||||
}
|
||||
|
||||
template <typename T, class BinaryOperation> __forceinline T sub_group_reduce(T x, T init, BinaryOperation binary_op) {
|
||||
return SYCL_SUBGROUP::reduce_over_group<SYCL_EXT_ONEAPI::sub_group>(this_sub_group(),x,init,binary_op);
|
||||
return sycl::reduce_over_group<sycl::sub_group>(this_sub_group(),x,init,binary_op);
|
||||
}
|
||||
|
||||
template <typename T> __forceinline T sub_group_reduce_min(T x, T init) {
|
||||
return sub_group_reduce(x, init, SYCL_EXT_ONEAPI::minimum<T>());
|
||||
return sub_group_reduce(x, init, sycl::ext::oneapi::minimum<T>());
|
||||
}
|
||||
|
||||
template <typename T> __forceinline T sub_group_reduce_min(T x) {
|
||||
return sub_group_reduce(x, SYCL_EXT_ONEAPI::minimum<T>());
|
||||
return sub_group_reduce(x, sycl::ext::oneapi::minimum<T>());
|
||||
}
|
||||
|
||||
template <typename T> __forceinline T sub_group_reduce_max(T x) {
|
||||
return sub_group_reduce(x, SYCL_EXT_ONEAPI::maximum<T>());
|
||||
return sub_group_reduce(x, sycl::ext::oneapi::maximum<T>());
|
||||
}
|
||||
|
||||
template <typename T> __forceinline T sub_group_reduce_add(T x) {
|
||||
return sub_group_reduce(x, SYCL_EXT_ONEAPI::plus<T>());
|
||||
return sub_group_reduce(x, sycl::ext::oneapi::plus<T>());
|
||||
}
|
||||
|
||||
template <typename T, class BinaryOperation> __forceinline T sub_group_exclusive_scan(T x, BinaryOperation binary_op) {
|
||||
return SYCL_SUBGROUP::exclusive_scan_over_group(this_sub_group(),x,binary_op);
|
||||
return sycl::exclusive_scan_over_group(this_sub_group(),x,binary_op);
|
||||
}
|
||||
|
||||
template <typename T, class BinaryOperation> __forceinline T sub_group_exclusive_scan_min(T x) {
|
||||
return sub_group_exclusive_scan(x,SYCL_EXT_ONEAPI::minimum<T>());
|
||||
return sub_group_exclusive_scan(x,sycl::ext::oneapi::minimum<T>());
|
||||
}
|
||||
|
||||
template <typename T, class BinaryOperation> __forceinline T sub_group_exclusive_scan(T x, T init, BinaryOperation binary_op) {
|
||||
return SYCL_SUBGROUP::exclusive_scan_over_group(this_sub_group(),x,init,binary_op);
|
||||
return sycl::exclusive_scan_over_group(this_sub_group(),x,init,binary_op);
|
||||
}
|
||||
|
||||
template <typename T, class BinaryOperation> __forceinline T sub_group_inclusive_scan(T x, BinaryOperation binary_op) {
|
||||
return SYCL_SUBGROUP::inclusive_scan_over_group(this_sub_group(),x,binary_op);
|
||||
return sycl::inclusive_scan_over_group(this_sub_group(),x,binary_op);
|
||||
}
|
||||
|
||||
template <typename T, class BinaryOperation> __forceinline T sub_group_inclusive_scan(T x, BinaryOperation binary_op, T init) {
|
||||
return SYCL_SUBGROUP::inclusive_scan_over_group(this_sub_group(),x,binary_op,init);
|
||||
return sycl::inclusive_scan_over_group(this_sub_group(),x,binary_op,init);
|
||||
}
|
||||
|
||||
template <typename T> __forceinline T sub_group_shuffle(T x, sycl::id<1> local_id) {
|
||||
|
||||
@@ -344,6 +344,19 @@ namespace embree
|
||||
if (cpuid_leaf_7[EBX] & CPU_FEATURE_BIT_AVX512VL ) cpu_features |= CPU_FEATURE_AVX512VL;
|
||||
if (cpuid_leaf_7[ECX] & CPU_FEATURE_BIT_AVX512VBMI) cpu_features |= CPU_FEATURE_AVX512VBMI;
|
||||
|
||||
#if defined(__MACOSX__)
|
||||
if ( (cpu_features & CPU_FEATURE_AVX512F)
|
||||
|| (cpu_features & CPU_FEATURE_AVX512DQ)
|
||||
|| (cpu_features & CPU_FEATURE_AVX512CD)
|
||||
|| (cpu_features & CPU_FEATURE_AVX512BW)
|
||||
|| (cpu_features & CPU_FEATURE_AVX512VL) )
|
||||
{
|
||||
// on macOS AVX512 will be enabled automatically by the kernel when the first AVX512 instruction is called
|
||||
// see https://github.com/apple/darwin-xnu/blob/0a798f6738bc1db01281fc08ae024145e84df927/osfmk/i386/fpu.c#L176
|
||||
// therefore we ignore the state of XCR0
|
||||
cpu_features |= CPU_FEATURE_ZMM_ENABLED;
|
||||
}
|
||||
#endif
|
||||
return cpu_features;
|
||||
|
||||
#elif defined(__ARM_NEON) || defined(__EMSCRIPTEN__)
|
||||
|
||||
@@ -150,7 +150,8 @@ namespace embree
|
||||
{
|
||||
Lock<MutexSys> lock(g_mutex);
|
||||
assert(newNumThreads);
|
||||
newNumThreads = min(newNumThreads, (size_t) getNumberOfLogicalThreads());
|
||||
if (newNumThreads == std::numeric_limits<size_t>::max())
|
||||
newNumThreads = (size_t) getNumberOfLogicalThreads();
|
||||
|
||||
numThreads = newNumThreads;
|
||||
if (!startThreads && !running) return;
|
||||
@@ -230,7 +231,8 @@ namespace embree
|
||||
TaskScheduler::TaskScheduler()
|
||||
: threadCounter(0), anyTasksRunning(0), hasRootTask(false)
|
||||
{
|
||||
threadLocal.resize(2*getNumberOfLogicalThreads()); // FIXME: this has to be 2x as in the compatibility join mode with rtcCommitScene the worker threads also join. When disallowing rtcCommitScene to join a build we can remove the 2x.
|
||||
assert(threadPool);
|
||||
threadLocal.resize(2 * TaskScheduler::threadCount()); // FIXME: this has to be 2x as in the compatibility join mode with rtcCommitScene the worker threads also join. When disallowing rtcCommitScene to join a build we can remove the 2x.
|
||||
for (size_t i=0; i<threadLocal.size(); i++)
|
||||
threadLocal[i].store(nullptr);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ endif()
|
||||
|
||||
string(REGEX REPLACE "\n$" "" intelstyle_url "${intelstyle_url}")
|
||||
string(REPLACE "embree" "intelstyle" intelstyle_url "${intelstyle_url}")
|
||||
string(REPLACE "libraries" "documentation" intelstyle_url "${intelstyle_url}")
|
||||
|
||||
message(STATUS "Fetch intelstyle repository ${intelstyle_url}")
|
||||
include(FetchContent)
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
@@ -184,6 +184,11 @@
|
||||
```
|
||||
\pagebreak
|
||||
|
||||
## RTC_GEOMETRY_TYPE_INSTANCE_ARRAY
|
||||
``` {include=src/api/RTC_GEOMETRY_TYPE_INSTANCE_ARRAY.md}
|
||||
```
|
||||
\pagebreak
|
||||
|
||||
## RTCCurveFlags
|
||||
``` {include=src/api/RTCCurveFlags.md}
|
||||
```
|
||||
@@ -355,6 +360,11 @@
|
||||
```
|
||||
\pagebreak
|
||||
|
||||
## rtcSetGeometryInstancedScenes
|
||||
``` {include=src/api/rtcSetGeometryInstancedScenes.md}
|
||||
```
|
||||
\pagebreak
|
||||
|
||||
## rtcSetGeometryTransform
|
||||
``` {include=src/api/rtcSetGeometryTransform.md}
|
||||
```
|
||||
@@ -370,6 +380,15 @@
|
||||
```
|
||||
\pagebreak
|
||||
|
||||
## rtcGetGeometryTransformEx
|
||||
``` {include=src/api/rtcGetGeometryTransformEx.md}
|
||||
```
|
||||
\pagebreak
|
||||
|
||||
## rtcGetGeometryTransformFromScene
|
||||
``` {include=src/api/rtcGetGeometryTransformFromScene.md}
|
||||
```
|
||||
\pagebreak
|
||||
|
||||
## rtcSetGeometryTessellationRate
|
||||
``` {include=src/api/rtcSetGeometryTessellationRate.md}
|
||||
|
||||
+1
-16
@@ -117,7 +117,7 @@ e.g. just triangles in this example.
|
||||
|
||||
Inside the SYCL `parallel_for` loop you can use rendering related functions,
|
||||
such as the `rtcIntersect1` and `rtcOccluded1` functions to trace rays,
|
||||
`rtcForwardIntersect1` and `rtcForwardOccluded1` to continue object
|
||||
`rtcForwardIntersect1/Ex` and `rtcForwardOccluded1/Ex` to continue object
|
||||
traversal from inside a user geometry callback,
|
||||
and `rtcGetGeometryUserDataFromScene` to get the user data pointer of some
|
||||
geometry.
|
||||
@@ -224,21 +224,6 @@ Embree SYCL Known Issues
|
||||
quality, and GPU performance may not reflect that of the final
|
||||
product.
|
||||
|
||||
- Currently only the following Intel® Arc™ GPUs are support:
|
||||
|
||||
- Intel® Arc™ A770 Graphics
|
||||
- Intel® Arc™ A750 Graphics
|
||||
- Intel® Arc™ A770M Graphics
|
||||
- Intel® Arc™ A730M Graphics
|
||||
- Intel® Arc™ A550M Graphics
|
||||
|
||||
- Intel® Data Center GPU Max Series is currently not supported.
|
||||
|
||||
- Ahead of time compilation is currently not working properly and you
|
||||
will get this error during compilation:
|
||||
|
||||
llvm-foreach: Floating point exception (core dumped)
|
||||
|
||||
- Compilation with build configuration "debug" is currently not working on
|
||||
Windows.
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
RTC_BUFFER_TYPE_VERTEX_CREASE_INDEX = 20,
|
||||
RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT = 21,
|
||||
RTC_BUFFER_TYPE_HOLE = 22,
|
||||
|
||||
RTC_BUFFER_TYPE_TRANSFORM = 23,
|
||||
|
||||
RTC_BUFFER_TYPE_FLAGS = 32
|
||||
};
|
||||
@@ -60,6 +62,10 @@ The `RTC_BUFFER_TYPE_FACE`, `RTC_BUFFER_TYPE_LEVEL`,
|
||||
special buffers required to create subdivision meshes (see
|
||||
[RTC_GEOMETRY_TYPE_SUBDIVISION]).
|
||||
|
||||
The `RTC_BUFFER_TYPE_TRANSFORM` buffer is used to provide instance
|
||||
transformation information for instance array geometries (see
|
||||
[RTC_GEOMETRY_TYPE_INSTANCE_ARRAY]).
|
||||
|
||||
The `RTC_BUFFER_TYPE_FLAGS` can get used to add additional flag per
|
||||
primitive of a geometry, and is currently only used for linear curves.
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR,
|
||||
|
||||
RTC_FORMAT_GRID,
|
||||
|
||||
RTC_FORMAT_QUATERNION_DECOMPOSITION
|
||||
};
|
||||
|
||||
#### DESCRIPTION
|
||||
@@ -58,14 +60,16 @@ of (size 2,3,4, etc.). This format is typcally used to specify to
|
||||
format of vertex buffers, e.g. the `RTC_FORMAT_FLOAT3` type for vertex
|
||||
buffers of triangle meshes.
|
||||
|
||||
The `RTC_FORMAT_FLOAT3X4_ROW_MAJOR` and
|
||||
`RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR` formats, specify a 3x4 floating
|
||||
point matrix layed out either row major or column major. The
|
||||
`RTC_FORMAT_FLOAT4X4_ROW_MAJOR` and `RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR`
|
||||
formats, specify a 4x4 floating point matrix layed out either row
|
||||
major or column major. These matrix formats are used in the
|
||||
[rtcSetGeometryTransform] function in order to set a transformation
|
||||
matrix for geometries.
|
||||
The `RTC_FORMAT_FLOAT3X4_ROW_MAJOR` and `RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR`
|
||||
formats, specify a 3x4 floating point matrix layed out either row major or
|
||||
column major. The `RTC_FORMAT_FLOAT4X4_ROW_MAJOR` and
|
||||
`RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR` formats, specify a 4x4 floating point matrix
|
||||
layed out either row major or column major. The
|
||||
`RTC_FORMAT_QUATERNION_DECOMPOSITION` format specifies a structure that
|
||||
represents a quaternion decomposition (see [RTCQuaternionDecomposition]) of an affine
|
||||
transformation. These formats are used in the [rtcSetGeometryTransform]
|
||||
function or in geometry buffers with type `RTC_BUFFER_TYPE_TRANSFORM` in order
|
||||
to set a transformation matrix for instance and instance array geometries.
|
||||
|
||||
The `RTC_FORMAT_GRID` is a special data format used to specify grid
|
||||
primitives of layout RTCGrid when creating grid geometries
|
||||
@@ -77,3 +81,4 @@ primitives of layout RTCGrid when creating grid geometries
|
||||
|
||||
[rtcSetGeometryBuffer], [rtcSetSharedGeometryBuffer],
|
||||
[rtcSetNewGeometryBuffer], [rtcSetGeometryTransform]
|
||||
[RTCQuaternionDecomposition]
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
% RTC_GEOMETRY_TYPE_INSTANCE_ARRAY(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
RTC_GEOMETRY_TYPE_INSTANCE_ARRAY - instance array geometry type
|
||||
|
||||
#### SYNOPSIS
|
||||
|
||||
#include <embree4/rtcore.h>
|
||||
|
||||
RTCGeometry geometry =
|
||||
rtcNewGeometry(device, RTC_GEOMETRY_TYPE_INSTANCE_ARRAY);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
Embree supports instance arrays, which is a more memory efficient way to
|
||||
represent large amounts of instances of the same or a small set of (sub)scenes.
|
||||
The main difference to regular Embree instances is that Embree instance arrays
|
||||
have a buffer of transformations (either affine transformations or quaternion
|
||||
decompositions [RTCQuaternionDecomposition]) that can be allocated by
|
||||
Embree or a shared buffer, similar to vertex buffers for triangle meshes.
|
||||
Optionally, instead of instancing only one scene, an instance array can instance
|
||||
multiple scenes by passing an array of scenes and a corresponding
|
||||
index buffer that specifies which instance of the instance array instances
|
||||
which of the scenes in the scenes array.
|
||||
|
||||
Instance arrays are created by passing `RTC_GEOMETRY_TYPE_INSTANCE_ARRAY` to
|
||||
the `rtcNewGeometry` function call. The instanced scene can be either be set
|
||||
using the `rtcSetGeometryInstancedScene` call, or if multiple scenes should be
|
||||
instanced by passing an array of scenes using `rtcSetGeometryInstancedScenes`.
|
||||
The latter also requires to specify an index buffer using
|
||||
`rtcSetNewGeometryBuffer` or `rtcSetSharedGeometryBuffer` with
|
||||
`RTC_BUFFER_TYPE_INDEX` as the buffer type.
|
||||
|
||||
Because the transformation information can become large for a large amount of
|
||||
instances, the instance array allows to share the transformation buffer between
|
||||
the user application and Embree. It can be either stored in a buffer created by
|
||||
Embree with `rtcSetNewGeometryBuffer` or an already existing buffer can be
|
||||
shared using `rtcSetSharedGeometryBuffer`. In either case, the buffer type has
|
||||
to be `RTC_BUFFER_TYPE_TRANSFORM` and the allowed formats are
|
||||
`RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR`, `RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR`,
|
||||
`RTC_FORMAT_FLOAT3X4_ROW_MAJOR`, and `RTC_FORMAT_QUATERNION_DECOMPOSITION`.
|
||||
Embree will not modify the data in the transformation buffer.
|
||||
|
||||
Embree instance arrays support both single-level instancing and multi-level instancing.
|
||||
The maximum instance nesting depth is `RTC_MAX_INSTANCE_LEVEL_COUNT`; it
|
||||
can be configured at compile-time using the constant `EMBREE_MAX_INSTANCE_LEVEL_COUNT`.
|
||||
Users should adapt this constant to their needs: instances nested any deeper are silently
|
||||
ignored in release mode, and cause assertions in debug mode.
|
||||
|
||||
Please note that `rtcCommitScene` on the instanced scene(s) should be
|
||||
called first, followed by `rtcCommitGeometry` on the instance array,
|
||||
followed by `rtcCommitScene` for the top-level scene containing the
|
||||
instance array.
|
||||
|
||||
If a ray hits the instance, the `geomID` and `primID` members of the hit are
|
||||
set to the geometry ID and primitive ID of the hit primitive in the instanced
|
||||
scene. The `instID` member of the hit is set to the geometry ID of the instance
|
||||
array in the top-level scene and the `instPrimID` member is set to the index of
|
||||
the hit instance of the instance array.
|
||||
|
||||
For multi-segment motion blur, the number of time steps must be first specified
|
||||
using the `rtcSetGeometryTimeStepCount` function. Then a transformation for
|
||||
each time step can be specified using the `rtcSetNewGeometryBuffer` or
|
||||
`rtcSetSharedGeometryBuffer` function and passing the time step as the `slot`
|
||||
parameter of these calls.
|
||||
|
||||
See the [Instance Array Geometry] tutorial for an example of how to use instance arrays.
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
On failure `NULL` is returned and an error code is set that can be
|
||||
queried using `rtcGetDeviceError`.
|
||||
|
||||
#### SEE ALSO
|
||||
|
||||
[rtcNewGeometry], [rtcSetGeometryInstancedScene],
|
||||
[rtcSetGeometryInstancedScenes], [rtcSetNewGeometryBuffer],
|
||||
[rtcSetSharedGeometryBuffer], [rtcGetGeometryTransformEx]
|
||||
@@ -1,8 +1,8 @@
|
||||
% rtcForwardIntersect1(3) | Embree Ray Tracing Kernels 4
|
||||
% rtcForwardIntersect1/Ex(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
rtcForwardIntersect1 - forwards a single ray to new scene
|
||||
rtcForwardIntersect1/Ex - forwards a single ray to new scene
|
||||
from user geometry callback
|
||||
|
||||
#### SYNOPSIS
|
||||
@@ -16,16 +16,23 @@
|
||||
unsigned int instID
|
||||
);
|
||||
|
||||
void rtcForwardIntersect1Ex(
|
||||
const struct RTCIntersectFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID,
|
||||
);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
The `rtcForwardIntersect1` function forwards the traversal of a
|
||||
transformed ray (`ray` argument) into a scene (`scene` argument) from
|
||||
a user geometry callback. The function can only get invoked from a
|
||||
user geometry callback for a ray traversal initiated with the
|
||||
`rtcIntersect1` function. The callback arguments structure of the
|
||||
callback invokation has to get passed to the ray forwarding (`args`
|
||||
argument). The user geometry callback should instantly terminate after
|
||||
invoking the `rtcForwardIntersect1` function.
|
||||
The `rtcForwardIntersect1` and `rtcForwardIntersect1Ex` functions forward the
|
||||
traversal of a transformed ray (`ray` argument) into a scene (`scene` argument)
|
||||
from a user geometry callback. The function can only get invoked from a user
|
||||
geometry callback for a ray traversal initiated with the `rtcIntersect1`
|
||||
function. The callback arguments structure of the callback invokation has to
|
||||
get passed to the ray forwarding (`args` argument). The user geometry callback
|
||||
should instantly terminate after invoking the `rtcForwardIntersect1/Ex` function.
|
||||
|
||||
Only the ray origin and ray direction members of the ray
|
||||
argument are used for forwarding, all additional ray properties are
|
||||
@@ -42,10 +49,15 @@ This function can get used to implement user defined instancing using
|
||||
user geometries, e.g. by transforming the ray in a special way, and/or
|
||||
selecting between different scenes to instantiate.
|
||||
|
||||
For user defined instance arrays, the `rtcForwardIntersect1Ex` variant has an
|
||||
additional `instPrimID` argument which is pushed to the instance primitive ID
|
||||
stack. Instance primitive IDs identify which instance of an instance array was
|
||||
hit.
|
||||
|
||||
When using Embree on the CPU it is possible to recursively invoke
|
||||
`rtcIntersect1` directly from a user geometry callback. However, when
|
||||
SYCL is used, recursively tracing rays is not directly supported, and
|
||||
the `rtcForwardIntersect1` function must be used.
|
||||
the `rtcForwardIntersect1/Ex` functions must be used.
|
||||
|
||||
The ray structure must be aligned to 16 bytes.
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
% rtcForwardIntersect4/8/16(3) | Embree Ray Tracing Kernels 4
|
||||
% rtcForwardIntersect4/8/16/Ex(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
rtcForwardIntersect4/8/16 - forwards a ray packet to new scene
|
||||
rtcForwardIntersect4/8/16/Ex - forwards a ray packet to new scene
|
||||
from user geometry callback
|
||||
|
||||
#### SYNOPSIS
|
||||
@@ -17,11 +17,11 @@
|
||||
unsigned int instID
|
||||
);
|
||||
|
||||
void rtcForwardIntersect4(
|
||||
void rtcForwardIntersect8(
|
||||
void int* valid,
|
||||
const struct RTCIntersectFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay4* ray,
|
||||
struct RTCRay8* ray,
|
||||
unsigned int instID
|
||||
);
|
||||
|
||||
@@ -30,19 +30,47 @@
|
||||
const struct RTCIntersectFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay16* ray,
|
||||
unsigned int instID
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
void rtcForwardIntersect4Ex(
|
||||
void int* valid,
|
||||
const struct RTCIntersectFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay4* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
void rtcForwardIntersect8Ex(
|
||||
void int* valid,
|
||||
const struct RTCIntersectFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay8* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
void rtcForwardIntersect16Ex(
|
||||
void int* valid,
|
||||
const struct RTCIntersectFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay16* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
The `rtcForwardIntersect4/8/16` functions forward the traversal of a
|
||||
transformed ray packet (`ray` argument) into a scene (`scene` argument) from
|
||||
a user geometry callback. The function can only get invoked from a
|
||||
user geometry callback for a ray traversal initiated with the
|
||||
`rtcIntersect4/8/16` function. The callback arguments structure of the
|
||||
callback invokation has to get passed to the ray forwarding (`args`
|
||||
argument). The user geometry callback should instantly terminate after
|
||||
invoking the `rtcForwardIntersect4/8/16` function.
|
||||
The `rtcForwardIntersect4/8/16` and `rtcForwardIntersect4/8/16Ex` functions
|
||||
forward the traversal of a transformed ray packet (`ray` argument) into a scene
|
||||
(`scene` argument) from a user geometry callback. The function can only get
|
||||
invoked from a user geometry callback for a ray traversal initiated with the
|
||||
`rtcIntersect4/8/16` function. The callback arguments structure of the callback
|
||||
invokation has to get passed to the ray forwarding (`args` argument). The user
|
||||
geometry callback should instantly terminate after invoking the
|
||||
`rtcForwardIntersect4/8/16/Ex` function.
|
||||
|
||||
Only the ray origin and ray direction members of the ray
|
||||
argument are used for forwarding, all additional ray properties are
|
||||
@@ -59,6 +87,11 @@ This function can get used to implement user defined instancing using
|
||||
user geometries, e.g. by transforming the ray in a special way, and/or
|
||||
selecting between different scenes to instantiate.
|
||||
|
||||
For user defined instance arrays, the `rtcForwardIntersect4/8/16Ex` variant has an
|
||||
additional `instPrimID` argument which is pushed to the instance primitive ID
|
||||
stack. Instance primitive IDs identify which instance of an instance array was
|
||||
hit.
|
||||
|
||||
When using Embree on the CPU it is possible to recursively invoke
|
||||
`rtcIntersect4/8/16` directly from a user geometry callback. However, when
|
||||
SYCL is used, recursively tracing rays is not directly supported, and
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
% rtcForwardOccluded1(3) | Embree Ray Tracing Kernels 4
|
||||
% rtcForwardOccluded1/Ex(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
rtcForwardOccluded1 - forwards a single ray to new scene
|
||||
rtcForwardOccluded1/Ex - forwards a single ray to new scene
|
||||
from user geometry callback
|
||||
|
||||
#### SYNOPSIS
|
||||
@@ -16,16 +16,23 @@
|
||||
unsigned int instID
|
||||
);
|
||||
|
||||
void rtcForwardOccluded1(
|
||||
const struct RTCOccludedFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
The `rtcForwardOccluded1` function forwards the traversal of a
|
||||
transformed ray (`ray` argument) into a scene (`scene` argument) from
|
||||
a user geometry callback. The function can only get invoked from a
|
||||
user geometry callback for a ray traversal initiated with the
|
||||
`rtcOccluded1` function. The callback arguments structure of the
|
||||
callback invokation has to get passed to the ray forwarding (`args`
|
||||
argument). The user geometry callback should instantly terminate after
|
||||
invoking the `rtcForwardOccluded1` function.
|
||||
The `rtcForwardOccluded1` and `rtcForwardOccluded1Ex` functions forward the
|
||||
traversal of a transformed ray (`ray` argument) into a scene (`scene` argument)
|
||||
from a user geometry callback. The function can only get invoked from a user
|
||||
geometry callback for a ray traversal initiated with the `rtcOccluded1`
|
||||
function. The callback arguments structure of the callback invokation has to
|
||||
get passed to the ray forwarding (`args` argument). The user geometry callback
|
||||
should instantly terminate after invoking the `rtcForwardOccluded1/Ex` function.
|
||||
|
||||
Only the ray origin and ray direction members of the ray
|
||||
argument are used for forwarding, all additional ray properties are
|
||||
@@ -42,10 +49,15 @@ This function can get used to implement user defined instancing using
|
||||
user geometries, e.g. by transforming the ray in a special way, and/or
|
||||
selecting between different scenes to instantiate.
|
||||
|
||||
For user defined instance arrays, the `rtcForwardIntersect1Ex` variant has an
|
||||
additional `instPrimID` argument which is pushed to the instance primitive ID
|
||||
stack. Instance primitive IDs identify which instance of an instance array was
|
||||
hit.
|
||||
|
||||
When using Embree on the CPU it is possible to recursively invoke
|
||||
`rtcOccluded1` directly from a user geometry callback. However, when
|
||||
SYCL is used, recursively tracing rays is not directly supported, and
|
||||
the `rtcForwardOccluded1` function must be used.
|
||||
the `rtcForwardOccluded1/Ex` function must be used.
|
||||
|
||||
The ray structure must be aligned to 16 bytes.
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
% rtcForwardOccluded4/8/16(3) | Embree Ray Tracing Kernels 4
|
||||
% rtcForwardOccluded4/8/16/Ex(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
rtcForwardOccluded4/8/16 - forwards a ray packet to new scene
|
||||
rtcForwardOccluded4/8/16/Ex - forwards a ray packet to new scene
|
||||
from user geometry callback
|
||||
|
||||
#### SYNOPSIS
|
||||
@@ -17,11 +17,11 @@
|
||||
unsigned int instID
|
||||
);
|
||||
|
||||
void rtcForwardOccluded4(
|
||||
void rtcForwardOccluded8(
|
||||
void int* valid,
|
||||
const struct RTCOccludedFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay4* ray,
|
||||
struct RTCRay8* ray,
|
||||
unsigned int instID
|
||||
);
|
||||
|
||||
@@ -33,16 +33,43 @@
|
||||
unsigned int instID
|
||||
);
|
||||
|
||||
void rtcForwardOccluded4Ex(
|
||||
void int* valid,
|
||||
const struct RTCOccludedFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay4* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
void rtcForwardOccluded8Ex(
|
||||
void int* valid,
|
||||
const struct RTCOccludedFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay8* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
void rtcForwardOccluded16Ex(
|
||||
void int* valid,
|
||||
const struct RTCOccludedFunctionNArguments* args,
|
||||
RTCScene scene,
|
||||
struct RTCRay16* ray,
|
||||
unsigned int instID,
|
||||
unsigned int instPrimID
|
||||
);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
The `rtcForwardOccluded4/8/16` functions forward the traversal of a
|
||||
transformed ray packet (`ray` argument) into a scene (`scene` argument) from
|
||||
a user geometry callback. The function can only get invoked from a
|
||||
user geometry callback for a ray traversal initiated with the
|
||||
`rtcOccluded4/8/16` function. The callback arguments structure of the
|
||||
callback invokation has to get passed to the ray forwarding (`args`
|
||||
argument). The user geometry callback should instantly terminate after
|
||||
invoking the `rtcForwardOccluded4/8/16` function.
|
||||
The `rtcForwardOccluded4/8/16` and `rtcForwardOccluded4/8/16Ex` functions
|
||||
forward the traversal of a transformed ray packet (`ray` argument) into a scene
|
||||
(`scene` argument) from a user geometry callback. The function can only get
|
||||
invoked from a user geometry callback for a ray traversal initiated with the
|
||||
`rtcOccluded4/8/16` function. The callback arguments structure of the callback
|
||||
invokation has to get passed to the ray forwarding (`args` argument). The user
|
||||
geometry callback should instantly terminate after invoking the
|
||||
`rtcForwardOccluded4/8/16/Ex` function.
|
||||
|
||||
Only the ray origin and ray direction members of the ray
|
||||
argument are used for forwarding, all additional ray properties are
|
||||
@@ -59,6 +86,11 @@ This function can get used to implement user defined instancing using
|
||||
user geometries, e.g. by transforming the ray in a special way, and/or
|
||||
selecting between different scenes to instantiate.
|
||||
|
||||
For user defined instance arrays, the `rtcForwardIntersect4/8/16Ex` variant has
|
||||
an additional `instPrimID` argument which is pushed to the instance primitive
|
||||
ID stack. Instance primitive IDs identify which instance of an instance array
|
||||
was hit.
|
||||
|
||||
When using Embree on the CPU it is possible to recursively invoke
|
||||
`rtcOccluded4/8/16` directly from a user geometry callback. However, when
|
||||
SYCL is used, recursively tracing rays is not directly supported, and
|
||||
|
||||
@@ -63,6 +63,14 @@ Possible properties to query are:
|
||||
back face culling is enabled. This is only the case if Embree is
|
||||
compiled with `EMBREE_BACKFACE_CULLING` enabled.
|
||||
|
||||
+ `RTC_DEVICE_PROPERTY_BACKFACE_CULLING_CURVES_ENABLED`: Queries whether
|
||||
back face culling for curves is enabled. This is only the case if Embree is
|
||||
compiled with `EMBREE_BACKFACE_CULLING_CURVES` enabled.
|
||||
|
||||
+ `RTC_DEVICE_PROPERTY_BACKFACE_CULLING_SPHERES_ENABLED`: Queries whether
|
||||
back face culling for spheres is enabled. This is only the case if Embree is
|
||||
compiled with `EMBREE_BACKFACE_CULLING_SPHERES` enabled.
|
||||
|
||||
+ `RTC_DEVICE_PROPERTY_COMPACT_POLYS_ENABLED`: Queries whether
|
||||
compact polys is enabled. This is only the case if Embree is
|
||||
compiled with `EMBREE_COMPACT_POLYS` enabled.
|
||||
|
||||
@@ -35,6 +35,11 @@ Possible formats for the returned matrix are:
|
||||
in column-major form as a 4×4 homogeneous matrix with last row equal
|
||||
to (0, 0, 0, 1).
|
||||
|
||||
This function is supposed to be used during rendering, but only
|
||||
supported on the CPU and not inside SYCL kernels on the GPU. Inside a
|
||||
SYCL kernel the `rtcGetGeometryTransformFromScene` function has to get
|
||||
used.
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
On failure an error code is set that can be queried using
|
||||
@@ -42,4 +47,4 @@ On failure an error code is set that can be queried using
|
||||
|
||||
#### SEE ALSO
|
||||
|
||||
[RTC_GEOMETRY_TYPE_INSTANCE], [rtcSetGeometryTransform]
|
||||
[RTC_GEOMETRY_TYPE_INSTANCE], [rtcSetGeometryTransform], [rtcGetGeometryTransformFromScene]
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
% rtcGetGeometryTransformEx(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
rtcGetGeometryTransformEx - returns the interpolated instance
|
||||
transformation for an instance of an instance array geometry for the
|
||||
specified time.
|
||||
|
||||
#### SYNOPSIS
|
||||
|
||||
#include <embree4/rtcore.h>
|
||||
|
||||
void rtcGetGeometryTransformEx(
|
||||
RTCGeometry geometry,
|
||||
unsigned int instPrimID,
|
||||
float time,
|
||||
enum RTCFormat format,
|
||||
void* xfm
|
||||
);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
The `rtcGetGeometryTransformEx` function returns the interpolated local
|
||||
to world transformation (`xfm` parameter) of the `instPrimID`-th instance of an
|
||||
instance array geometry (`geometry` parameter) for a particular time (`time`
|
||||
parameter in range $[0,1]$) in the specified format (`format` parameter).
|
||||
The function can also be used when `geometry` refers to a regular instance, but
|
||||
then the `instPrimID` has to be $0$.
|
||||
|
||||
Possible formats for the returned matrix are:
|
||||
|
||||
+ `RTC_FORMAT_FLOAT3X4_ROW_MAJOR`: The 3×4 float matrix is laid out
|
||||
in row-major form.
|
||||
|
||||
+ `RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR`: The 3×4 float matrix is laid out
|
||||
in column-major form.
|
||||
|
||||
+ `RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR`: The 3×4 float matrix is laid out
|
||||
in column-major form as a 4×4 homogeneous matrix with last row equal
|
||||
to (0, 0, 0, 1).
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
On failure an error code is set that can be queried using
|
||||
`rtcGetDeviceError`.
|
||||
|
||||
#### SEE ALSO
|
||||
|
||||
[RTC_GEOMETRY_TYPE_INSTANCE_ARRAY]
|
||||
@@ -0,0 +1,51 @@
|
||||
% rtcGetGeometryTransformFromScene(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
rtcGetGeometryTransformFromScene - returns the interpolated instance
|
||||
transformation for the specified time
|
||||
|
||||
#### SYNOPSIS
|
||||
|
||||
#include <embree4/rtcore.h>
|
||||
|
||||
void rtcGetGeometryTransformFromScene(
|
||||
RTCScene scene,
|
||||
unsigned int geomID,
|
||||
float time,
|
||||
enum RTCFormat format,
|
||||
void* xfm
|
||||
);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
The `rtcGetGeometryTransformFromScene` function returns the
|
||||
interpolated local to world transformation (`xfm` output parameter) of
|
||||
an instance geometry specified by its geometry ID (`geomID` parameter)
|
||||
of a scene (`scene` parameter) for a particular time (`time` parameter
|
||||
in range $[0,1]$) in the specified format (`format` parameter).
|
||||
|
||||
Possible formats for the returned matrix are:
|
||||
|
||||
+ `RTC_FORMAT_FLOAT3X4_ROW_MAJOR`: The 3×4 float matrix is laid out
|
||||
in row-major form.
|
||||
|
||||
+ `RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR`: The 3×4 float matrix is laid out
|
||||
in column-major form.
|
||||
|
||||
+ `RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR`: The 3×4 float matrix is laid out
|
||||
in column-major form as a 4×4 homogeneous matrix with last row equal
|
||||
to (0, 0, 0, 1).
|
||||
|
||||
In contrast to the `rtcGetGeometryTransform` function, the
|
||||
`rtcGetGeometryTransformFromScene` function can get used during
|
||||
rendering inside a SYCL kernel.
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
On failure an error code is set that can be queried using
|
||||
`rtcGetDeviceError`.
|
||||
|
||||
#### SEE ALSO
|
||||
|
||||
[RTC_GEOMETRY_TYPE_INSTANCE], [rtcSetGeometryTransform], [rtcGetGeometryTransform]
|
||||
@@ -18,7 +18,9 @@ previously set with `rtcSetGeometryUserData`. When
|
||||
`rtcSetGeometryUserData` was not called yet, `NULL` is returned.
|
||||
|
||||
This function is supposed to be used during rendering, but only
|
||||
supported on the CPU and in SYCL on the GPU.
|
||||
supported on the CPU and not inside SYCL kernels on the GPU. Inside a
|
||||
SYCL kernel the `rtcGetGeometryUserDataFromScene` function has to get
|
||||
used.
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
@@ -27,4 +29,4 @@ On failure an error code is set that can be queried using
|
||||
|
||||
#### SEE ALSO
|
||||
|
||||
[rtcSetGeometryUserData]
|
||||
[rtcSetGeometryUserData], [rtcGetGeometryUserDataFromScene]
|
||||
|
||||
@@ -18,7 +18,9 @@ pointer previously set with `rtcSetGeometryUserData` from the geometry
|
||||
with index `geomID` from the specified scene `scene`. When
|
||||
`rtcSetGeometryUserData` was not called yet, `NULL` is returned.
|
||||
|
||||
This function is supposed to be used during rendering.
|
||||
In contrast to the `rtcGetGeometryUserData` function, the
|
||||
`rtcGetGeometryUserDataFromScene` function an get used during
|
||||
rendering inside a SYCL kernel.
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
|
||||
@@ -33,7 +33,8 @@
|
||||
RTC_GEOMETRY_TYPE_DISC_POINT,
|
||||
RTC_GEOMETRY_TYPE_ORIENTED_DISC_POINT,
|
||||
RTC_GEOMETRY_TYPE_USER,
|
||||
RTC_GEOMETRY_TYPE_INSTANCE
|
||||
RTC_GEOMETRY_TYPE_INSTANCE,
|
||||
RTC_GEOMETRY_TYPE_INSTANCE_ARRAY,
|
||||
};
|
||||
|
||||
RTCGeometry rtcNewGeometry(
|
||||
@@ -64,8 +65,9 @@ bases (`RTC_GEOMETRY_TYPE_FLAT_LINEAR_CURVE`, `RTC_GEOMETRY_TYPE_FLAT_BEZIER_CUR
|
||||
grid meshes (`RTC_GEOMETRY_TYPE_GRID`), point geometries
|
||||
(`RTC_GEOMETRY_TYPE_SPHERE_POINT`, `RTC_GEOMETRY_TYPE_DISC_POINT`,
|
||||
`RTC_TYPE_ORIENTED_DISC_POINT`),
|
||||
user-defined geometries (`RTC_GEOMETRY_TYPE_USER`), and instances
|
||||
(`RTC_GEOMETRY_TYPE_INSTANCE`).
|
||||
user-defined geometries (`RTC_GEOMETRY_TYPE_USER`), instances
|
||||
(`RTC_GEOMETRY_TYPE_INSTANCE`), and instance arrays
|
||||
(`RTC_GEOMETRY_TYPE_INSTANCE_ARRAY`).
|
||||
|
||||
The types `RTC_GEOMETRY_TYPE_ROUND_BEZIER_CURVE`,
|
||||
`RTC_GEOMETRY_TYPE_ROUND_BSPLINE_CURVE`, and
|
||||
@@ -123,4 +125,4 @@ queried using `rtcGetDeviceError`.
|
||||
[RTC_GEOMETRY_TYPE_TRIANGLE], [RTC_GEOMETRY_TYPE_QUAD],
|
||||
[RTC_GEOMETRY_TYPE_SUBDIVISION], [RTC_GEOMETRY_TYPE_CURVE],
|
||||
[RTC_GEOMETRY_TYPE_GRID], [RTC_GEOMETRY_TYPE_POINT],
|
||||
[RTC_GEOMETRY_TYPE_USER], [RTC_GEOMETRY_TYPE_INSTANCE]
|
||||
[RTC_GEOMETRY_TYPE_USER], [RTC_GEOMETRY_TYPE_INSTANCE], [RTC_GEOMETRY_TYPE_INSTANCE_ARRAY]
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
% rtcSetGeometryInstancedScenes(3) | Embree Ray Tracing Kernels 4
|
||||
|
||||
#### NAME
|
||||
|
||||
rtcSetGeometryInstancedScenes - sets an array of scenes that can be
|
||||
instanced by an instance array geometry
|
||||
|
||||
#### SYNOPSIS
|
||||
|
||||
#include <embree4/rtcore.h>
|
||||
|
||||
void rtcSetGeometryInstancedScenes(
|
||||
RTCGeometry geometry,
|
||||
RTCScene* scene,
|
||||
size_t numScenes
|
||||
);
|
||||
|
||||
#### DESCRIPTION
|
||||
|
||||
The `rtcSetGeometryInstancedScenes` function sets an array of type `RTCScene`
|
||||
with `numScenes` elements that the specified instance geometry (`geometry`
|
||||
argument) can instance. This call also requires setting an index buffer using
|
||||
either `rtcSetSharedGeometryBuffer` or `rtcSetNewGeometryBuffer` (similar to
|
||||
index buffers for triangle meshes), that specifies which instance of the
|
||||
instance array instances which scene in the scene array. If only one scene
|
||||
should be instanced the call `rtcSetGeometryInstancedScene` should be
|
||||
preferred.
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
On failure an error code is set that can be queried using
|
||||
`rtcGetDeviceError`.
|
||||
|
||||
#### SEE ALSO
|
||||
|
||||
[RTC_GEOMETRY_TYPE_INSTANCE_ARRAY], [rtcSetNewGeometryBuffer],
|
||||
[rtcSetSharedGeometryBuffer], [rtcSetGeometryInstancedScene]
|
||||
@@ -70,11 +70,11 @@ ray and the potential hit are in object space.
|
||||
The filter callback function has the task to check for each valid ray
|
||||
whether it wants to accept or reject the corresponding hit. To reject
|
||||
a hit, the filter callback function just has to write `0` to the
|
||||
integer valid mask of the corresponding ray. To accept the hit, it just
|
||||
has to leave the valid mask set to `-1`. The filter function is further
|
||||
allowed to change the hit and decrease the `tfar` value of the ray but
|
||||
it should not modify other ray data nor any inactive components of the
|
||||
ray or hit.
|
||||
integer valid mask of the corresponding ray. To accept the hit, it
|
||||
just has to leave the valid mask set to `-1`. When accepting a hit,
|
||||
the filter function is further allowed to change the hit and decrease
|
||||
the `tfar` value of the ray but it should not modify other ray data
|
||||
nor any inactive components of the ray or hit.
|
||||
|
||||
``` {include=src/api/inc/reorder_callback_intersect.md}
|
||||
```
|
||||
|
||||
@@ -25,7 +25,7 @@ further invocations overwrite the previously set callback function.
|
||||
Passing `NULL` as function pointer disables the registered callback
|
||||
function.
|
||||
|
||||
The registered intersection filter function is invoked for every hit
|
||||
The registered occlusion filter function is invoked for every hit
|
||||
encountered during the `rtcOccluded`-type ray queries and can accept
|
||||
or reject that hit. The feature can be used to define a silhouette for
|
||||
a primitive and reject hits that are outside the silhouette. E.g. a
|
||||
@@ -36,6 +36,14 @@ Please see the description of the
|
||||
`rtcSetGeometryIntersectFilterFunction` for a description of the
|
||||
filter callback function.
|
||||
|
||||
The `rtcOccluded`-type functions terminate traversal when a hit got
|
||||
committed. As filter functions can only set the `tfar` distance of the
|
||||
ray for a committed hit, the occlusion filter cannot influence the
|
||||
`tfar` value of subsequent traversal, as that directly ends. For that
|
||||
reason `rtcOccluded` and occlusion filters cannot get used to gather
|
||||
the next n-hits, and `rtcIntersect` and intersection filters should
|
||||
get used instead.
|
||||
|
||||
#### EXIT STATUS
|
||||
|
||||
On failure an error code is set that can be queried using
|
||||
|
||||
@@ -1,6 +1,43 @@
|
||||
Version History
|
||||
---------------
|
||||
|
||||
### Embree 4.3.2
|
||||
- Embree now uses level zero raytracing extension to build BVH which enables forward-compatibility. On Linux, the package intel-level-zero-gpu-raytracing has to be installed in addition to the other packages listed here [https://dgpu-docs.intel.com/](https://dgpu-docs.intel.com/).
|
||||
- MacOS universal binary compilation now works.
|
||||
- Some bugfixes for AVX512 on MacOS x86 machines.
|
||||
- Known issue: It is recommended to run Embree on Intel® Data Center GPU Max Series (e.g. Intel® Data Center GPU Max 1550) with the following environment settings: NEOReadDebugKeys=1 UseKmdMigration=0
|
||||
- Known issue: ISPC version of tutorials will not successfully build with MacOS universal binary compilation.
|
||||
|
||||
### Embree 4.3.1
|
||||
- Add missing EMBREE_GEOMETRY types to embree-config.cmake
|
||||
- User defined thread count now takes precedence for internal task scheduler
|
||||
- Fixed static linking issue with ze_wrapper library
|
||||
- Better error reporting for SYCL platform and driver problems in embree_info and tutorial apps.
|
||||
- Patch to glfw source is not applied by default anymore.
|
||||
- Known issue: Running Embree on Intel® Data Center GPU Max Series with 2 tiles (e.g. Intel® Data Center GPU Max 1550) requires setting the environment variable ZE_FLAT_DEVICE_HIERARCHY=COMPOSITE.
|
||||
- Known issue: Embree build using Apple Clang 15 and ARM support (via the SEE2NEON library) may cause "EXEC_BAD_INSTRUCTION" runtime exceptions. Please use Apple Clang <= 14 on macOS.
|
||||
|
||||
### Embree 4.3.0
|
||||
- Added instance array primitive for reducing memony requirements in scenes
|
||||
with large amounts of similar instances.
|
||||
- Properly checks driver if L0 RTAS extension can get loaded.
|
||||
- Added varying version of rtcGetGeometryTransform for ISPC.
|
||||
- Fixed signature of RTCMemoryMonitorFunction for ISPC.
|
||||
- Add support for ARM64 Windows platform in CMake.
|
||||
|
||||
### Embree 4.2.0
|
||||
- SYCL version of Embree with GPU support is no longer in beta phase.
|
||||
- Improved BVH build performance on many core machines for applications that oversubscribe threads.
|
||||
- Added rtcGetGeometryTransformFromScene API function that can get used inside SYCL kernels.
|
||||
- No longer linking to ze_loader in SYCL mode to avoid Intel(R) oneAPI Level Zero dependency
|
||||
for CPU rendering.
|
||||
- Releasing test package to test Embree.
|
||||
|
||||
### Embree 4.1.0
|
||||
- Added support for Intel® Data Center GPU Max Series.
|
||||
- Added ARM64 Linux support.
|
||||
- Added EMBREE_BACKFACE_CULLING_SPHERES cmake option. The new cmake option defaults to OFF.
|
||||
|
||||
### Embree 4.0.1
|
||||
- Improved performance for Tiger Lake, Comet Lake, Cannon Lake, Kaby Lake,
|
||||
and Skylake client CPUs by using 256 bit SIMD instructions by default.
|
||||
|
||||
+48
-57
@@ -17,31 +17,21 @@ C++11. Embree is tested with the following compilers:
|
||||
|
||||
Linux
|
||||
|
||||
- Intel® oneAPI DPC++/C++ Compiler 2023.0.0
|
||||
- oneAPI DPC++/C++ Compiler 2022-12-14
|
||||
- Intel® oneAPI DPC++/C++ Compiler 2024.0.2
|
||||
- oneAPI DPC++/C++ Compiler 2023-10-26
|
||||
- Clang 5.0.0
|
||||
- Clang 4.0.0
|
||||
- GCC 10.0.1 (Fedora 32) AVX512 support
|
||||
- GCC 8.3.1 (Fedora 28) AVX512 support
|
||||
- GCC 7.3.1 (Fedora 27) AVX2 support
|
||||
- GCC 7.3.1 (Fedora 26) AVX2 support
|
||||
- GCC 6.4.1 (Fedora 25) AVX2 support
|
||||
- Intel® Implicit SPMD Program Compiler 1.18.1
|
||||
- Intel® Implicit SPMD Program Compiler 1.17.0
|
||||
- Intel® Implicit SPMD Program Compiler 1.16.1
|
||||
- Intel® Implicit SPMD Program Compiler 1.15.0
|
||||
- Intel® Implicit SPMD Program Compiler 1.14.1
|
||||
- Intel® Implicit SPMD Program Compiler 1.13.0
|
||||
- Intel® Implicit SPMD Program Compiler 1.12.0
|
||||
|
||||
macOS x86
|
||||
- GCC 8.3.1 (Fedora 29) AVX512 support
|
||||
- Intel® Implicit SPMD Program Compiler 1.22.0
|
||||
|
||||
- Intel® C++ Classic Compiler 2023.0.0
|
||||
- Apple Clang 12.0.5 (macOS 11.7.1)
|
||||
macOS x86_64
|
||||
|
||||
macOS M1
|
||||
- Apple Clang 15
|
||||
|
||||
- Apple Clang 12.0.5 (macOS 11.7.1)
|
||||
macOS Arm64
|
||||
|
||||
- Apple Clang 14
|
||||
|
||||
Embree supports using the Intel® Threading Building Blocks (TBB) as the
|
||||
tasking system. For performance and flexibility reasons we recommend
|
||||
@@ -64,7 +54,7 @@ version of [GLFW](https://www.glfw.org/) version 3.
|
||||
Under macOS, all these dependencies can be installed
|
||||
using [MacPorts](http://www.macports.org/):
|
||||
|
||||
sudo port install cmake tbb-devel glfw-devel
|
||||
sudo port install cmake tbb glfw-devel
|
||||
|
||||
Depending on your Linux distribution you can install these dependencies
|
||||
using `yum` or `apt-get`. Some of these packages might already be
|
||||
@@ -141,18 +131,21 @@ The "oneAPI DPC++ Compiler" is more up-to-date than the "Intel(R) oneAPI
|
||||
DPC++/C++ Compiler" but less stable. The current tested version of the "oneAPI
|
||||
DPC++ compiler is
|
||||
|
||||
- [oneAPI DPC++ Compiler 2022-12-14](https://github.com/intel/llvm/releases/download/sycl-nightly%2F20221214/dpcpp-compiler.tar.gz)
|
||||
- [oneAPI DPC++ Compiler 2023-10-26](https://github.com/intel/llvm/releases/tag/nightly-2023-10-26)
|
||||
|
||||
The compiler can be downloaded and simply extracted. The oneAPI DPC++ compiler
|
||||
2022-12-14 can be set up executing the following command in a Linux (bash)
|
||||
shell:
|
||||
can be set up executing the following commands in a Linux (bash) shell:
|
||||
|
||||
wget https://github.com/intel/llvm/releases/download/sycl-nightly%2F20221214/dpcpp-compiler.tar.gz
|
||||
tar xzf dpcpp-compiler.tar.gz
|
||||
source ./dpcpp_compiler/startup.sh
|
||||
export SYCL_BUNDLE_ROOT=path_to_dpcpp_compiler
|
||||
export PATH=$SYCL_BUNDLE_ROOT/bin:$PATH
|
||||
export CPATH=$SYCL_BUNDLE_ROOT/include:$CPATH
|
||||
export LIBRARY_PATH=$SYCL_BUNDLE_ROOT/lib:$LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH=$SYCL_BUNDLE_ROOT/lib:$LD_LIBRARY_PATH
|
||||
export LD_LIBRARY_PATH=$SYCL_BUNDLE_ROOT/linux/lib/x64:$LD_LIBRARY_PATH
|
||||
|
||||
The `startup.sh` script will put `clang++` and `clang` from the
|
||||
oneAPI DPC++ Compiler into your path.
|
||||
where the `path_to_dpcpp_compiler` should point to the unpacked oneAPI DPC++
|
||||
compiler. This will put `clang++` and `clang` from the oneAPI DPC++ Compiler
|
||||
into your path.
|
||||
|
||||
Please also install all Linux packages described in the previous
|
||||
section.
|
||||
@@ -171,12 +164,12 @@ through `EMBREE_SYCL_SUPPORT=ON`.
|
||||
|
||||
Alternatively, you can download and run the installer of the
|
||||
|
||||
- [Intel(R) oneAPI DPC++/C++ Compiler 2023.0.0](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp).
|
||||
- [Intel(R) oneAPI DPC++/C++ Compiler](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp).
|
||||
|
||||
After installation, you can set up the compiler by sourcing the
|
||||
`vars.sh` script in the `env` directory of the compiler install directory, for example,
|
||||
|
||||
source /opt/intel/oneAPI/compiler/2023.0.0/env/vars.sh
|
||||
source /opt/intel/oneAPI/compiler/latest/env/vars.sh
|
||||
|
||||
This script will put the `icpx` and `icx` compiler executables from the
|
||||
Intel(R) oneAPI DPC++/C++ Compiler in your path.
|
||||
@@ -210,36 +203,23 @@ your Intel Xe HPG/HPC GPUs from here
|
||||
the driver installation instructions for your graphics card and
|
||||
operating system.
|
||||
|
||||
We tested Embree with the latest GPGPU driver Devel Release from
|
||||
20220809. The Intel(R) Graphics Compute Runtime for oneAPI Level Zero
|
||||
and OpenCL(TM) Driver from that release is too old for Embree to work
|
||||
properly. Thus if no newer version of the GPGPU driver is available,
|
||||
you need to additionally install the latest compute runtime from here
|
||||
[22.43.24595](https://github.com/intel/compute-runtime/releases/tag/22.43.24595.30).
|
||||
After installing the drivers you have to install an additional package
|
||||
manually using
|
||||
|
||||
Unfortunately, these compute runtime packages are only available for
|
||||
Ubuntu 22.04. You can also install a newer version of the compute
|
||||
runtime if available.
|
||||
sudo apt install intel-level-zero-gpu-raytracing
|
||||
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
|
||||
Embree is tested using the following compilers under Windows:
|
||||
|
||||
- Intel® oneAPI DPC++/C++ Compiler 2023.0.0
|
||||
- oneAPI DPC++/C++ Compiler 2022-12-14
|
||||
- Intel® oneAPI DPC++/C++ Compiler 2024.0.2
|
||||
- oneAPI DPC++/C++ Compiler 2023-10-26
|
||||
- Visual Studio 2022
|
||||
- Visual Studio 2019
|
||||
- Visual Studio 2017
|
||||
- Visual Studio 2015 (Update\ 1)
|
||||
- Intel® Implicit SPMD Program Compiler 1.18.1
|
||||
- Intel® Implicit SPMD Program Compiler 1.17.0
|
||||
- Intel® Implicit SPMD Program Compiler 1.16.1
|
||||
- Intel® Implicit SPMD Program Compiler 1.15.0
|
||||
- Intel® Implicit SPMD Program Compiler 1.14.1
|
||||
- Intel® Implicit SPMD Program Compiler 1.13.0
|
||||
- Intel® Implicit SPMD Program Compiler 1.12.0
|
||||
|
||||
- Intel® Implicit SPMD Program Compiler 1.22.0
|
||||
|
||||
To compile Embree for AVX-512 you have to use the Intel® Compiler.
|
||||
|
||||
@@ -356,7 +336,7 @@ The "oneAPI DPC++ Compiler" is more up-to-date than the "Intel(R) oneAPI
|
||||
DPC++/C++ Compiler" but less stable. The current tested version of the oneAPI
|
||||
DPC++ compiler is
|
||||
|
||||
- [oneAPI DPC++ Compiler 2022-12-14](https://github.com/intel/llvm/releases/download/sycl-nightly%2F20221214/dpcpp-compiler-win.tar.gz)
|
||||
- [oneAPI DPC++ Compiler 2023-10-26](https://github.com/intel/llvm/releases/tag/nightly-2023-10-26)
|
||||
|
||||
Download and unpack the archive and open the "x64 Native Tools Command Prompt"
|
||||
of Visual Studio and execute the following lines to properly configure the
|
||||
@@ -395,13 +375,13 @@ option.
|
||||
|
||||
Alternatively, you can download and run the installer of the
|
||||
|
||||
- [Intel(R) oneAPI DPC++/C++ Compiler 2023.0.0](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp).
|
||||
- [Intel(R) oneAPI DPC++/C++ Compiler](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp).
|
||||
|
||||
After installation, you can either open a regular `Command Prompt` and execute
|
||||
the `vars.bat` script in the `env` directory of the compiler install directory,
|
||||
for example
|
||||
|
||||
C:\Program Files (x86)\Intel\oneAPI\compiler\2023.0.0\env\vars.bat
|
||||
C:\Program Files (x86)\Intel\oneAPI\compiler\latest\env\vars.bat
|
||||
|
||||
or simply open the installed "Intel oneAPI command prompt for Intel 64 for Visual Studio".
|
||||
|
||||
@@ -442,9 +422,9 @@ your application with such an Embree package.
|
||||
### Windows Graphics Driver Installation
|
||||
|
||||
In order to run the SYCL tutorials on HPG hardware, you first need to
|
||||
install the proper graphics drivers for your graphics card from
|
||||
[https://www.intel.com](https://www.intel.com). Embree will work with
|
||||
graphics driver version 101.4027 or later.
|
||||
install the graphics drivers for your graphics card from
|
||||
[https://www.intel.com](https://www.intel.com). Please make sure to
|
||||
have installed version 31.0.101.4644 or newer.
|
||||
|
||||
|
||||
CMake Configuration
|
||||
@@ -513,6 +493,14 @@ parameters that can be configured in CMake:
|
||||
surfaces facing a ray can be hit. This option is turned OFF by
|
||||
default.
|
||||
|
||||
+ `EMBREE_BACKFACE_CULLING_CURVES`: Enables backface culling for curves,
|
||||
i.e. only surfaces facing a ray can be hit. This option is turned OFF
|
||||
by default.
|
||||
|
||||
+ `EMBREE_BACKFACE_CULLING_SPHERES`: Enables backface culling for spheres,
|
||||
i.e. only surfaces facing a ray can be hit. This option is turned OFF
|
||||
by default.
|
||||
|
||||
+ `EMBREE_COMPACT_POLYS`: Enables compact tris/quads, i.e. only
|
||||
geomIDs and primIDs are stored inside the leaf nodes.
|
||||
|
||||
@@ -590,6 +578,9 @@ parameters that can be configured in CMake:
|
||||
+ `EMBREE_GEOMETRY_INSTANCE`: Enables support for instances (ON by
|
||||
default).
|
||||
|
||||
+ `EMBREE_GEOMETRY_INSTANCE_ARRAY`: Enables support for instance arrays (ON by
|
||||
default).
|
||||
|
||||
+ `EMBREE_GEOMETRY_USER`: Enables support for user-defined geometries
|
||||
(ON by default).
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
Downloading Embree
|
||||
------------------
|
||||
|
||||
For Windows we provide Embree as ZIP files linked against the Visual Studio 2015/2017 (VC14) runtime:
|
||||
For Windows we provide Embree as a ZIP file:
|
||||
|
||||
[embree-<EMBREE_VERSION>.x64.vc14.windows.zip](https://github.com/embree/embree/releases/download/v<EMBREE_VERSION>/embree-<EMBREE_VERSION>.x64.vc14.windows.zip)
|
||||
[embree-<EMBREE_VERSION>.x64.windows.zip](https://github.com/embree/embree/releases/download/v<EMBREE_VERSION>/embree-<EMBREE_VERSION>.x64.windows.zip)
|
||||
|
||||
For Linux we provide Embree as a `tar.gz` file:
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
[imgUserGeometry]: images/user_geometry.jpg
|
||||
[imgViewer]: images/viewer.jpg
|
||||
[imgInstancedGeometry]: images/instanced_geometry.jpg
|
||||
[imgForest]: images/forest.jpg
|
||||
[imgMultiLevelInstancing]: images/multi_level_instancing.jpg
|
||||
[imgIntersectionFilter]: images/intersection_filter.jpg
|
||||
[imgPathtracer]: images/pathtracer.jpg
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
[imgUserGeometry]: https://embree.github.io/images/user_geometry.jpg
|
||||
[imgViewer]: https://embree.github.io/images/viewer.jpg
|
||||
[imgInstancedGeometry]: https://embree.github.io/images/instanced_geometry.jpg
|
||||
[imgForest]: https://embree.github.io/images/forest.jpg
|
||||
[imgMultiLevelInstancing]: https://embree.github.io/images/multi_level_instancing.jpg
|
||||
[imgIntersectionFilter]: https://embree.github.io/images/intersection_filter.jpg
|
||||
[imgPathtracer]: https://embree.github.io/images/pathtracer.jpg
|
||||
|
||||
+20
-3
@@ -5,8 +5,8 @@ Installation of Embree
|
||||
Windows Installation
|
||||
--------------------
|
||||
|
||||
Embree linked against Visual Studio 2015 are provided as a ZIP file
|
||||
[embree-<EMBREE_VERSION>.x64.vc14.windows.zip](https://github.com/embree/embree/releases/download/v<EMBREE_VERSION>/embree-<EMBREE_VERSION>.x64.vc14.windows.zip). After
|
||||
A pre-built version of Embree for Windows is provided as a ZIP archive
|
||||
[embree-<EMBREE_VERSION>.x64.windows.zip](https://github.com/embree/embree/releases/download/v<EMBREE_VERSION>/embree-<EMBREE_VERSION>.x64.windows.zip). After
|
||||
unpacking this ZIP file, you should set the path to the `lib` folder
|
||||
manually to your `PATH` environment variable for applications to find
|
||||
Embree.
|
||||
@@ -15,7 +15,7 @@ Embree.
|
||||
Linux Installation
|
||||
------------------
|
||||
|
||||
The Linux version of Embree is also delivered as a `tar.gz` file:
|
||||
A pre-built version of Embree for Linux is provided as a `tar.gz` archive:
|
||||
[embree-<EMBREE_VERSION>.x86_64.linux.tar.gz](https://github.com/embree/embree/releases/download/v<EMBREE_VERSION>/embree-<EMBREE_VERSION>.x86_64.linux.tar.gz). Unpack
|
||||
this file using `tar` and source the provided `embree-vars.sh` (if you
|
||||
are using the bash shell) or `embree-vars.csh` (if you are using the C
|
||||
@@ -155,3 +155,20 @@ help of the device option in ocloc tool:
|
||||
|
||||
ocloc compile --help
|
||||
|
||||
|
||||
Building Embree Tests
|
||||
---------------------
|
||||
|
||||
Embree is released with a bundle of tests in an optional testing package.
|
||||
To run these tests extract the testing package in the same folder as your embree installation.
|
||||
e.g.:
|
||||
|
||||
tar -xzf embree-<EMBREE_VERSION>-testing.zip -C /path/to/installed/embree
|
||||
|
||||
The tests are extracted into a new folder inside you embree installation and can be run with:
|
||||
|
||||
cd /path/to/installed/embree/testing
|
||||
cmake -B build
|
||||
cmake --build build target=tests
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
[Stream Viewer]: #stream-viewer
|
||||
[User Geometry]: #user-geometry
|
||||
[Instanced Geometry]: #instanced-geometry
|
||||
[Instance Array Geometry]: #instance-array-geometry
|
||||
[Multi Level Instancing]: #multi-level-instancing
|
||||
[Intersection Filter]: #intersection-filter
|
||||
[Hair]: #hair
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
[Stream Viewer]: tutorials.html#stream-viewer
|
||||
[User Geometry]: tutorials.html#user-geometry
|
||||
[Instanced Geometry]: tutorials.html#instanced-geometry
|
||||
[Instance Array Geometry]: tutorials.html#instance-array-geometry
|
||||
[Multi Level Instancing]: tutorials.html#multi-level-instancing
|
||||
[Intersection Filter]: tutorials.html#intersection-filter
|
||||
[Hair]: tutorials.html#hair
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@ Intel® Embree Overview
|
||||
Intel® Embree is a high-performance ray tracing library developed at
|
||||
Intel, which is released as open source under the [Apache 2.0
|
||||
license](http://www.apache.org/licenses/LICENSE-2.0). Intel® Embree
|
||||
supports x86 CPUs under Linux, macOS, and Windows; ARM CPUs on macOS;
|
||||
as well as Intel® GPUs under Linux and Windows.
|
||||
supports x86 CPUs under Linux, macOS, and Windows; ARM CPUs on Linux
|
||||
and macOS; as well as Intel® GPUs under Linux and Windows.
|
||||
|
||||
Intel® Embree targets graphics application developers to improve the
|
||||
performance of photo-realistic rendering applications. Embree is
|
||||
|
||||
+2
-12
@@ -3,24 +3,14 @@ Supported Platforms
|
||||
|
||||
Embree supports Windows (32-bit and 64-bit), Linux (64-bit), and macOS
|
||||
(64-bit). Under Windows, Linux and macOS x86 based CPUs are supported,
|
||||
while ARM CPUs are currently only supported under macOS (e.g. Apple
|
||||
M1). ARM support for Windows and Linux is experimental.
|
||||
while ARM CPUs are currently only supported under Linux and macOS (e.g.
|
||||
Apple M1). ARM support for Windows experimental.
|
||||
|
||||
Embree supports Intel GPUs based on the Xe HPG microarchitecture
|
||||
(Intel® Arc™ GPU) under Linux and Windows and Xe HPC microarchitecture
|
||||
(Intel® Data Center GPU Flex Series and Intel® Data Center GPU Max
|
||||
Series) under Linux.
|
||||
|
||||
Currently the following products are supported and further products
|
||||
will get enabled soon:
|
||||
|
||||
- Intel® Arc™ A770 Graphics
|
||||
- Intel® Arc™ A750 Graphics
|
||||
- Intel® Arc™ A770M Graphics
|
||||
- Intel® Arc™ A730M Graphics
|
||||
- Intel® Arc™ A550M Graphics
|
||||
- Intel® Data Center GPU Flex 170
|
||||
|
||||
The code compiles with the Intel® Compiler, Intel® oneAPI DPC++
|
||||
Compiler, GCC, Clang, and the Microsoft Compiler. To use Embree on the
|
||||
GPU the Intel® oneAPI DPC++ Compiler must be used. Please see section
|
||||
|
||||
@@ -199,6 +199,25 @@ ways can be distinguished.
|
||||
|
||||
[Source Code](https://github.com/embree/embree/blob/master/tutorials/instanced_geometry/instanced_geometry_device.cpp)
|
||||
|
||||
Instance Array Geometry
|
||||
----------------------
|
||||
|
||||
[![][imgForest]](https://github.com/embree/embree/blob/master/tutorials/forest/forest_device.cpp)
|
||||
|
||||
This tutorial demonstrates the usage of instance arrays in Embree. Instance arrays
|
||||
are large collections of similar objects. Examples are sand dunes that consist
|
||||
of millions of instances of a few grain models or, like here, a forest consisting of
|
||||
many instances of a few tree models.
|
||||
|
||||
In this application can switch between representing the scene with regular
|
||||
instances or (one!) instance array. It also prints several stats, that
|
||||
demonstrate the memory savings and faster BVH build times when using instance
|
||||
arrays for such scenes. Instance arrays come with a small overhead on CPU and
|
||||
should be preferred if memory consumption is more important than raytracing
|
||||
performance.
|
||||
|
||||
[Source Code](https://github.com/embree/embree/blob/master/tutorials/forest/forest_device.cpp)
|
||||
|
||||
Multi Level Instancing
|
||||
----------------------
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ enum RTCBufferType
|
||||
RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT = 21,
|
||||
RTC_BUFFER_TYPE_HOLE = 22,
|
||||
|
||||
RTC_BUFFER_TYPE_TRANSFORM = 23,
|
||||
|
||||
RTC_BUFFER_TYPE_FLAGS = 32
|
||||
};
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@ enum RTCBufferType
|
||||
RTC_BUFFER_TYPE_VERTEX_CREASE_WEIGHT = 21,
|
||||
RTC_BUFFER_TYPE_HOLE = 22,
|
||||
|
||||
RTC_BUFFER_TYPE_TRANSFORM = 23,
|
||||
|
||||
RTC_BUFFER_TYPE_FLAGS = 32
|
||||
};
|
||||
|
||||
|
||||
@@ -147,7 +147,9 @@ enum RTCFormat
|
||||
RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR = 0x9244,
|
||||
|
||||
/* special 12-byte format for grids */
|
||||
RTC_FORMAT_GRID = 0xA001
|
||||
RTC_FORMAT_GRID = 0xA001,
|
||||
|
||||
RTC_FORMAT_QUATERNION_DECOMPOSITION = 0xB001,
|
||||
};
|
||||
|
||||
/* Build quality levels */
|
||||
@@ -290,6 +292,8 @@ enum RTCFeatureFlags
|
||||
|
||||
RTC_FEATURE_FLAG_32_BIT_RAY_MASK = 1 << 28,
|
||||
|
||||
RTC_FEATURE_FLAG_INSTANCE_ARRAY = 1 << 29,
|
||||
|
||||
RTC_FEATURE_FLAG_ALL = 0xffffffff,
|
||||
};
|
||||
|
||||
@@ -334,19 +338,26 @@ struct RTCRayQueryContext
|
||||
unsigned int instStackSize; // Number of instances currently on the stack.
|
||||
#endif
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // The current stack of instance ids.
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // The current stack of instance primitive ids.
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Initializes an ray query context. */
|
||||
RTC_FORCEINLINE void rtcInitRayQueryContext(struct RTCRayQueryContext* context)
|
||||
{
|
||||
unsigned l = 0;
|
||||
|
||||
|
||||
#if RTC_MAX_INSTANCE_LEVEL_COUNT > 1
|
||||
context->instStackSize = 0;
|
||||
#endif
|
||||
|
||||
for (; l < RTC_MAX_INSTANCE_LEVEL_COUNT; ++l)
|
||||
for (; l < RTC_MAX_INSTANCE_LEVEL_COUNT; ++l) {
|
||||
context->instID[l] = RTC_INVALID_GEOMETRY_ID;
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
context->instPrimID[l] = RTC_INVALID_GEOMETRY_ID;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* Point query structure for closest point query */
|
||||
@@ -404,6 +415,11 @@ struct RTC_ALIGN(16) RTCPointQueryContext
|
||||
// instance ids.
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT];
|
||||
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
// instance prim ids.
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT];
|
||||
#endif
|
||||
|
||||
// number of instances currently on the stack.
|
||||
unsigned int instStackSize;
|
||||
};
|
||||
@@ -411,8 +427,16 @@ struct RTC_ALIGN(16) RTCPointQueryContext
|
||||
/* Initializes an ray query context. */
|
||||
RTC_FORCEINLINE void rtcInitPointQueryContext(struct RTCPointQueryContext* context)
|
||||
{
|
||||
unsigned l = 0;
|
||||
|
||||
context->instStackSize = 0;
|
||||
context->instID[0] = RTC_INVALID_GEOMETRY_ID;
|
||||
|
||||
for (; l < RTC_MAX_INSTANCE_LEVEL_COUNT; ++l) {
|
||||
context->instID[l] = RTC_INVALID_GEOMETRY_ID;
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
context->instPrimID[l] = RTC_INVALID_GEOMETRY_ID;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
struct RTC_ALIGN(16) RTCPointQueryFunctionArguments
|
||||
|
||||
@@ -265,6 +265,8 @@ enum RTCFeatureFlags
|
||||
|
||||
RTC_FEATURE_FLAG_32_BIT_RAY_MASK = 1 << 28,
|
||||
|
||||
RTC_FEATURE_FLAG_INSTANCE_ARRAY = 1 << 29,
|
||||
|
||||
RTC_FEATURE_FLAG_ALL = 0xffffffff,
|
||||
};
|
||||
|
||||
@@ -287,6 +289,10 @@ struct RTCRayQueryContext
|
||||
unsigned int instStackSize; // Number of instances currently on the stack.
|
||||
#endif
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // The current stack of instance ids.
|
||||
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // The current stack of instance primitive ids.
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Initializes an ray query context. */
|
||||
@@ -298,8 +304,12 @@ RTC_FORCEINLINE void rtcInitRayQueryContext(uniform RTCRayQueryContext* uniform
|
||||
context->instStackSize = 0;
|
||||
#endif
|
||||
|
||||
for (; l < RTC_MAX_INSTANCE_LEVEL_COUNT; ++l)
|
||||
for (; l < RTC_MAX_INSTANCE_LEVEL_COUNT; ++l) {
|
||||
context->instID[l] = RTC_INVALID_GEOMETRY_ID;
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
context->instPrimID[l] = RTC_INVALID_GEOMETRY_ID;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* Arguments for RTCFilterFunctionN */
|
||||
@@ -362,17 +372,22 @@ struct RTCPointQueryContext
|
||||
{
|
||||
// accumulated 4x4 column major matrices from world space to instance space.
|
||||
// undefined if size == 0.
|
||||
float world2inst[RTC_MAX_INSTANCE_LEVEL_COUNT][16];
|
||||
float world2inst[RTC_MAX_INSTANCE_LEVEL_COUNT][16];
|
||||
|
||||
// accumulated 4x4 column major matrices from instance space to world space.
|
||||
// undefined if size == 0.
|
||||
float inst2world[RTC_MAX_INSTANCE_LEVEL_COUNT][16];
|
||||
float inst2world[RTC_MAX_INSTANCE_LEVEL_COUNT][16];
|
||||
|
||||
// instance ids.
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT];
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT];
|
||||
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
// instance prim ids.
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT];
|
||||
#endif
|
||||
|
||||
// number of instances currently on the stack.
|
||||
unsigned int instStackSize;
|
||||
unsigned int instStackSize;
|
||||
};
|
||||
|
||||
/* Initializes an ray query context. */
|
||||
@@ -380,6 +395,9 @@ RTC_FORCEINLINE void rtcInitPointQueryContext(uniform RTCPointQueryContext* unif
|
||||
{
|
||||
context->instStackSize = 0;
|
||||
context->instID[0] = RTC_INVALID_GEOMETRY_ID;
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
context->instPrimID[0] = RTC_INVALID_GEOMETRY_ID;
|
||||
#endif
|
||||
}
|
||||
|
||||
struct RTCPointQueryFunctionArguments
|
||||
|
||||
@@ -49,6 +49,7 @@ enum RTCDeviceProperty
|
||||
RTC_DEVICE_PROPERTY_NATIVE_RAY8_SUPPORTED = 33,
|
||||
RTC_DEVICE_PROPERTY_NATIVE_RAY16_SUPPORTED = 34,
|
||||
|
||||
RTC_DEVICE_PROPERTY_BACKFACE_CULLING_SPHERES_ENABLED = 62,
|
||||
RTC_DEVICE_PROPERTY_BACKFACE_CULLING_CURVES_ENABLED = 63,
|
||||
RTC_DEVICE_PROPERTY_RAY_MASK_SUPPORTED = 64,
|
||||
RTC_DEVICE_PROPERTY_BACKFACE_CULLING_ENABLED = 65,
|
||||
@@ -65,7 +66,10 @@ enum RTCDeviceProperty
|
||||
|
||||
RTC_DEVICE_PROPERTY_TASKING_SYSTEM = 128,
|
||||
RTC_DEVICE_PROPERTY_JOIN_COMMIT_SUPPORTED = 129,
|
||||
RTC_DEVICE_PROPERTY_PARALLEL_COMMIT_SUPPORTED = 130
|
||||
RTC_DEVICE_PROPERTY_PARALLEL_COMMIT_SUPPORTED = 130,
|
||||
|
||||
RTC_DEVICE_PROPERTY_CPU_DEVICE = 140,
|
||||
RTC_DEVICE_PROPERTY_SYCL_DEVICE = 141
|
||||
};
|
||||
|
||||
/* Gets a device property. */
|
||||
|
||||
@@ -76,7 +76,7 @@ typedef unmasked void (*uniform RTCErrorFunction)(void* uniform userPtr, uniform
|
||||
RTC_API void rtcSetDeviceErrorFunction(RTCDevice device, uniform RTCErrorFunction error, void* uniform userPtr);
|
||||
|
||||
/* Memory monitor callback function */
|
||||
typedef uniform bool (*uniform RTCMemoryMonitorFunction)(uniform intptr_t bytes, uniform bool post);
|
||||
typedef unmasked uniform bool (*uniform RTCMemoryMonitorFunction)(void* uniform ptr, uniform intptr_t bytes, uniform bool post);
|
||||
|
||||
/* Sets the memory monitor callback function. */
|
||||
RTC_API void rtcSetDeviceMemoryMonitorFunction(RTCDevice device, RTCMemoryMonitorFunction memoryMonitor, void* uniform userPtr);
|
||||
|
||||
@@ -48,7 +48,8 @@ enum RTCGeometryType
|
||||
RTC_GEOMETRY_TYPE_NORMAL_ORIENTED_CATMULL_ROM_CURVE = 60, // flat normal-oriented Catmull-Rom curves
|
||||
|
||||
RTC_GEOMETRY_TYPE_USER = 120, // user-defined geometry
|
||||
RTC_GEOMETRY_TYPE_INSTANCE = 121 // scene instance
|
||||
RTC_GEOMETRY_TYPE_INSTANCE = 121, // scene instance
|
||||
RTC_GEOMETRY_TYPE_INSTANCE_ARRAY = 122, // scene instance array
|
||||
};
|
||||
|
||||
/* Interpolation modes for subdivision surfaces */
|
||||
@@ -219,6 +220,9 @@ RTC_SYCL_API void rtcInvokeOccludedFilterFromGeometry(const struct RTCOccludedFu
|
||||
/* Sets the instanced scene of an instance geometry. */
|
||||
RTC_API void rtcSetGeometryInstancedScene(RTCGeometry geometry, RTCScene scene);
|
||||
|
||||
/* Sets the instanced scenes of an instance array geometry. */
|
||||
RTC_API void rtcSetGeometryInstancedScenes(RTCGeometry geometry, RTCScene* scenes, size_t numScenes);
|
||||
|
||||
/* Sets the transformation of an instance for the specified time step. */
|
||||
RTC_API void rtcSetGeometryTransform(RTCGeometry geometry, unsigned int timeStep, enum RTCFormat format, const void* xfm);
|
||||
|
||||
@@ -228,6 +232,12 @@ RTC_API void rtcSetGeometryTransformQuaternion(RTCGeometry geometry, unsigned in
|
||||
/* Returns the interpolated transformation of an instance for the specified time. */
|
||||
RTC_API void rtcGetGeometryTransform(RTCGeometry geometry, float time, enum RTCFormat format, void* xfm);
|
||||
|
||||
/*
|
||||
* Returns the interpolated transformation of the instPrimID'th instance of an
|
||||
* instance array for the specified time. If geometry is an regular instance,
|
||||
* instPrimID must be 0.
|
||||
*/
|
||||
RTC_API void rtcGetGeometryTransformEx(RTCGeometry geometry, unsigned int instPrimID, float time, enum RTCFormat format, void* xfm);
|
||||
|
||||
/* Sets the uniform tessellation rate of the geometry. */
|
||||
RTC_API void rtcSetGeometryTessellationRate(RTCGeometry geometry, float tessellationRate);
|
||||
|
||||
@@ -47,7 +47,8 @@ enum RTCGeometryType
|
||||
RTC_GEOMETRY_TYPE_NORMAL_ORIENTED_CATMULL_ROM_CURVE = 60, // flat normal-oriented Catmull-Rom curves
|
||||
|
||||
RTC_GEOMETRY_TYPE_USER = 120, // user-defined geometry
|
||||
RTC_GEOMETRY_TYPE_INSTANCE = 121 // scene instance
|
||||
RTC_GEOMETRY_TYPE_INSTANCE = 121, // scene instance
|
||||
RTC_GEOMETRY_TYPE_INSTANCE_ARRAY = 122 // scene instance
|
||||
};
|
||||
|
||||
/* Interpolation modes for subdivision surfaces */
|
||||
@@ -225,6 +226,9 @@ RTC_API void rtcInvokeOccludedFilterFromGeometry(const uniform struct RTCOcclude
|
||||
/* Sets the instanced scene of an instance geometry. */
|
||||
RTC_API void rtcSetGeometryInstancedScene(RTCGeometry geometry, RTCScene scene);
|
||||
|
||||
/* Sets the instanced scene of an instance array geometry. */
|
||||
RTC_API void rtcSetGeometryInstancedScenes(RTCGeometry geometry, uniform RTCScene* uniform scenes, uniform size_t numScenes);
|
||||
|
||||
/* Sets the transformation of an instance for the specified time step. */
|
||||
RTC_API void rtcSetGeometryTransform(RTCGeometry geometry, uniform unsigned int timeStep, uniform RTCFormat format, const void* uniform xfm);
|
||||
|
||||
@@ -234,6 +238,53 @@ RTC_API void rtcSetGeometryTransformQuaternion(RTCGeometry geometry, uniform uns
|
||||
/* Returns the interpolated transformation of an instance for the specified time. */
|
||||
RTC_API void rtcGetGeometryTransform(RTCGeometry geometry, uniform float time, uniform RTCFormat format, void* uniform xfm);
|
||||
|
||||
/* Returns the interpolated transformation of an instance for the specified time. Varying version. */
|
||||
inline void rtcGetGeometryTransform(RTCGeometry geometry, varying float time, uniform RTCFormat format, void* uniform xfm)
|
||||
{
|
||||
varying float vmatrix[12];
|
||||
foreach_unique(utime in time)
|
||||
{
|
||||
uniform float umatrix[12];
|
||||
rtcGetGeometryTransform(geometry,utime,RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR,umatrix);
|
||||
for (int uniform j=0; j<12; j++) vmatrix[j] = umatrix[j];
|
||||
}
|
||||
|
||||
/* store to desired layout */
|
||||
varying float* vxfm = (varying float*) xfm;
|
||||
|
||||
switch (format)
|
||||
{
|
||||
case RTC_FORMAT_FLOAT3X4_ROW_MAJOR:
|
||||
vxfm[ 0] = vmatrix[0]; vxfm[ 1] = vmatrix[3]; vxfm[ 2] = vmatrix[6]; vxfm[ 3] = vmatrix[9];
|
||||
vxfm[ 4] = vmatrix[1]; vxfm[ 5] = vmatrix[4]; vxfm[ 6] = vmatrix[7]; vxfm[ 7] = vmatrix[10];
|
||||
vxfm[ 8] = vmatrix[2]; vxfm[ 9] = vmatrix[5]; vxfm[10] = vmatrix[8]; vxfm[11] = vmatrix[11];
|
||||
break;
|
||||
|
||||
case RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR:
|
||||
vxfm[ 0] = vmatrix[0]; vxfm[ 1] = vmatrix[1]; vxfm[ 2] = vmatrix[2];
|
||||
vxfm[ 3] = vmatrix[3]; vxfm[ 4] = vmatrix[4]; vxfm[ 5] = vmatrix[5];
|
||||
vxfm[ 6] = vmatrix[6]; vxfm[ 7] = vmatrix[7]; vxfm[ 8] = vmatrix[8];
|
||||
vxfm[ 9] = vmatrix[9]; vxfm[10] = vmatrix[10]; vxfm[11] = vmatrix[11];
|
||||
break;
|
||||
|
||||
case RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR:
|
||||
vxfm[ 0] = vmatrix[0]; vxfm[ 1] = vmatrix[1]; vxfm[ 2] = vmatrix[2]; vxfm[ 3] = 0.f;
|
||||
vxfm[ 4] = vmatrix[3]; vxfm[ 5] = vmatrix[4]; vxfm[ 6] = vmatrix[5]; vxfm[ 7] = 0.f;
|
||||
vxfm[ 8] = vmatrix[6]; vxfm[ 9] = vmatrix[7]; vxfm[10] = vmatrix[8]; vxfm[11] = 0.f;
|
||||
vxfm[12] = vmatrix[9]; vxfm[13] = vmatrix[10]; vxfm[14] = vmatrix[11]; vxfm[15] = 1.f;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the interpolated transformation of the instPrimID'th instance of an
|
||||
* instance array for the specified time. If geometry is an regular instance,
|
||||
* instPrimID must be 0.
|
||||
*/
|
||||
RTC_API void rtcGetGeometryTransformEx(RTCGeometry geometry, uniform unsigned int instPrimID, uniform float time, uniform RTCFormat format, void* uniform xfm);
|
||||
|
||||
/* Sets the uniform tessellation rate of the geometry. */
|
||||
RTC_API void rtcSetGeometryTessellationRate(RTCGeometry geometry, uniform float tessellationRate);
|
||||
|
||||
@@ -39,6 +39,9 @@ struct RTC_ALIGN(16) RTCHit
|
||||
unsigned int primID; // primitive ID
|
||||
unsigned int geomID; // geometry ID
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // instance ID
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // instance primitive ID
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Combined ray/hit structure for a single ray */
|
||||
@@ -80,6 +83,9 @@ struct RTC_ALIGN(16) RTCHit4
|
||||
unsigned int primID[4];
|
||||
unsigned int geomID[4];
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT][4];
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT][4];
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Combined ray/hit structure for a packet of 4 rays */
|
||||
@@ -121,6 +127,9 @@ struct RTC_ALIGN(32) RTCHit8
|
||||
unsigned int primID[8];
|
||||
unsigned int geomID[8];
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT][8];
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT][8];
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Combined ray/hit structure for a packet of 8 rays */
|
||||
@@ -162,6 +171,9 @@ struct RTC_ALIGN(64) RTCHit16
|
||||
unsigned int primID[16];
|
||||
unsigned int geomID[16];
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT][16];
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT][16];
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Combined ray/hit structure for a packet of 16 rays */
|
||||
@@ -201,17 +213,20 @@ RTC_FORCEINLINE float& RTCHitN_Ng_z(RTCHitN* hit, unsigned int N, unsigned int i
|
||||
RTC_FORCEINLINE float& RTCHitN_u(RTCHitN* hit, unsigned int N, unsigned int i) { return ((float*)hit)[3*N+i]; }
|
||||
RTC_FORCEINLINE float& RTCHitN_v(RTCHitN* hit, unsigned int N, unsigned int i) { return ((float*)hit)[4*N+i]; }
|
||||
|
||||
RTC_FORCEINLINE unsigned int& RTCHitN_primID(RTCHitN* hit, unsigned int N, unsigned int i) { return ((unsigned*)hit)[5*N+i]; }
|
||||
RTC_FORCEINLINE unsigned int& RTCHitN_geomID(RTCHitN* hit, unsigned int N, unsigned int i) { return ((unsigned*)hit)[6*N+i]; }
|
||||
RTC_FORCEINLINE unsigned int& RTCHitN_instID(RTCHitN* hit, unsigned int N, unsigned int i, unsigned int l) { return ((unsigned*)hit)[7*N+i+N*l]; }
|
||||
RTC_FORCEINLINE unsigned int& RTCHitN_primID (RTCHitN* hit, unsigned int N, unsigned int i) { return ((unsigned*)hit)[5*N+i]; }
|
||||
RTC_FORCEINLINE unsigned int& RTCHitN_geomID (RTCHitN* hit, unsigned int N, unsigned int i) { return ((unsigned*)hit)[6*N+i]; }
|
||||
RTC_FORCEINLINE unsigned int& RTCHitN_instID (RTCHitN* hit, unsigned int N, unsigned int i, unsigned int l) { return ((unsigned*)hit)[7*N + N*l + i]; }
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
RTC_FORCEINLINE unsigned int& RTCHitN_instPrimID(RTCHitN* hit, unsigned int N, unsigned int i, unsigned int l) { return ((unsigned*)hit)[7*N + N*RTC_MAX_INSTANCE_LEVEL_COUNT + N*l + i]; }
|
||||
#endif
|
||||
|
||||
/* Helper functions to extract RTCRayN and RTCHitN from RTCRayHitN */
|
||||
RTC_FORCEINLINE RTCRayN* RTCRayHitN_RayN(RTCRayHitN* rayhit, unsigned int N) { return (RTCRayN*)&((float*)rayhit)[0*N]; }
|
||||
RTC_FORCEINLINE RTCHitN* RTCRayHitN_HitN(RTCRayHitN* rayhit, unsigned int N) { return (RTCHitN*)&((float*)rayhit)[12*N]; }
|
||||
|
||||
/* Helper structure for a ray packet of compile-time size N */
|
||||
template<int N>
|
||||
struct RTCRayNt
|
||||
template<unsigned int N>
|
||||
struct RTC_ALIGN((N && !(N & (N - 1)) ? (N * 4 > 16 ? N * 4 : 16) : 16)) RTCRayNt
|
||||
{
|
||||
float org_x[N];
|
||||
float org_y[N];
|
||||
@@ -230,8 +245,8 @@ struct RTCRayNt
|
||||
};
|
||||
|
||||
/* Helper structure for a hit packet of compile-time size N */
|
||||
template<int N>
|
||||
struct RTCHitNt
|
||||
template<unsigned int N>
|
||||
struct RTC_ALIGN((N && !(N & (N - 1)) ? (N * 4 > 16 ? N * 4 : 16) : 16)) RTCHitNt
|
||||
{
|
||||
float Ng_x[N];
|
||||
float Ng_y[N];
|
||||
@@ -243,6 +258,9 @@ struct RTCHitNt
|
||||
unsigned int primID[N];
|
||||
unsigned int geomID[N];
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT][N];
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT][N];
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Helper structure for a combined ray/hit packet of compile-time size N */
|
||||
@@ -281,8 +299,12 @@ RTC_FORCEINLINE RTCHit rtcGetHitFromHitN(RTCHitN* hitN, unsigned int N, unsigned
|
||||
hit.v = RTCHitN_v(hitN,N,i);
|
||||
hit.primID = RTCHitN_primID(hitN,N,i);
|
||||
hit.geomID = RTCHitN_geomID(hitN,N,i);
|
||||
for (unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++)
|
||||
for (unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++) {
|
||||
hit.instID[l] = RTCHitN_instID(hitN,N,i,l);
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
hit.instPrimID[l] = RTCHitN_instPrimID(hitN,N,i,l);
|
||||
#endif
|
||||
}
|
||||
return hit;
|
||||
}
|
||||
|
||||
@@ -295,8 +317,12 @@ RTC_FORCEINLINE void rtcCopyHitToHitN(RTCHitN* hitN, const RTCHit* hit, unsigned
|
||||
RTCHitN_v(hitN,N,i) = hit->v;
|
||||
RTCHitN_primID(hitN,N,i) = hit->primID;
|
||||
RTCHitN_geomID(hitN,N,i) = hit->geomID;
|
||||
for (unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++)
|
||||
for (unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++) {
|
||||
RTCHitN_instID(hitN,N,i,l) = hit->instID[l];
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
RTCHitN_instPrimID(hitN,N,i,l) = hit->instPrimID[l];
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
RTC_FORCEINLINE RTCRayHit rtcGetRayHitFromRayHitN(RTCRayHitN* rayhitN, unsigned int N, unsigned int i)
|
||||
@@ -325,8 +351,12 @@ RTC_FORCEINLINE RTCRayHit rtcGetRayHitFromRayHitN(RTCRayHitN* rayhitN, unsigned
|
||||
rh.hit.v = RTCHitN_v(hit,N,i);
|
||||
rh.hit.primID = RTCHitN_primID(hit,N,i);
|
||||
rh.hit.geomID = RTCHitN_geomID(hit,N,i);
|
||||
for (unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++)
|
||||
for (unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++) {
|
||||
rh.hit.instID[l] = RTCHitN_instID(hit,N,i,l);
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
rh.hit.instPrimID[l] = RTCHitN_instPrimID(hit,N,i,l);
|
||||
#endif
|
||||
}
|
||||
|
||||
return rh;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,9 @@ struct RTC_ALIGN(16) RTCHit
|
||||
unsigned int primID; // primitive ID
|
||||
unsigned int geomID; // geometry ID
|
||||
unsigned int instID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // instance ID
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
unsigned int instPrimID[RTC_MAX_INSTANCE_LEVEL_COUNT]; // instance prim ID
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Combined ray/hit structure */
|
||||
@@ -76,6 +79,9 @@ RTC_FORCEINLINE varying float& RTCHitN_v (const RTCHitN* uniform hit, uniform
|
||||
RTC_FORCEINLINE varying unsigned int& RTCHitN_primID(const RTCHitN* uniform hit, uniform unsigned int N, uniform unsigned int i) { return *((varying unsigned int* uniform) &((unsigned int* uniform )hit)[5*N+i]); }
|
||||
RTC_FORCEINLINE varying unsigned int& RTCHitN_geomID(const RTCHitN* uniform hit, uniform unsigned int N, uniform unsigned int i) { return *((varying unsigned int* uniform) &((unsigned int* uniform )hit)[6*N+i]); }
|
||||
RTC_FORCEINLINE varying unsigned int& RTCHitN_instID(const RTCHitN* uniform hit, uniform unsigned int N, uniform unsigned int i, uniform unsigned int l) { return *((varying unsigned int* uniform) &((unsigned int* uniform )hit)[7*N+i+l*N]); }
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
RTC_FORCEINLINE varying unsigned int& RTCHitN_instPrimID(const RTCHitN* uniform hit, uniform unsigned int N, uniform unsigned int i, uniform unsigned int l) { return *((varying unsigned int* uniform) &((unsigned int* uniform )hit)[7*N + N*RTC_MAX_INSTANCE_LEVEL_COUNT + N*l + i]); }
|
||||
#endif
|
||||
|
||||
/* Helper functions to extract RTCRayN and RTCHitN from RTCRayHitN */
|
||||
RTC_FORCEINLINE RTCRayN* uniform RTCRayHitN_RayN(RTCRayHitN* uniform rayhit, uniform unsigned int N) { return (RTCRayN* uniform)&((uniform float* uniform)rayhit)[0*N]; }
|
||||
@@ -109,8 +115,12 @@ RTC_FORCEINLINE RTCHit rtcGetHitFromHitN(RTCHitN* uniform hitN, uniform unsigned
|
||||
hit.v = RTCHitN_v(hitN,N,i);
|
||||
hit.primID = RTCHitN_primID(hitN,N,i);
|
||||
hit.geomID = RTCHitN_geomID(hitN,N,i);
|
||||
for (uniform unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++)
|
||||
for (uniform unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++) {
|
||||
hit.instID[l] = RTCHitN_instID(hitN,N,i,l);
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
hit.instPrimID[l] = RTCHitN_instPrimID(hitN,N,i,l);
|
||||
#endif
|
||||
}
|
||||
return hit;
|
||||
}
|
||||
|
||||
@@ -123,8 +133,12 @@ RTC_FORCEINLINE void rtcCopyHitToHitN(RTCHitN* uniform hitN, const varying RTCHi
|
||||
RTCHitN_v(hitN,N,i) = hit->v;
|
||||
RTCHitN_primID(hitN,N,i) = hit->primID;
|
||||
RTCHitN_geomID(hitN,N,i) = hit->geomID;
|
||||
for (uniform unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++)
|
||||
for (uniform unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++) {
|
||||
RTCHitN_instID(hitN,N,i,l) = hit->instID[l];
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
RTCHitN_instPrimID(hitN,N,i,l) = hit->instPrimID[l];
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
RTC_FORCEINLINE RTCRayHit rtcGetRayHitFromRayHitN(RTCRayHitN* uniform rayhitN, uniform unsigned int N, uniform unsigned int i)
|
||||
@@ -153,8 +167,12 @@ RTC_FORCEINLINE RTCRayHit rtcGetRayHitFromRayHitN(RTCRayHitN* uniform rayhitN, u
|
||||
rh.hit.v = RTCHitN_v(hit,N,i);
|
||||
rh.hit.primID = RTCHitN_primID(hit,N,i);
|
||||
rh.hit.geomID = RTCHitN_geomID(hit,N,i);
|
||||
for (uniform unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++)
|
||||
for (uniform unsigned int l = 0; l < RTC_MAX_INSTANCE_LEVEL_COUNT; l++) {
|
||||
rh.hit.instID[l] = RTCHitN_instID(hit,N,i,l);
|
||||
#if defined(RTC_GEOMETRY_INSTANCE_ARRAY)
|
||||
rh.hit.instPrimID[l] = RTCHitN_instPrimID(hit,N,i,l);
|
||||
#endif
|
||||
}
|
||||
|
||||
return rh;
|
||||
}
|
||||
|
||||
@@ -16,11 +16,12 @@ struct RTCRayHit16;
|
||||
/* Scene flags */
|
||||
enum RTCSceneFlags
|
||||
{
|
||||
RTC_SCENE_FLAG_NONE = 0,
|
||||
RTC_SCENE_FLAG_DYNAMIC = (1 << 0),
|
||||
RTC_SCENE_FLAG_COMPACT = (1 << 1),
|
||||
RTC_SCENE_FLAG_ROBUST = (1 << 2),
|
||||
RTC_SCENE_FLAG_FILTER_FUNCTION_IN_ARGUMENTS = (1 << 3)
|
||||
RTC_SCENE_FLAG_NONE = 0,
|
||||
RTC_SCENE_FLAG_DYNAMIC = (1 << 0),
|
||||
RTC_SCENE_FLAG_COMPACT = (1 << 1),
|
||||
RTC_SCENE_FLAG_ROBUST = (1 << 2),
|
||||
RTC_SCENE_FLAG_FILTER_FUNCTION_IN_ARGUMENTS = (1 << 3),
|
||||
RTC_SCENE_FLAG_PREFETCH_USM_SHARED_ON_GPU = (1 << 4),
|
||||
};
|
||||
|
||||
/* Additional arguments for rtcIntersect1/4/8/16 calls */
|
||||
@@ -110,6 +111,9 @@ RTC_API RTCGeometry rtcGetGeometryThreadSafe(RTCScene scene, unsigned int geomID
|
||||
/* Gets the user-defined data pointer of the geometry. This function is not thread safe and should get used during rendering. */
|
||||
RTC_SYCL_API void* rtcGetGeometryUserDataFromScene(RTCScene scene, unsigned int geomID);
|
||||
|
||||
/* Returns the interpolated transformation of an instance for the specified time. */
|
||||
RTC_SYCL_API void rtcGetGeometryTransformFromScene(RTCScene scene, unsigned int geomID, float time, enum RTCFormat format, void* xfm);
|
||||
|
||||
|
||||
/* Commits the scene. */
|
||||
RTC_API void rtcCommitScene(RTCScene scene);
|
||||
@@ -169,15 +173,27 @@ RTC_API void rtcIntersect16(const int* valid, RTCScene scene, struct RTCRayHit16
|
||||
/* Forwards ray inside user geometry callback. */
|
||||
RTC_SYCL_API void rtcForwardIntersect1(const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay* ray, unsigned int instID);
|
||||
|
||||
/* Forwards ray inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_SYCL_API void rtcForwardIntersect1Ex(const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay* ray, unsigned int instID, unsigned int instPrimID);
|
||||
|
||||
/* Forwards ray packet of size 4 inside user geometry callback. */
|
||||
RTC_API void rtcForwardIntersect4(const int* valid, const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay4* ray, unsigned int instID);
|
||||
|
||||
/* Forwards ray packet of size 4 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardIntersect4Ex(const int* valid, const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay4* ray, unsigned int instID, unsigned int primInstID);
|
||||
|
||||
/* Forwards ray packet of size 8 inside user geometry callback. */
|
||||
RTC_API void rtcForwardIntersect8(const int* valid, const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay8* ray, unsigned int instID);
|
||||
|
||||
/* Forwards ray packet of size 4 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardIntersect8Ex(const int* valid, const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay8* ray, unsigned int instID, unsigned int primInstID);
|
||||
|
||||
/* Forwards ray packet of size 16 inside user geometry callback. */
|
||||
RTC_API void rtcForwardIntersect16(const int* valid, const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay16* ray, unsigned int instID);
|
||||
|
||||
/* Forwards ray packet of size 4 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardIntersect16Ex(const int* valid, const struct RTCIntersectFunctionNArguments* args, RTCScene scene, struct RTCRay16* ray, unsigned int instID, unsigned int primInstID);
|
||||
|
||||
|
||||
/* Tests a single ray for occlusion with the scene. */
|
||||
RTC_SYCL_API void rtcOccluded1(RTCScene scene, struct RTCRay* ray, struct RTCOccludedArguments* args RTC_OPTIONAL_ARGUMENT);
|
||||
@@ -195,15 +211,27 @@ RTC_API void rtcOccluded16(const int* valid, RTCScene scene, struct RTCRay16* ra
|
||||
/* Forwards single occlusion ray inside user geometry callback. */
|
||||
RTC_SYCL_API void rtcForwardOccluded1(const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay* ray, unsigned int instID);
|
||||
|
||||
/* Forwards single occlusion ray inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_SYCL_API void rtcForwardOccluded1Ex(const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay* ray, unsigned int instID, unsigned int instPrimID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 4 inside user geometry callback. */
|
||||
RTC_API void rtcForwardOccluded4(const int* valid, const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay4* ray, unsigned int instID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 4 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardOccluded4Ex(const int* valid, const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay4* ray, unsigned int instID, unsigned int instPrimID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 8 inside user geometry callback. */
|
||||
RTC_API void rtcForwardOccluded8(const int* valid, const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay8* ray, unsigned int instID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 8 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardOccluded8Ex(const int* valid, const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay8* ray, unsigned int instID, unsigned int instPrimID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 16 inside user geometry callback. */
|
||||
RTC_API void rtcForwardOccluded16(const int* valid, const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay16* ray, unsigned int instID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 16 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardOccluded16Ex(const int* valid, const struct RTCOccludedFunctionNArguments* args, RTCScene scene, struct RTCRay16* ray, unsigned int instID, unsigned int instPrimID);
|
||||
|
||||
|
||||
/*! collision callback */
|
||||
struct RTCCollision { unsigned int geomID0; unsigned int primID0; unsigned int geomID1; unsigned int primID1; };
|
||||
|
||||
@@ -101,6 +101,51 @@ RTC_API RTCGeometry rtcGetGeometryThreadSafe(RTCScene scene, uniform unsigned in
|
||||
/* Gets the user-defined data pointer of the geometry. This function is not thread safe and should get used during rendering. */
|
||||
RTC_API void* rtcGetGeometryUserDataFromScene(RTCScene scene, uniform unsigned int geomID);
|
||||
|
||||
/* Returns the interpolated transformation of an instance for the specified time. */
|
||||
RTC_API void rtcGetGeometryTransformFromScene(RTCScene scene, uniform unsigned int geomID, uniform float time, uniform RTCFormat format, void* uniform xfm);
|
||||
|
||||
/* Returns the interpolated transformation of an instance for the specified time. Varying version. */
|
||||
inline void rtcGetGeometryTransformFromScene(RTCScene scene, varying unsigned int geomID, varying float time, uniform RTCFormat format, void* uniform xfm)
|
||||
{
|
||||
varying float vmatrix[12];
|
||||
|
||||
foreach_unique(ugeomID in geomID)
|
||||
foreach_unique(utime in time)
|
||||
{
|
||||
uniform float umatrix[12];
|
||||
rtcGetGeometryTransformFromScene(scene,ugeomID,utime,RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR,umatrix);
|
||||
for (int uniform j=0; j<12; j++) vmatrix[j] = umatrix[j];
|
||||
}
|
||||
|
||||
/* store to desired layout */
|
||||
varying float* vxfm = (varying float*) xfm;
|
||||
|
||||
switch (format)
|
||||
{
|
||||
case RTC_FORMAT_FLOAT3X4_ROW_MAJOR:
|
||||
vxfm[ 0] = vmatrix[0]; vxfm[ 1] = vmatrix[3]; vxfm[ 2] = vmatrix[6]; vxfm[ 3] = vmatrix[9];
|
||||
vxfm[ 4] = vmatrix[1]; vxfm[ 5] = vmatrix[4]; vxfm[ 6] = vmatrix[7]; vxfm[ 7] = vmatrix[10];
|
||||
vxfm[ 8] = vmatrix[2]; vxfm[ 9] = vmatrix[5]; vxfm[10] = vmatrix[8]; vxfm[11] = vmatrix[11];
|
||||
break;
|
||||
|
||||
case RTC_FORMAT_FLOAT3X4_COLUMN_MAJOR:
|
||||
vxfm[ 0] = vmatrix[0]; vxfm[ 1] = vmatrix[1]; vxfm[ 2] = vmatrix[2];
|
||||
vxfm[ 3] = vmatrix[3]; vxfm[ 4] = vmatrix[4]; vxfm[ 5] = vmatrix[5];
|
||||
vxfm[ 6] = vmatrix[6]; vxfm[ 7] = vmatrix[7]; vxfm[ 8] = vmatrix[8];
|
||||
vxfm[ 9] = vmatrix[9]; vxfm[10] = vmatrix[10]; vxfm[11] = vmatrix[11];
|
||||
break;
|
||||
|
||||
case RTC_FORMAT_FLOAT4X4_COLUMN_MAJOR:
|
||||
vxfm[ 0] = vmatrix[0]; vxfm[ 1] = vmatrix[1]; vxfm[ 2] = vmatrix[2]; vxfm[ 3] = 0.f;
|
||||
vxfm[ 4] = vmatrix[3]; vxfm[ 5] = vmatrix[4]; vxfm[ 6] = vmatrix[5]; vxfm[ 7] = 0.f;
|
||||
vxfm[ 8] = vmatrix[6]; vxfm[ 9] = vmatrix[7]; vxfm[10] = vmatrix[8]; vxfm[11] = 0.f;
|
||||
vxfm[12] = vmatrix[9]; vxfm[13] = vmatrix[10]; vxfm[14] = vmatrix[11]; vxfm[15] = 1.f;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Commits the scene. */
|
||||
RTC_API void rtcCommitScene(RTCScene scene);
|
||||
@@ -191,15 +236,26 @@ RTC_FORCEINLINE void rtcIntersectV(RTCScene scene, varying RTCRayHit* uniform ra
|
||||
/* Forwards ray inside user geometry callback. */
|
||||
RTC_API void rtcForwardIntersect1(const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, uniform RTCRay* uniform ray, uniform unsigned int instID);
|
||||
|
||||
/* Forwards ray inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardIntersect1Ex(const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, uniform RTCRay* uniform ray, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards ray packet of size 4 inside user geometry callback. */
|
||||
RTC_API void rtcForwardIntersect4(const uniform int* uniform valid, const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, void* uniform ray4, uniform unsigned int instID);
|
||||
|
||||
/* Forwards ray packet of size 4 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardIntersect4Ex(const uniform int* uniform valid, const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, void* uniform ray4, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards ray packet of size 8 inside user geometry callback. */
|
||||
RTC_API void rtcForwardIntersect8(const uniform int* uniform valid, const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, void* uniform ray8, uniform unsigned int instID);
|
||||
|
||||
/* Forwards ray packet of size 8 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardIntersect8Ex(const uniform int* uniform valid, const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, void* uniform ray8, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards ray packet of size 16 inside user geometry callback. */
|
||||
RTC_API void rtcForwardIntersect16(const uniform int* uniform valid, const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, void* uniform ray16, uniform unsigned int instID);
|
||||
|
||||
/* Forwards ray packet of size 16 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardIntersect16Ex(const uniform int* uniform valid, const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, void* uniform ray16, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards ray intersection query inside user geometry callback. */
|
||||
RTC_FORCEINLINE void rtcForwardIntersectV(const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, varying RTCRay* uniform iray, uniform unsigned int instID)
|
||||
@@ -216,6 +272,21 @@ RTC_FORCEINLINE void rtcForwardIntersectV(const uniform RTCIntersectFunctionNArg
|
||||
rtcForwardIntersect16((uniform int* uniform)&imask, args, scene, iray, instID);
|
||||
}
|
||||
|
||||
/* Forwards ray intersection query inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_FORCEINLINE void rtcForwardIntersectVEx(const uniform RTCIntersectFunctionNArguments* uniform args, RTCScene scene, varying RTCRay* uniform iray, uniform unsigned int instID, uniform unsigned int instPrimID)
|
||||
{
|
||||
varying bool mask = __mask;
|
||||
unmasked {
|
||||
varying int imask = mask ? -1 : 0;
|
||||
}
|
||||
if (sizeof(varying float) == 16)
|
||||
rtcForwardIntersect4Ex((uniform int* uniform)&imask, args, scene, iray, instID, instPrimID);
|
||||
else if (sizeof(varying float) == 32)
|
||||
rtcForwardIntersect8Ex((uniform int* uniform)&imask, args, scene, iray, instID, instPrimID);
|
||||
else if (sizeof(varying float) == 64)
|
||||
rtcForwardIntersect16Ex((uniform int* uniform)&imask, args, scene, iray, instID, instPrimID);
|
||||
}
|
||||
|
||||
|
||||
/* Tests a single ray for occlusion with the scene. */
|
||||
RTC_API void rtcOccluded1(RTCScene scene, uniform RTCRay* uniform ray, uniform RTCOccludedArguments* uniform args = NULL);
|
||||
@@ -249,15 +320,27 @@ RTC_FORCEINLINE void rtcOccludedV(RTCScene scene, varying RTCRay* uniform ray, u
|
||||
/* Forwards single occlusion ray inside user geometry callback. */
|
||||
RTC_API void rtcForwardOccluded1(const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, uniform RTCRay* uniform ray, uniform unsigned int instID);
|
||||
|
||||
/* Forwards single occlusion ray inside user geometry callback. Extended to handle instance arrays using instPrimID parameter.*/
|
||||
RTC_API void rtcForwardOccluded1Ex(const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, uniform RTCRay* uniform ray, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 4 inside user geometry callback. */
|
||||
RTC_API void rtcForwardOccluded4(const uniform int* uniform valid, const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, void* uniform ray4, uniform unsigned int instID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 4 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardOccluded4Ex(const uniform int* uniform valid, const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, void* uniform ray4, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 8 inside user geometry callback. */
|
||||
RTC_API void rtcForwardOccluded8(const uniform int* uniform valid, const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, void* uniform ray8, uniform unsigned int instID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 8 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardOccluded8Ex(const uniform int* uniform valid, const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, void* uniform ray8, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 16 inside user geometry callback. */
|
||||
RTC_API void rtcForwardOccluded16(const uniform int* uniform valid, const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, void* uniform ray16, uniform unsigned int instID);
|
||||
|
||||
/* Forwards occlusion ray packet of size 16 inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_API void rtcForwardOccluded16Ex(const uniform int* uniform valid, const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, void* uniform ray16, uniform unsigned int instID, uniform unsigned int instPrimID);
|
||||
|
||||
/* Forwards ray occlusion query inside user geometry callback. */
|
||||
RTC_FORCEINLINE void rtcForwardOccludedV(const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, varying RTCRay* uniform iray, uniform unsigned int instID)
|
||||
{
|
||||
@@ -274,6 +357,22 @@ RTC_FORCEINLINE void rtcForwardOccludedV(const uniform RTCOccludedFunctionNArgum
|
||||
rtcForwardOccluded16((uniform int* uniform)&imask, args, scene, iray, instID);
|
||||
}
|
||||
|
||||
/* Forwards ray occlusion query inside user geometry callback. Extended to handle instance arrays using instPrimID parameter. */
|
||||
RTC_FORCEINLINE void rtcForwardOccludedVEx(const uniform RTCOccludedFunctionNArguments* uniform args, RTCScene scene, varying RTCRay* uniform iray, uniform unsigned int instID, uniform unsigned int instPrimID)
|
||||
{
|
||||
varying bool mask = __mask;
|
||||
unmasked {
|
||||
varying int imask = mask ? -1 : 0;
|
||||
}
|
||||
|
||||
if (sizeof(varying float) == 16)
|
||||
rtcForwardOccluded4Ex((uniform int* uniform)&imask, args, scene, iray, instID, instPrimID);
|
||||
else if (sizeof(varying float) == 32)
|
||||
rtcForwardOccluded8Ex((uniform int* uniform)&imask, args, scene, iray, instID, instPrimID);
|
||||
else if (sizeof(varying float) == 64)
|
||||
rtcForwardOccluded16Ex((uniform int* uniform)&imask, args, scene, iray, instID, instPrimID);
|
||||
}
|
||||
|
||||
|
||||
/*! collision callback */
|
||||
struct RTCCollision { unsigned int geomID0; unsigned int primID0; unsigned int geomID1; unsigned int primID1; };
|
||||
|
||||
+15
-10
@@ -6,6 +6,7 @@ IF (EMBREE_SYCL_RT_SIMULATION)
|
||||
ENDIF()
|
||||
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
ADD_SUBDIRECTORY(level_zero)
|
||||
ADD_SUBDIRECTORY(rthwif)
|
||||
ENDIF()
|
||||
|
||||
@@ -47,6 +48,7 @@ SET(EMBREE_LIBRARY_FILES
|
||||
common/geometry.cpp
|
||||
common/scene_user_geometry.cpp
|
||||
common/scene_instance.cpp
|
||||
common/scene_instance_array.cpp
|
||||
common/scene_triangle_mesh.cpp
|
||||
common/scene_quad_mesh.cpp
|
||||
common/scene_curves.cpp
|
||||
@@ -61,6 +63,7 @@ SET(EMBREE_LIBRARY_FILES
|
||||
|
||||
geometry/primitive4.cpp
|
||||
geometry/instance_intersector.cpp
|
||||
geometry/instance_array_intersector.cpp
|
||||
geometry/curve_intersector_virtual_4v.cpp
|
||||
geometry/curve_intersector_virtual_4i.cpp
|
||||
geometry/curve_intersector_virtual_4i_mb.cpp
|
||||
@@ -88,9 +91,13 @@ SET(EMBREE_LIBRARY_FILES
|
||||
bvh/bvh_intersector1_bvh4.cpp
|
||||
)
|
||||
|
||||
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
SET(EMBREE_LIBRARY_FILES ${EMBREE_LIBRARY_FILES}
|
||||
sycl/rthwif_embree_builder.cpp)
|
||||
sycl/rthwif_embree_builder.cpp
|
||||
sycl/scene_sycl.cpp)
|
||||
|
||||
set_source_files_properties(sycl/scene_sycl.cpp PROPERTIES COMPILE_FLAGS ${CMAKE_CXX_FLAGS_SYCL})
|
||||
ENDIF()
|
||||
|
||||
IF (EMBREE_GEOMETRY_SUBDIVISION)
|
||||
@@ -113,6 +120,7 @@ MACRO(embree_files TARGET ISA)
|
||||
|
||||
SET(${TARGET}
|
||||
geometry/instance_intersector.cpp
|
||||
geometry/instance_array_intersector.cpp
|
||||
geometry/curve_intersector_virtual_4v.cpp
|
||||
geometry/curve_intersector_virtual_4i.cpp
|
||||
geometry/curve_intersector_virtual_4i_mb.cpp
|
||||
@@ -130,6 +138,7 @@ MACRO(embree_files TARGET ISA)
|
||||
LIST(APPEND ${TARGET}
|
||||
common/scene_user_geometry.cpp
|
||||
common/scene_instance.cpp
|
||||
common/scene_instance_array.cpp
|
||||
common/scene_triangle_mesh.cpp
|
||||
common/scene_quad_mesh.cpp
|
||||
common/scene_curves.cpp
|
||||
@@ -240,10 +249,9 @@ DISABLE_STACK_PROTECTOR_FOR_INTERSECTORS(${EMBREE_LIBRARY_FILES})
|
||||
ADD_LIBRARY(embree ${EMBREE_LIB_TYPE} ${EMBREE_LIBRARY_FILES})
|
||||
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
|
||||
IF (EMBREE_LEVEL_ZERO)
|
||||
TARGET_COMPILE_DEFINITIONS(embree PUBLIC EMBREE_LEVEL_ZERO)
|
||||
ENDIF()
|
||||
# add link flag '-fsycl' here to include the kernel for USM prefetch from
|
||||
# scene_sycl.cpp in embree4.dll/embree4.so
|
||||
TARGET_LINK_OPTIONS(embree PRIVATE "-fsycl")
|
||||
|
||||
ADD_LIBRARY(embree_sycl STATIC
|
||||
sycl/rtcore_sycl.cpp
|
||||
@@ -341,10 +349,7 @@ ENDIF()
|
||||
|
||||
TARGET_LINK_LIBRARIES(embree PRIVATE ${EMBREE_LIBRARIES} sys math simd lexers tasking)
|
||||
IF (EMBREE_SYCL_SUPPORT)
|
||||
TARGET_LINK_LIBRARIES(embree PRIVATE embree_rthwif ${SYCL_LIB_NAME} PUBLIC embree_sycl)
|
||||
IF (EMBREE_LEVL_ZERO)
|
||||
TARGET_LINK_LIBRARIES(embree PRIVATE ze_loader)
|
||||
ENDIF()
|
||||
TARGET_LINK_LIBRARIES(embree PRIVATE ${SYCL_LIB_NAME} ze_wrapper PUBLIC embree_sycl)
|
||||
ENDIF()
|
||||
|
||||
#TARGET_LINK_LIBRARIES(embree PRIVATE ${EMBREE_LIBRARIES} sys math simd lexers tasking ${CMAKE_LINK_FLAGS_SYCL}) # FIXME: enable this line
|
||||
@@ -357,7 +362,7 @@ target_include_directories(embree PUBLIC
|
||||
# libtbb is located in same install folder as libembree
|
||||
IF(WIN32)
|
||||
ELSEIF(APPLE)
|
||||
SET_TARGET_PROPERTIES(embree PROPERTIES INSTALL_RPATH "@rpath") # On MacOSX the app is supposed to already have an rpath set to that folder
|
||||
SET_TARGET_PROPERTIES(embree PROPERTIES INSTALL_RPATH "@loader_path") # On MacOSX we tell dyld to find libtbb in the folder libembree is placed
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(embree PROPERTIES INSTALL_RPATH "$ORIGIN") # Linux we tell ld to find libtbb in the folder libembree is placed.
|
||||
ENDIF()
|
||||
|
||||
@@ -48,10 +48,9 @@ namespace embree
|
||||
}
|
||||
|
||||
Settings (size_t sahBlockSize, size_t minLeafSize, size_t maxLeafSize, float travCost, float intCost, size_t singleThreadThreshold, size_t primrefarrayalloc = inf)
|
||||
: branchingFactor(2), maxDepth(32), logBlockSize(bsr(sahBlockSize)), minLeafSize(minLeafSize), maxLeafSize(maxLeafSize),
|
||||
: branchingFactor(2), maxDepth(32), logBlockSize(bsr(sahBlockSize)), minLeafSize(min(minLeafSize,maxLeafSize)), maxLeafSize(maxLeafSize),
|
||||
travCost(travCost), intCost(intCost), singleThreadThreshold(singleThreadThreshold), primrefarrayalloc(primrefarrayalloc)
|
||||
{
|
||||
minLeafSize = min(minLeafSize,maxLeafSize);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
@@ -283,11 +283,9 @@ namespace embree
|
||||
|
||||
if (likely(splits <= 1)) continue; /* todo: does this ever happen ? */
|
||||
|
||||
//int bin0 = split.mapping.bin(prims0[i].lower)[split.dim];
|
||||
//int bin1 = split.mapping.bin(prims0[i].upper)[split.dim];
|
||||
//if (unlikely(bin0 < split.pos && bin1 >= split.pos))
|
||||
|
||||
if (unlikely(prims0[i].lower[split.dim] < fpos && prims0[i].upper[split.dim] > fpos))
|
||||
const int bin0 = split.mapping.bin(prims0[i].lower)[split.dim];
|
||||
const int bin1 = split.mapping.bin(prims0[i].upper)[split.dim];
|
||||
if (unlikely(bin0 < split.pos && bin1 >= split.pos))
|
||||
{
|
||||
assert(splits > 1);
|
||||
|
||||
|
||||
@@ -354,5 +354,6 @@ namespace embree
|
||||
IF_ENABLED_QUADS(template size_t createMortonCodeArray<QuadMesh>(QuadMesh* mesh COMMA mvector<BVHBuilderMorton::BuildPrim>& morton COMMA BuildProgressMonitor& progressMonitor));
|
||||
IF_ENABLED_USER (template size_t createMortonCodeArray<UserGeometry>(UserGeometry* mesh COMMA mvector<BVHBuilderMorton::BuildPrim>& morton COMMA BuildProgressMonitor& progressMonitor));
|
||||
IF_ENABLED_INSTANCE (template size_t createMortonCodeArray<Instance>(Instance* mesh COMMA mvector<BVHBuilderMorton::BuildPrim>& morton COMMA BuildProgressMonitor& progressMonitor));
|
||||
IF_ENABLED_INSTANCE_ARRAY (template size_t createMortonCodeArray<InstanceArray>(InstanceArray* mesh COMMA mvector<BVHBuilderMorton::BuildPrim>& morton COMMA BuildProgressMonitor& progressMonitor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "../geometry/subdivpatch1.h"
|
||||
#include "../geometry/object.h"
|
||||
#include "../geometry/instance.h"
|
||||
#include "../geometry/instance_array.h"
|
||||
#include "../geometry/subgrid.h"
|
||||
#include "../common/accelinstance.h"
|
||||
|
||||
@@ -66,6 +67,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH4InstanceIntersector1);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH4InstanceMBIntersector1);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH4InstanceArrayIntersector1);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH4InstanceArrayMBIntersector1);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH4GridIntersector1Moeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH4GridMBIntersector1Moeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH4GridIntersector1Pluecker);
|
||||
@@ -104,6 +108,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH4InstanceIntersector4Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH4InstanceMBIntersector4Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH4InstanceArrayIntersector4Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH4InstanceArrayMBIntersector4Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH4GridIntersector4HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH4GridMBIntersector4HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH4GridIntersector4HybridPluecker);
|
||||
@@ -142,6 +149,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH4InstanceIntersector8Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH4InstanceMBIntersector8Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH4InstanceArrayIntersector8Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH4InstanceArrayMBIntersector8Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH4GridIntersector8HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH4GridMBIntersector8HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH4GridIntersector8HybridPluecker);
|
||||
@@ -180,6 +190,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH4InstanceIntersector16Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH4InstanceMBIntersector16Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH4InstanceArrayIntersector16Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH4InstanceArrayMBIntersector16Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH4GridIntersector16HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH4GridMBIntersector16HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH4GridIntersector16HybridPluecker);
|
||||
@@ -190,6 +203,7 @@ namespace embree
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelQuadMeshSAH,void* COMMA Scene* COMMA bool);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelVirtualSAH,void* COMMA Scene* COMMA bool);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelInstanceSAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelInstanceArraySAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4Curve4vBuilder_OBB_New,void* COMMA Scene* COMMA size_t);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4Curve4iBuilder_OBB_New,void* COMMA Scene* COMMA size_t);
|
||||
@@ -220,7 +234,10 @@ namespace embree
|
||||
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4InstanceSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4InstanceMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4InstanceArraySceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4InstanceArrayMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4GridSceneBuilderSAH,void* COMMA Scene* COMMA size_t);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH4GridMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t);
|
||||
|
||||
@@ -249,6 +266,7 @@ namespace embree
|
||||
IF_ENABLED_QUADS (SELECT_SYMBOL_DEFAULT_AVX(features,BVH4BuilderTwoLevelQuadMeshSAH));
|
||||
IF_ENABLED_USER (SELECT_SYMBOL_DEFAULT_AVX(features,BVH4BuilderTwoLevelVirtualSAH));
|
||||
IF_ENABLED_INSTANCE (SELECT_SYMBOL_DEFAULT_AVX(features,BVH4BuilderTwoLevelInstanceSAH));
|
||||
IF_ENABLED_INSTANCE_ARRAY (SELECT_SYMBOL_DEFAULT_AVX(features,BVH4BuilderTwoLevelInstanceArraySAH));
|
||||
|
||||
IF_ENABLED_CURVES_OR_POINTS(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Curve4vBuilder_OBB_New));
|
||||
IF_ENABLED_CURVES_OR_POINTS(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4Curve4iBuilder_OBB_New));
|
||||
@@ -279,7 +297,10 @@ namespace embree
|
||||
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4InstanceSceneBuilderSAH));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4InstanceMBSceneBuilderSAH));
|
||||
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4InstanceArraySceneBuilderSAH));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4InstanceArrayMBSceneBuilderSAH));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4GridSceneBuilderSAH));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_DEFAULT_AVX(features,BVH4GridMBSceneBuilderSAH));
|
||||
|
||||
@@ -332,6 +353,9 @@ namespace embree
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceIntersector1));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceMBIntersector1));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceArrayIntersector1));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceArrayMBIntersector1));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4GridIntersector1Moeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4GridMBIntersector1Moeller))
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4GridIntersector1Pluecker));
|
||||
@@ -372,7 +396,10 @@ namespace embree
|
||||
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceIntersector4Chunk));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceMBIntersector4Chunk));
|
||||
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceArrayIntersector4Chunk));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4InstanceArrayMBIntersector4Chunk));
|
||||
|
||||
IF_ENABLED_QUADS(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4Quad4vIntersector4HybridMoeller));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_DEFAULT_SSE42_AVX_AVX2_AVX512(features,BVH4GridIntersector4HybridMoeller));
|
||||
@@ -407,13 +434,16 @@ namespace embree
|
||||
|
||||
IF_ENABLED_SUBDIV(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4SubdivPatch1Intersector8));
|
||||
IF_ENABLED_SUBDIV(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4SubdivPatch1MBIntersector8));
|
||||
|
||||
|
||||
IF_ENABLED_USER(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4VirtualIntersector8Chunk));
|
||||
IF_ENABLED_USER(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4VirtualMBIntersector8Chunk));
|
||||
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4InstanceIntersector8Chunk));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4InstanceMBIntersector8Chunk));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4InstanceArrayIntersector8Chunk));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4InstanceArrayMBIntersector8Chunk));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4GridIntersector8HybridMoeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4GridMBIntersector8HybridMoeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH4GridIntersector8HybridPluecker));
|
||||
@@ -453,6 +483,9 @@ namespace embree
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX512(features,BVH4InstanceIntersector16Chunk));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX512(features,BVH4InstanceMBIntersector16Chunk));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX512(features,BVH4InstanceArrayIntersector16Chunk));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX512(features,BVH4InstanceArrayMBIntersector16Chunk));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX512(features,BVH4GridIntersector16HybridMoeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX512(features,BVH4GridMBIntersector16HybridMoeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX512(features,BVH4GridIntersector16HybridPluecker));
|
||||
@@ -816,6 +849,32 @@ namespace embree
|
||||
#endif
|
||||
return intersectors;
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH4Factory::BVH4InstanceArrayIntersectors(BVH4* bvh)
|
||||
{
|
||||
Accel::Intersectors intersectors;
|
||||
intersectors.ptr = bvh;
|
||||
intersectors.intersector1 = BVH4InstanceArrayIntersector1();
|
||||
#if defined (EMBREE_RAY_PACKETS)
|
||||
intersectors.intersector4 = BVH4InstanceArrayIntersector4Chunk();
|
||||
intersectors.intersector8 = BVH4InstanceArrayIntersector8Chunk();
|
||||
intersectors.intersector16 = BVH4InstanceArrayIntersector16Chunk();
|
||||
#endif
|
||||
return intersectors;
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH4Factory::BVH4InstanceArrayMBIntersectors(BVH4* bvh)
|
||||
{
|
||||
Accel::Intersectors intersectors;
|
||||
intersectors.ptr = bvh;
|
||||
intersectors.intersector1 = BVH4InstanceArrayMBIntersector1();
|
||||
#if defined (EMBREE_RAY_PACKETS)
|
||||
intersectors.intersector4 = BVH4InstanceArrayMBIntersector4Chunk();
|
||||
intersectors.intersector8 = BVH4InstanceArrayMBIntersector8Chunk();
|
||||
intersectors.intersector16 = BVH4InstanceArrayMBIntersector16Chunk();
|
||||
#endif
|
||||
return intersectors;
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH4Factory::BVH4SubdivPatch1Intersectors(BVH4* bvh)
|
||||
{
|
||||
@@ -1193,6 +1252,35 @@ namespace embree
|
||||
return new AccelInstance(accel,builder,intersectors);
|
||||
}
|
||||
|
||||
Accel* BVH4Factory::BVH4InstanceArray(Scene* scene, BuildVariant bvariant)
|
||||
{
|
||||
BVH4* accel = new BVH4(InstanceArrayPrimitive::type,scene);
|
||||
Accel::Intersectors intersectors = BVH4InstanceArrayIntersectors(accel);
|
||||
auto gtype = Geometry::MTY_INSTANCE_ARRAY;
|
||||
|
||||
Builder* builder = nullptr;
|
||||
if (scene->device->object_builder == "default") {
|
||||
switch (bvariant) {
|
||||
case BuildVariant::STATIC : builder = BVH4InstanceArraySceneBuilderSAH(accel,scene,gtype); break;
|
||||
case BuildVariant::DYNAMIC : builder = BVH4BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false); break;
|
||||
case BuildVariant::HIGH_QUALITY: assert(false); break;
|
||||
}
|
||||
}
|
||||
else if (scene->device->object_builder == "sah") { builder = BVH4InstanceArraySceneBuilderSAH(accel,scene,gtype); }
|
||||
else if (scene->device->object_builder == "dynamic") { builder = BVH4BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false); }
|
||||
else throw_RTCError(RTC_ERROR_INVALID_ARGUMENT,"unknown builder "+scene->device->object_builder+" for BVH4<Object>");
|
||||
|
||||
return new AccelInstance(accel,builder,intersectors);
|
||||
}
|
||||
|
||||
Accel* BVH4Factory::BVH4InstanceArrayMB(Scene* scene)
|
||||
{
|
||||
BVH4* accel = new BVH4(InstanceArrayPrimitive::type,scene);
|
||||
Accel::Intersectors intersectors = BVH4InstanceArrayMBIntersectors(accel);
|
||||
Builder* builder = BVH4InstanceArrayMBSceneBuilderSAH(accel,scene,Geometry::MTY_INSTANCE_ARRAY);
|
||||
return new AccelInstance(accel,builder,intersectors);
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH4Factory::BVH4GridIntersectors(BVH4* bvh, IntersectVariant ivariant)
|
||||
{
|
||||
Accel::Intersectors intersectors;
|
||||
|
||||
@@ -48,6 +48,9 @@ namespace embree
|
||||
Accel* BVH4Instance(Scene* scene, bool isExpensive, BuildVariant bvariant = BuildVariant::STATIC);
|
||||
Accel* BVH4InstanceMB(Scene* scene, bool isExpensive);
|
||||
|
||||
Accel* BVH4InstanceArray(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC);
|
||||
Accel* BVH4InstanceArrayMB(Scene* scene);
|
||||
|
||||
Accel* BVH4Grid(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST);
|
||||
Accel* BVH4GridMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST);
|
||||
|
||||
@@ -77,7 +80,10 @@ namespace embree
|
||||
|
||||
Accel::Intersectors BVH4InstanceIntersectors(BVH4* bvh);
|
||||
Accel::Intersectors BVH4InstanceMBIntersectors(BVH4* bvh);
|
||||
|
||||
|
||||
Accel::Intersectors BVH4InstanceArrayIntersectors(BVH4* bvh);
|
||||
Accel::Intersectors BVH4InstanceArrayMBIntersectors(BVH4* bvh);
|
||||
|
||||
Accel::Intersectors BVH4SubdivPatch1Intersectors(BVH4* bvh);
|
||||
Accel::Intersectors BVH4SubdivPatch1MBIntersectors(BVH4* bvh);
|
||||
|
||||
@@ -122,7 +128,10 @@ namespace embree
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH4InstanceIntersector1);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH4InstanceMBIntersector1);
|
||||
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH4InstanceArrayIntersector1);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH4InstanceArrayMBIntersector1);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH4GridIntersector1Moeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH4GridMBIntersector1Moeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH4GridIntersector1Pluecker);
|
||||
@@ -161,6 +170,9 @@ namespace embree
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH4InstanceIntersector4Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH4InstanceMBIntersector4Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH4InstanceArrayIntersector4Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH4InstanceArrayMBIntersector4Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH4GridIntersector4HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH4GridMBIntersector4HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH4GridIntersector4HybridPluecker);
|
||||
@@ -201,6 +213,9 @@ namespace embree
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH4InstanceIntersector8Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH4InstanceMBIntersector8Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH4InstanceArrayIntersector8Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH4InstanceArrayMBIntersector8Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH4GridIntersector8HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH4GridMBIntersector8HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH4GridIntersector8HybridPluecker);
|
||||
@@ -241,6 +256,9 @@ namespace embree
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH4InstanceIntersector16Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH4InstanceMBIntersector16Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH4InstanceArrayIntersector16Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH4InstanceArrayMBIntersector16Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH4GridIntersector16HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH4GridMBIntersector16HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH4GridIntersector16HybridPluecker);
|
||||
@@ -274,6 +292,9 @@ namespace embree
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4InstanceSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4InstanceMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4InstanceArraySceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4InstanceArrayMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4GridSceneBuilderSAH,void* COMMA Scene* COMMA size_t);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4GridMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t);
|
||||
|
||||
@@ -292,5 +313,6 @@ namespace embree
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelQuadMeshSAH,void* COMMA Scene* COMMA bool);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelVirtualSAH,void* COMMA Scene* COMMA bool);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelInstanceSAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelInstanceArraySAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "../geometry/subdivpatch1.h"
|
||||
#include "../geometry/object.h"
|
||||
#include "../geometry/instance.h"
|
||||
#include "../geometry/instance_array.h"
|
||||
#include "../geometry/subgrid.h"
|
||||
#include "../common/accelinstance.h"
|
||||
|
||||
@@ -66,6 +67,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH8InstanceIntersector1);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH8InstanceMBIntersector1);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH8InstanceArrayIntersector1);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH8InstanceArrayMBIntersector1);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH8GridIntersector1Moeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH8GridMBIntersector1Moeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector1,BVH8GridIntersector1Pluecker);
|
||||
@@ -101,6 +105,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH8InstanceIntersector4Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH8InstanceMBIntersector4Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH8InstanceArrayIntersector4Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH8InstanceArrayMBIntersector4Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH8GridIntersector4HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector4,BVH8GridIntersector4HybridPluecker);
|
||||
|
||||
@@ -135,6 +142,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH8InstanceIntersector8Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH8InstanceMBIntersector8Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH8InstanceArrayIntersector8Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH8InstanceArrayMBIntersector8Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH8GridIntersector8HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector8,BVH8GridIntersector8HybridPluecker);
|
||||
|
||||
@@ -169,6 +179,9 @@ namespace embree
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH8InstanceIntersector16Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH8InstanceMBIntersector16Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH8InstanceArrayIntersector16Chunk);
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH8InstanceArrayMBIntersector16Chunk);
|
||||
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH8GridIntersector16HybridMoeller);
|
||||
DECLARE_SYMBOL2(Accel::Intersector16,BVH8GridIntersector16HybridPluecker);
|
||||
|
||||
@@ -194,6 +207,9 @@ namespace embree
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8InstanceSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8InstanceMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8InstanceArraySceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8InstanceArrayMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8Triangle4SceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8Triangle4vSceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8Quad4vSceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t);
|
||||
@@ -206,6 +222,7 @@ namespace embree
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelQuadMeshSAH,void* COMMA Scene* COMMA bool);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelVirtualSAH,void* COMMA Scene* COMMA bool);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelInstanceSAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
DECLARE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelInstanceArraySAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
|
||||
BVH8Factory::BVH8Factory(int bfeatures, int ifeatures)
|
||||
{
|
||||
@@ -238,6 +255,9 @@ namespace embree
|
||||
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX(features,BVH8InstanceSceneBuilderSAH));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX(features,BVH8InstanceMBSceneBuilderSAH));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX(features,BVH8InstanceArraySceneBuilderSAH));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX(features,BVH8InstanceArrayMBSceneBuilderSAH));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX(features,BVH8GridSceneBuilderSAH));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX(features,BVH8GridMBSceneBuilderSAH));
|
||||
@@ -252,6 +272,7 @@ namespace embree
|
||||
IF_ENABLED_QUADS (SELECT_SYMBOL_INIT_AVX(features,BVH8BuilderTwoLevelQuadMeshSAH));
|
||||
IF_ENABLED_USER (SELECT_SYMBOL_INIT_AVX(features,BVH8BuilderTwoLevelVirtualSAH));
|
||||
IF_ENABLED_INSTANCE (SELECT_SYMBOL_INIT_AVX(features,BVH8BuilderTwoLevelInstanceSAH));
|
||||
IF_ENABLED_INSTANCE_ARRAY (SELECT_SYMBOL_INIT_AVX(features,BVH8BuilderTwoLevelInstanceArraySAH));
|
||||
}
|
||||
|
||||
void BVH8Factory::selectIntersectors(int features)
|
||||
@@ -295,6 +316,9 @@ namespace embree
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceIntersector1));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceMBIntersector1));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceArrayIntersector1));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceArrayMBIntersector1));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8GridIntersector1Moeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8GridMBIntersector1Moeller))
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8GridIntersector1Pluecker));
|
||||
@@ -333,6 +357,9 @@ namespace embree
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceIntersector4Chunk));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceMBIntersector4Chunk));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceArrayIntersector4Chunk));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceArrayMBIntersector4Chunk));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8GridIntersector4HybridMoeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8GridIntersector4HybridPluecker));
|
||||
|
||||
@@ -368,6 +395,9 @@ namespace embree
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceIntersector8Chunk));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceMBIntersector8Chunk));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceArrayIntersector8Chunk));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8InstanceArrayMBIntersector8Chunk));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8GridIntersector8HybridMoeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX_AVX2_AVX512(features,BVH8GridIntersector8HybridPluecker));
|
||||
|
||||
@@ -403,6 +433,9 @@ namespace embree
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX512(features,BVH8InstanceIntersector16Chunk));
|
||||
IF_ENABLED_INSTANCE(SELECT_SYMBOL_INIT_AVX512(features,BVH8InstanceMBIntersector16Chunk));
|
||||
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX512(features,BVH8InstanceArrayIntersector16Chunk));
|
||||
IF_ENABLED_INSTANCE_ARRAY(SELECT_SYMBOL_INIT_AVX512(features,BVH8InstanceArrayMBIntersector16Chunk));
|
||||
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX512(features,BVH8GridIntersector16HybridMoeller));
|
||||
IF_ENABLED_GRIDS(SELECT_SYMBOL_INIT_AVX512(features,BVH8GridIntersector16HybridPluecker));
|
||||
|
||||
@@ -767,6 +800,19 @@ namespace embree
|
||||
return intersectors;
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH8Factory::BVH8InstanceArrayIntersectors(BVH8* bvh)
|
||||
{
|
||||
Accel::Intersectors intersectors;
|
||||
intersectors.ptr = bvh;
|
||||
intersectors.intersector1 = BVH8InstanceArrayIntersector1();
|
||||
#if defined (EMBREE_RAY_PACKETS)
|
||||
intersectors.intersector4 = BVH8InstanceArrayIntersector4Chunk();
|
||||
intersectors.intersector8 = BVH8InstanceArrayIntersector8Chunk();
|
||||
intersectors.intersector16 = BVH8InstanceArrayIntersector16Chunk();
|
||||
#endif
|
||||
return intersectors;
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH8Factory::BVH8InstanceMBIntersectors(BVH8* bvh)
|
||||
{
|
||||
Accel::Intersectors intersectors;
|
||||
@@ -780,6 +826,19 @@ namespace embree
|
||||
return intersectors;
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH8Factory::BVH8InstanceArrayMBIntersectors(BVH8* bvh)
|
||||
{
|
||||
Accel::Intersectors intersectors;
|
||||
intersectors.ptr = bvh;
|
||||
intersectors.intersector1 = BVH8InstanceArrayMBIntersector1();
|
||||
#if defined (EMBREE_RAY_PACKETS)
|
||||
intersectors.intersector4 = BVH8InstanceArrayMBIntersector4Chunk();
|
||||
intersectors.intersector8 = BVH8InstanceArrayMBIntersector8Chunk();
|
||||
intersectors.intersector16 = BVH8InstanceArrayMBIntersector16Chunk();
|
||||
#endif
|
||||
return intersectors;
|
||||
}
|
||||
|
||||
Accel* BVH8Factory::BVH8OBBVirtualCurve8v(Scene* scene, IntersectVariant ivariant)
|
||||
{
|
||||
BVH8* accel = new BVH8(Curve8v::type,scene);
|
||||
@@ -1024,6 +1083,28 @@ namespace embree
|
||||
return new AccelInstance(accel,builder,intersectors);
|
||||
}
|
||||
|
||||
Accel* BVH8Factory::BVH8InstanceArray(Scene* scene, BuildVariant bvariant)
|
||||
{
|
||||
BVH8* accel = new BVH8(InstanceArrayPrimitive::type,scene);
|
||||
Accel::Intersectors intersectors = BVH8InstanceArrayIntersectors(accel);
|
||||
auto gtype = Geometry::MTY_INSTANCE_ARRAY;
|
||||
// Builder* builder = BVH8InstanceSceneBuilderSAH(accel,scene,gtype);
|
||||
|
||||
Builder* builder = nullptr;
|
||||
if (scene->device->object_builder == "default") {
|
||||
switch (bvariant) {
|
||||
case BuildVariant::STATIC : builder = BVH8InstanceArraySceneBuilderSAH(accel,scene,gtype); break;
|
||||
case BuildVariant::DYNAMIC : builder = BVH8BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false); break;
|
||||
case BuildVariant::HIGH_QUALITY: assert(false); break;
|
||||
}
|
||||
}
|
||||
else if (scene->device->object_builder == "sah") builder = BVH8InstanceArraySceneBuilderSAH(accel,scene,gtype);
|
||||
else if (scene->device->object_builder == "dynamic") builder = BVH8BuilderTwoLevelInstanceArraySAH(accel,scene,gtype,false);
|
||||
else throw_RTCError(RTC_ERROR_INVALID_ARGUMENT,"unknown builder "+scene->device->object_builder+" for BVH8<Object>");
|
||||
|
||||
return new AccelInstance(accel,builder,intersectors);
|
||||
}
|
||||
|
||||
Accel* BVH8Factory::BVH8InstanceMB(Scene* scene, bool isExpensive)
|
||||
{
|
||||
BVH8* accel = new BVH8(InstancePrimitive::type,scene);
|
||||
@@ -1033,6 +1114,15 @@ namespace embree
|
||||
return new AccelInstance(accel,builder,intersectors);
|
||||
}
|
||||
|
||||
Accel* BVH8Factory::BVH8InstanceArrayMB(Scene* scene)
|
||||
{
|
||||
BVH8* accel = new BVH8(InstanceArrayPrimitive::type,scene);
|
||||
Accel::Intersectors intersectors = BVH8InstanceArrayMBIntersectors(accel);
|
||||
auto gtype = Geometry::MTY_INSTANCE_ARRAY;
|
||||
Builder* builder = BVH8InstanceArrayMBSceneBuilderSAH(accel,scene,gtype);
|
||||
return new AccelInstance(accel,builder,intersectors);
|
||||
}
|
||||
|
||||
Accel::Intersectors BVH8Factory::BVH8GridIntersectors(BVH8* bvh, IntersectVariant ivariant)
|
||||
{
|
||||
Accel::Intersectors intersectors;
|
||||
|
||||
@@ -39,6 +39,9 @@ namespace embree
|
||||
Accel* BVH8Instance(Scene* scene, bool isExpensive, BuildVariant bvariant = BuildVariant::STATIC);
|
||||
Accel* BVH8InstanceMB(Scene* scene, bool isExpensive);
|
||||
|
||||
Accel* BVH8InstanceArray(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC);
|
||||
Accel* BVH8InstanceArrayMB(Scene* scene);
|
||||
|
||||
Accel* BVH8Grid(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST);
|
||||
Accel* BVH8GridMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST);
|
||||
|
||||
@@ -70,6 +73,9 @@ namespace embree
|
||||
Accel::Intersectors BVH8InstanceIntersectors(BVH8* bvh);
|
||||
Accel::Intersectors BVH8InstanceMBIntersectors(BVH8* bvh);
|
||||
|
||||
Accel::Intersectors BVH8InstanceArrayIntersectors(BVH8* bvh);
|
||||
Accel::Intersectors BVH8InstanceArrayMBIntersectors(BVH8* bvh);
|
||||
|
||||
Accel::Intersectors BVH8GridIntersectors(BVH8* bvh, IntersectVariant ivariant);
|
||||
Accel::Intersectors BVH8GridMBIntersectors(BVH8* bvh, IntersectVariant ivariant);
|
||||
|
||||
@@ -111,6 +117,9 @@ namespace embree
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH8InstanceIntersector1);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH8InstanceMBIntersector1);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH8InstanceArrayIntersector1);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH8InstanceArrayMBIntersector1);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH8GridIntersector1Moeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH8GridMBIntersector1Moeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector1,BVH8GridIntersector1Pluecker);
|
||||
@@ -145,7 +154,10 @@ namespace embree
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH8InstanceIntersector4Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH8InstanceMBIntersector4Chunk);
|
||||
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH8InstanceArrayIntersector4Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH8InstanceArrayMBIntersector4Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH8GridIntersector4HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector4,BVH8GridIntersector4HybridPluecker);
|
||||
|
||||
@@ -180,9 +192,12 @@ namespace embree
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH8InstanceIntersector8Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH8InstanceMBIntersector8Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH8InstanceArrayIntersector8Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH8InstanceArrayMBIntersector8Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH8GridIntersector8HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector8,BVH8GridIntersector8HybridPluecker);
|
||||
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8OBBVirtualCurveIntersector16Hybrid);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8OBBVirtualCurveIntersector16HybridMB);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8OBBVirtualCurveIntersectorRobust16Hybrid);
|
||||
@@ -213,7 +228,10 @@ namespace embree
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8InstanceIntersector16Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8InstanceMBIntersector16Chunk);
|
||||
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8InstanceArrayIntersector16Chunk);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8InstanceArrayMBIntersector16Chunk);
|
||||
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8GridIntersector16HybridMoeller);
|
||||
DEFINE_SYMBOL2(Accel::Intersector16,BVH8GridIntersector16HybridPluecker);
|
||||
|
||||
@@ -240,6 +258,9 @@ namespace embree
|
||||
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8InstanceSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8InstanceMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8InstanceArraySceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8InstanceArrayMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask);
|
||||
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8GridSceneBuilderSAH,void* COMMA Scene* COMMA size_t);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8GridMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t);
|
||||
@@ -258,5 +279,6 @@ namespace embree
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelQuadMeshSAH,void* COMMA Scene* COMMA bool);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelVirtualSAH,void* COMMA Scene* COMMA bool);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelInstanceSAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelInstanceArraySAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "../geometry/quadi.h"
|
||||
#include "../geometry/object.h"
|
||||
#include "../geometry/instance.h"
|
||||
#include "../geometry/instance_array.h"
|
||||
|
||||
#if defined(__64BIT__)
|
||||
# define ROTATE_TREE 1 // specifies number of tree rotation rounds to perform
|
||||
@@ -399,6 +400,50 @@ namespace embree
|
||||
unsigned int geomID_ = std::numeric_limits<unsigned int>::max();
|
||||
};
|
||||
|
||||
template<int N>
|
||||
struct CreateMortonLeaf<N,InstanceArrayPrimitive>
|
||||
{
|
||||
typedef BVHN<N> BVH;
|
||||
typedef typename BVH::NodeRef NodeRef;
|
||||
typedef typename BVH::NodeRecord NodeRecord;
|
||||
|
||||
__forceinline CreateMortonLeaf (InstanceArray* mesh, unsigned int geomID, BVHBuilderMorton::BuildPrim* morton)
|
||||
: mesh(mesh), morton(morton), geomID_(geomID) {}
|
||||
|
||||
__noinline NodeRecord operator() (const range<unsigned>& current, const FastAllocator::CachedAllocator& alloc)
|
||||
{
|
||||
vfloat4 lower(pos_inf);
|
||||
vfloat4 upper(neg_inf);
|
||||
size_t items = current.size();
|
||||
size_t start = current.begin();
|
||||
assert(items <= 1);
|
||||
|
||||
/* allocate leaf node */
|
||||
InstanceArrayPrimitive* accel = (InstanceArrayPrimitive*) alloc.malloc1(items*sizeof(InstanceArrayPrimitive),BVH::byteAlignment);
|
||||
NodeRef ref = BVH::encodeLeaf((char*)accel,items);
|
||||
const InstanceArray* instance = this->mesh;
|
||||
|
||||
BBox3fa bounds = empty;
|
||||
for (size_t i=0; i<items; i++)
|
||||
{
|
||||
const unsigned int primID = morton[start+i].index;
|
||||
bounds.extend(instance->bounds(primID));
|
||||
new (&accel[i]) InstanceArrayPrimitive(geomID_, primID);
|
||||
}
|
||||
|
||||
BBox3fx box_o = (BBox3fx&)bounds;
|
||||
#if ROTATE_TREE
|
||||
if (N == 4)
|
||||
box_o.lower.a = current.size();
|
||||
#endif
|
||||
return NodeRecord(ref,box_o);
|
||||
}
|
||||
private:
|
||||
InstanceArray* mesh;
|
||||
BVHBuilderMorton::BuildPrim* morton;
|
||||
unsigned int geomID_ = std::numeric_limits<unsigned int>::max();
|
||||
};
|
||||
|
||||
template<typename Mesh>
|
||||
struct CalculateMeshBounds
|
||||
{
|
||||
@@ -523,7 +568,14 @@ namespace embree
|
||||
#if defined(EMBREE_GEOMETRY_INSTANCE)
|
||||
Builder* BVH4InstanceMeshBuilderMortonGeneral (void* bvh, Instance* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) { return new class BVHNMeshBuilderMorton<4,Instance,InstancePrimitive>((BVH4*)bvh,mesh,gtype,geomID,1,BVH4::maxLeafBlocks); }
|
||||
#if defined(__AVX__)
|
||||
Builder* BVH8InstanceMeshBuilderMortonGeneral (void* bvh, Instance* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) { return new class BVHNMeshBuilderMorton<8,Instance,InstancePrimitive>((BVH8*)bvh,mesh,gtype,geomID,1,BVH4::maxLeafBlocks); }
|
||||
Builder* BVH8InstanceMeshBuilderMortonGeneral (void* bvh, Instance* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) { return new class BVHNMeshBuilderMorton<8,Instance,InstancePrimitive>((BVH8*)bvh,mesh,gtype,geomID,1,BVH4::maxLeafBlocks); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(EMBREE_GEOMETRY_INSTANCE_ARRAY)
|
||||
Builder* BVH4InstanceArrayMeshBuilderMortonGeneral (void* bvh, InstanceArray* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) { return new class BVHNMeshBuilderMorton<4,InstanceArray,InstanceArrayPrimitive>((BVH4*)bvh,mesh,gtype,geomID,1,BVH4::maxLeafBlocks); }
|
||||
#if defined(__AVX__)
|
||||
Builder* BVH8InstanceArrayMeshBuilderMortonGeneral (void* bvh, InstanceArray* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) { return new class BVHNMeshBuilderMorton<8,InstanceArray,InstanceArrayPrimitive>((BVH8*)bvh,mesh,gtype,geomID,1,BVH4::maxLeafBlocks); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "../geometry/quadi.h"
|
||||
#include "../geometry/object.h"
|
||||
#include "../geometry/instance.h"
|
||||
#include "../geometry/instance_array.h"
|
||||
#include "../geometry/subgrid.h"
|
||||
|
||||
#include "../common/state.h"
|
||||
@@ -150,7 +151,7 @@ namespace embree
|
||||
const size_t leaf_bytes = size_t(1.2*Primitive::blocks(numPrimitives)*sizeof(Primitive));
|
||||
bvh->alloc.init_estimate(node_bytes+leaf_bytes);
|
||||
settings.singleThreadThreshold = bvh->alloc.fixSingleThreadThreshold(N,DEFAULT_SINGLE_THREAD_THRESHOLD,numPrimitives,node_bytes+leaf_bytes);
|
||||
prims.resize(numPrimitives);
|
||||
prims.resize(numPrimitives);
|
||||
|
||||
PrimInfo pinfo = mesh ?
|
||||
createPrimRefArray(mesh,geomID_,numPrimitives,prims,bvh->scene->progressInterface) :
|
||||
@@ -518,14 +519,35 @@ namespace embree
|
||||
#endif
|
||||
|
||||
#if defined(EMBREE_GEOMETRY_INSTANCE)
|
||||
Builder* BVH4InstanceSceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) { return new BVHNBuilderSAH<4,InstancePrimitive>((BVH4*)bvh,scene,4,1.0f,1,1,gtype); }
|
||||
Builder* BVH4InstanceSceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) {
|
||||
return new BVHNBuilderSAH<4,InstancePrimitive>((BVH4*)bvh,scene,4,1.0f,1,1,gtype);
|
||||
}
|
||||
Builder* BVH4InstanceMeshBuilderSAH (void* bvh, Instance* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) {
|
||||
return new BVHNBuilderSAH<4,InstancePrimitive>((BVH4*)bvh,mesh,geomID,4,1.0f,1,inf,gtype);
|
||||
}
|
||||
#if defined(__AVX__)
|
||||
Builder* BVH8InstanceSceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) { return new BVHNBuilderSAH<8,InstancePrimitive>((BVH8*)bvh,scene,8,1.0f,1,1,gtype); }
|
||||
Builder* BVH8InstanceSceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) {
|
||||
return new BVHNBuilderSAH<8,InstancePrimitive>((BVH8*)bvh,scene,8,1.0f,1,1,gtype);
|
||||
}
|
||||
Builder* BVH8InstanceMeshBuilderSAH (void* bvh, Instance* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) {
|
||||
return new BVHNBuilderSAH<8,InstancePrimitive>((BVH8*)bvh,mesh,geomID,8,1.0f,1,inf,gtype);
|
||||
return new BVHNBuilderSAH<8,InstancePrimitive>((BVH8*)bvh,mesh,geomID,8,1.0f,1,1,gtype);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(EMBREE_GEOMETRY_INSTANCE_ARRAY)
|
||||
Builder* BVH4InstanceArraySceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) {
|
||||
return new BVHNBuilderSAH<4,InstanceArrayPrimitive>((BVH4*)bvh,scene,4,1.0f,1,1,gtype);
|
||||
}
|
||||
Builder* BVH4InstanceArrayMeshBuilderSAH (void* bvh, InstanceArray* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) {
|
||||
return new BVHNBuilderSAH<4,InstanceArrayPrimitive>((BVH4*)bvh,mesh,geomID,4,1.0f,1,1,gtype);
|
||||
}
|
||||
#if defined(__AVX__)
|
||||
Builder* BVH8InstanceArraySceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) {
|
||||
return new BVHNBuilderSAH<8,InstanceArrayPrimitive>((BVH8*)bvh,scene,8,1.0f,1,1,gtype);
|
||||
}
|
||||
Builder* BVH8InstanceArrayMeshBuilderSAH (void* bvh, InstanceArray* mesh, Geometry::GTypeMask gtype, unsigned int geomID, size_t mode) {
|
||||
return new BVHNBuilderSAH<8,InstanceArrayPrimitive>((BVH8*)bvh,mesh,geomID,8,1.0f,1,1,gtype);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "../geometry/quadi.h"
|
||||
#include "../geometry/object.h"
|
||||
#include "../geometry/instance.h"
|
||||
#include "../geometry/instance_array.h"
|
||||
#include "../geometry/subgrid.h"
|
||||
|
||||
#include "../common/state.h"
|
||||
@@ -695,6 +696,13 @@ namespace embree
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(EMBREE_GEOMETRY_INSTANCE_ARRAY)
|
||||
Builder* BVH4InstanceArrayMBSceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) { return new BVHNBuilderMBlurSAH<4,InstanceArray,InstanceArrayPrimitive>((BVH4*)bvh,scene,4,1.0f,1,1,gtype); }
|
||||
#if defined(__AVX__)
|
||||
Builder* BVH8InstanceArrayMBSceneBuilderSAH (void* bvh, Scene* scene, Geometry::GTypeMask gtype) { return new BVHNBuilderMBlurSAH<8,InstanceArray,InstanceArrayPrimitive>((BVH8*)bvh,scene,8,1.0f,1,1,gtype); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(EMBREE_GEOMETRY_GRID)
|
||||
Builder* BVH4GridMBSceneBuilderSAH (void* bvh, Scene* scene, size_t mode) { return new BVHNBuilderMBlurSAHGrid<4>((BVH4*)bvh,scene,4,1.0f,4,4); }
|
||||
#if defined(__AVX__)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user