ernie-renderer 0.2.0.dev5__tar.gz → 0.2.0.dev13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ernie-renderer might be problematic. Click here for more details.
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.dockerignore +2 -1
- ernie_renderer-0.2.0.dev13/.gitattributes +15 -0
- ernie_renderer-0.2.0.dev13/.github/scripts/coverage_badge.py +37 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.github/workflows/ci.yml +107 -7
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.gitignore +4 -2
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.pre-commit-config.yaml +5 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/CMakeLists.txt +21 -2
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/CMakePresets.json +28 -5
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/PKG-INFO +3 -2
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/README.md +1 -0
- ernie_renderer-0.2.0.dev13/cmake/ErnieFetch.cmake +41 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/ErnieTesting.cmake +10 -0
- ernie_renderer-0.2.0.dev13/cmake/third_party/bc7enc.cmake +26 -0
- ernie_renderer-0.2.0.dev13/cmake/third_party/dlpack.cmake +13 -0
- ernie_renderer-0.2.0.dev13/cmake/third_party/glm.cmake +13 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/googletest.cmake +3 -6
- ernie_renderer-0.2.0.dev13/cmake/third_party/json.cmake +12 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/nanobind.cmake +2 -4
- ernie_renderer-0.2.0.dev13/cmake/third_party/openexr.cmake +71 -0
- ernie_renderer-0.2.0.dev13/cmake/third_party/stb.cmake +28 -0
- ernie_renderer-0.2.0.dev13/cmake/third_party/tracy.cmake +25 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/volk.cmake +2 -6
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/third_party/vulkan_headers.cmake +3 -6
- ernie_renderer-0.2.0.dev13/docs/README.md +7 -0
- ernie_renderer-0.2.0.dev13/docs/index.md +1 -0
- ernie_renderer-0.2.0.dev13/docs/requirements.txt +1 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/app/main.cpp +1 -1
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/device/CMakeLists.txt +1 -1
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/device/vulkan_devices.cpp +4 -4
- ernie_renderer-0.2.0.dev13/ernie/io/CMakeLists.txt +22 -0
- ernie_renderer-0.2.0.dev13/ernie/io/ies.cpp +229 -0
- ernie_renderer-0.2.0.dev13/ernie/io/ies.h +119 -0
- ernie_renderer-0.2.0.dev13/ernie/io/image.cpp +312 -0
- ernie_renderer-0.2.0.dev13/ernie/io/image.h +144 -0
- ernie_renderer-0.2.0.dev13/ernie/io/nanovdb.cpp +651 -0
- ernie_renderer-0.2.0.dev13/ernie/io/nanovdb.h +176 -0
- ernie_renderer-0.2.0.dev13/ernie/io/raster.cpp +1352 -0
- ernie_renderer-0.2.0.dev13/ernie/io/raster.h +593 -0
- ernie_renderer-0.2.0.dev13/ernie/io/texture.cpp +1478 -0
- ernie_renderer-0.2.0.dev13/ernie/io/texture.h +406 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/CMakeLists.txt +14 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/astronomy.cpp +142 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/astronomy.h +110 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/atmosphere.cpp +451 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/atmosphere.h +330 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/cloud.cpp +580 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/cloud.h +223 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/constants.h +26 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/reflectance_library.cpp +48 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/reflectance_library.h +47 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/reflectance_table.h +5596 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/regolith.cpp +302 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/regolith.h +160 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/scattering.cpp +371 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/scattering.h +284 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/solar.cpp +38 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/solar.h +30 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/solar_table.h +3069 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/spectrum.cpp +546 -0
- ernie_renderer-0.2.0.dev13/ernie/physics/spectrum.h +270 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/python/CMakeLists.txt +5 -1
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/python/module.cpp +1 -1
- ernie_renderer-0.2.0.dev13/ernie/util/CMakeLists.txt +28 -0
- ernie_renderer-0.2.0.dev13/ernie/util/bytes.h +78 -0
- ernie_renderer-0.2.0.dev13/ernie/util/disk_cache.cpp +94 -0
- ernie_renderer-0.2.0.dev13/ernie/util/disk_cache.h +59 -0
- ernie_renderer-0.2.0.dev13/ernie/util/file.cpp +40 -0
- ernie_renderer-0.2.0.dev13/ernie/util/file.h +26 -0
- ernie_renderer-0.2.0.dev13/ernie/util/linear_algebra.h +125 -0
- ernie_renderer-0.2.0.dev13/ernie/util/log.cpp +65 -0
- ernie_renderer-0.2.0.dev13/ernie/util/log.h +40 -0
- ernie_renderer-0.2.0.dev13/ernie/util/mapped_file.cpp +98 -0
- ernie_renderer-0.2.0.dev13/ernie/util/mapped_file.h +39 -0
- ernie_renderer-0.2.0.dev13/ernie/util/math.h +97 -0
- ernie_renderer-0.2.0.dev13/ernie/util/noise.cpp +160 -0
- ernie_renderer-0.2.0.dev13/ernie/util/noise.h +87 -0
- ernie_renderer-0.2.0.dev13/ernie/util/numbers.h +41 -0
- ernie_renderer-0.2.0.dev13/ernie/util/parallel.h +38 -0
- ernie_renderer-0.2.0.dev13/ernie/util/profile.h +45 -0
- ernie_renderer-0.2.0.dev13/ernie/util/profile_report.cpp +242 -0
- ernie_renderer-0.2.0.dev13/ernie/util/profile_report.h +110 -0
- ernie_renderer-0.2.0.dev13/ernie/util/profiler.cpp +189 -0
- ernie_renderer-0.2.0.dev13/ernie/util/profiler.h +125 -0
- ernie_renderer-0.2.0.dev13/ernie/util/random.h +126 -0
- ernie_renderer-0.2.0.dev13/ernie/util/tensor.cpp +330 -0
- ernie_renderer-0.2.0.dev13/ernie/util/tensor.h +249 -0
- ernie_renderer-0.2.0.dev13/ernie/util/text.h +100 -0
- ernie_renderer-0.2.0.dev13/ernie/util/version.cpp +37 -0
- ernie_renderer-0.2.0.dev13/ernie/util/version.h +26 -0
- ernie_renderer-0.2.0.dev13/ernie/util/worker_pool.h +97 -0
- ernie_renderer-0.2.0.dev13/mkdocs.yml +21 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/pyproject.toml +7 -5
- ernie_renderer-0.2.0.dev13/tests/CMakeLists.txt +78 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/exr/README.md +5 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/exr/make_exr.py +110 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/exr/rgb_float_zip.exr +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/exr/rgba_half_window.exr +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/exr/y_half_zips.exr +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ies/README.md +4 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ies/downlight_quadrant.ies +14 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ies/floodlight_type_b.ies +16 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ies/lamp.tilt +4 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/images/grey16.png +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/README.md +13 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/quadrants_etc1s.ktx2 +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/quadrants_uastc_zstd.ktx2 +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/tilted_normal_etc1s.ktx2 +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/ktx2/tilted_normal_uastc.ktx2 +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/README.md +8 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/float_deflate_predictor3.tif +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/float_raw.tif +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/int16_bigtiff_bigendian.tif +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_lzw_predictor2.tif +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_planar_lzw.tif +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_planar_raw.tif +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/tiff/rgb_tiled_deflate.tif +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/volumes/cube.nvdb +0 -0
- ernie_renderer-0.2.0.dev13/tests/fixtures/volumes/make_nvdb.py +38 -0
- ernie_renderer-0.2.0.dev13/tests/io/ies_test.cpp +223 -0
- ernie_renderer-0.2.0.dev13/tests/io/image_test.cpp +310 -0
- ernie_renderer-0.2.0.dev13/tests/io/nanovdb_test.cpp +190 -0
- ernie_renderer-0.2.0.dev13/tests/io/raster_test.cpp +501 -0
- ernie_renderer-0.2.0.dev13/tests/io/texture_test.cpp +755 -0
- ernie_renderer-0.2.0.dev13/tests/physics/astronomy_test.cpp +66 -0
- ernie_renderer-0.2.0.dev13/tests/physics/atmosphere_test.cpp +239 -0
- ernie_renderer-0.2.0.dev13/tests/physics/cloud_test.cpp +201 -0
- ernie_renderer-0.2.0.dev13/tests/physics/reflectance_library_test.cpp +50 -0
- ernie_renderer-0.2.0.dev13/tests/physics/regolith_test.cpp +110 -0
- ernie_renderer-0.2.0.dev13/tests/physics/scattering_test.cpp +266 -0
- ernie_renderer-0.2.0.dev13/tests/physics/solar_test.cpp +47 -0
- ernie_renderer-0.2.0.dev13/tests/physics/spectrum_test.cpp +178 -0
- ernie_renderer-0.2.0.dev13/tests/util/bytes_test.cpp +59 -0
- ernie_renderer-0.2.0.dev13/tests/util/disk_cache_test.cpp +65 -0
- ernie_renderer-0.2.0.dev13/tests/util/file_test.cpp +41 -0
- ernie_renderer-0.2.0.dev13/tests/util/linear_algebra_test.cpp +52 -0
- ernie_renderer-0.2.0.dev13/tests/util/log_test.cpp +35 -0
- ernie_renderer-0.2.0.dev13/tests/util/mapped_file_test.cpp +50 -0
- ernie_renderer-0.2.0.dev13/tests/util/math_test.cpp +66 -0
- ernie_renderer-0.2.0.dev13/tests/util/noise_test.cpp +85 -0
- ernie_renderer-0.2.0.dev13/tests/util/parallel_test.cpp +29 -0
- ernie_renderer-0.2.0.dev13/tests/util/profile_report_test.cpp +120 -0
- ernie_renderer-0.2.0.dev13/tests/util/profiler_test.cpp +62 -0
- ernie_renderer-0.2.0.dev13/tests/util/random_test.cpp +140 -0
- ernie_renderer-0.2.0.dev13/tests/util/tensor_test.cpp +236 -0
- ernie_renderer-0.2.0.dev13/tests/util/text_test.cpp +42 -0
- ernie_renderer-0.2.0.dev13/tests/util/version_test.cpp +26 -0
- ernie_renderer-0.2.0.dev13/tests/util/worker_pool_test.cpp +69 -0
- ernie_renderer-0.2.0.dev13/third_party/CMakeLists.txt +20 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSE +201 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/Apache-2.0.txt +208 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/BSD-3-clause.txt +96 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/LICENSES/MIT.txt +47 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/NOTICE +15 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/README.md +3 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu.h +821 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_cfgs.inl +648 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_hdr_core.h +211 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_astc_helpers.h +5335 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_containers.h +4354 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_containers_impl.h +818 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_dds_transcoder.inl +1372 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_etc1_mods.inl +258 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_file_headers.h +264 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_idct.h +1446 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder.cpp +45962 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder.h +1786 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_internal.h +4044 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_astc.inc +481 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_astc_0_255.inc +481 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_atc_55.inc +481 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_atc_56.inc +481 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_alpha.inc +49 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_bc7_m5_color.inc +481 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_5.inc +494 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_dxt1_6.inc +494 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_45.inc +481 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_tables_pvrtc2_alpha_33.inc +481 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_transcoder_uastc.h +289 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_xbc7_decoder.h +1467 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/transcoder/basisu_xbc7_decoder.inl +1515 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/LICENSE +30 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/zstd.h +3198 -0
- ernie_renderer-0.2.0.dev13/third_party/basisu/zstd/zstd_errors.h +107 -0
- ernie_renderer-0.2.0.dev13/third_party/nanovdb/LICENSE +176 -0
- ernie_renderer-0.2.0.dev13/third_party/nanovdb/PNanoVDB.h +3590 -0
- ernie_renderer-0.2.0.dev5/.gitattributes +0 -2
- ernie_renderer-0.2.0.dev5/ernie/core/CMakeLists.txt +0 -5
- ernie_renderer-0.2.0.dev5/ernie/core/version.cpp +0 -12
- ernie_renderer-0.2.0.dev5/ernie/core/version.h +0 -14
- ernie_renderer-0.2.0.dev5/ernie/io/CMakeLists.txt +0 -3
- ernie_renderer-0.2.0.dev5/ernie/physics/CMakeLists.txt +0 -3
- ernie_renderer-0.2.0.dev5/ernie/test/CMakeLists.txt +0 -29
- ernie_renderer-0.2.0.dev5/ernie/test/core/version_test.cpp +0 -14
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.clang-format +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.clang-tidy +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.gersemirc +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/.github/scripts/install-lavapipe-windows.sh +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/Dockerfile +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/LICENSE +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/cmake/ErniePackaging.cmake +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/app/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/device/vulkan_devices.h +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/graph/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/python/ernie/__init__.py +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/render/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev5 → ernie_renderer-0.2.0.dev13}/ernie/scene/CMakeLists.txt +0 -0
- {ernie_renderer-0.2.0.dev5/ernie/test → ernie_renderer-0.2.0.dev13/tests}/device/vulkan_devices_test.cpp +0 -0
- {ernie_renderer-0.2.0.dev5/ernie/test → ernie_renderer-0.2.0.dev13/tests}/python/test_package.py +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
* text=auto eol=lf
|
|
2
|
+
*.sh text eol=lf
|
|
3
|
+
|
|
4
|
+
# Binary formats, never normalised or diffed as text whatever their bytes look like.
|
|
5
|
+
*.dds binary
|
|
6
|
+
*.exr binary
|
|
7
|
+
*.img binary
|
|
8
|
+
*.jpeg binary
|
|
9
|
+
*.jpg binary
|
|
10
|
+
*.ktx2 binary
|
|
11
|
+
*.nvdb binary
|
|
12
|
+
*.png binary
|
|
13
|
+
*.tif binary
|
|
14
|
+
*.tiff binary
|
|
15
|
+
*.vdb binary
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
"""Writes a shields.io endpoint badge and a job summary from gcovr's JSON summary."""
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
import os
|
|
6
|
+
import sys
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def badge_colour(percent: float) -> str:
|
|
11
|
+
if percent >= 80.0:
|
|
12
|
+
return "brightgreen"
|
|
13
|
+
if percent >= 70.0:
|
|
14
|
+
return "green"
|
|
15
|
+
if percent >= 60.0:
|
|
16
|
+
return "yellow"
|
|
17
|
+
return "red"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def main(report: Path) -> None:
|
|
21
|
+
summary = json.loads((report / "summary.json").read_text())
|
|
22
|
+
lines = summary["line_percent"]
|
|
23
|
+
branches = summary["branch_percent"]
|
|
24
|
+
badge = {
|
|
25
|
+
"schemaVersion": 1,
|
|
26
|
+
"label": "coverage",
|
|
27
|
+
"message": f"{lines:.1f}%",
|
|
28
|
+
"color": badge_colour(lines),
|
|
29
|
+
}
|
|
30
|
+
(report / "badge.json").write_text(json.dumps(badge))
|
|
31
|
+
if step_summary := os.environ.get("GITHUB_STEP_SUMMARY"):
|
|
32
|
+
with open(step_summary, "a") as out:
|
|
33
|
+
out.write(f"### Coverage\n\nLines {lines:.1f}%, branches {branches:.1f}%\n")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
if __name__ == "__main__":
|
|
37
|
+
main(Path(sys.argv[1]))
|
|
@@ -80,13 +80,12 @@ jobs:
|
|
|
80
80
|
# MSVC on the path for the Ninja generator.
|
|
81
81
|
- uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
|
|
82
82
|
if: runner.os == 'Windows'
|
|
83
|
-
# Fetched dependencies' sources, keyed on their pins
|
|
83
|
+
# Fetched dependencies' sources (ERNIE_DEPS_DIR), keyed on their pins; they are built in the
|
|
84
|
+
# build tree, so compiled objects are not cached.
|
|
84
85
|
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
85
86
|
with:
|
|
86
|
-
path:
|
|
87
|
-
|
|
88
|
-
.deps/*-subbuild
|
|
89
|
-
key: deps-${{ runner.os }}-${{ hashFiles('cmake/third_party/**') }}
|
|
87
|
+
path: .deps
|
|
88
|
+
key: deps-${{ runner.os }}-${{ hashFiles('cmake/ErnieFetch.cmake', 'cmake/third_party/**') }}
|
|
90
89
|
- name: Configure
|
|
91
90
|
shell: bash
|
|
92
91
|
run: >
|
|
@@ -156,19 +155,120 @@ jobs:
|
|
|
156
155
|
- name: Test
|
|
157
156
|
run: ctest --preset ci -j4
|
|
158
157
|
|
|
158
|
+
# Line and branch coverage of the C++ library from every test on Linux and lavapipe.
|
|
159
|
+
coverage:
|
|
160
|
+
needs: version
|
|
161
|
+
runs-on: ubuntu-24.04
|
|
162
|
+
timeout-minutes: 60
|
|
163
|
+
env:
|
|
164
|
+
ERNIE_TEST_REQUIRE_VULKAN: "1"
|
|
165
|
+
steps:
|
|
166
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
167
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
168
|
+
with:
|
|
169
|
+
python-version: "3.12"
|
|
170
|
+
- run: python -m pip install nanobind ninja pytest gcovr
|
|
171
|
+
- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
172
|
+
with:
|
|
173
|
+
path: .deps
|
|
174
|
+
key: deps-${{ runner.os }}-${{ hashFiles('cmake/ErnieFetch.cmake', 'cmake/third_party/**') }}
|
|
175
|
+
- name: Install lavapipe
|
|
176
|
+
run: |
|
|
177
|
+
sudo apt-get update
|
|
178
|
+
sudo apt-get install -y mesa-vulkan-drivers libvulkan1
|
|
179
|
+
icd=$(find /usr/share/vulkan/icd.d -name 'lvp_icd*.json' | head -n1)
|
|
180
|
+
echo "VK_DRIVER_FILES=$icd" >> "$GITHUB_ENV"
|
|
181
|
+
echo "VK_ICD_FILENAMES=$icd" >> "$GITHUB_ENV"
|
|
182
|
+
- name: Configure
|
|
183
|
+
run: >
|
|
184
|
+
cmake --preset coverage
|
|
185
|
+
"-DPython_EXECUTABLE=$(python -c 'import sys; print(sys.executable)')"
|
|
186
|
+
-DERNIE_TEST_PYTHON=python
|
|
187
|
+
- name: Build
|
|
188
|
+
run: cmake --build --preset coverage --parallel 4
|
|
189
|
+
- name: Test
|
|
190
|
+
run: ctest --preset coverage -j4
|
|
191
|
+
- name: Report
|
|
192
|
+
run: |
|
|
193
|
+
mkdir -p coverage
|
|
194
|
+
gcovr --root . --filter 'ernie/' --exclude '.*_table\.h' \
|
|
195
|
+
--object-directory build/coverage \
|
|
196
|
+
--html-details coverage/index.html --json-summary coverage/summary.json --print-summary
|
|
197
|
+
python .github/scripts/coverage_badge.py coverage
|
|
198
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
199
|
+
with:
|
|
200
|
+
name: coverage
|
|
201
|
+
path: coverage
|
|
202
|
+
retention-days: 14
|
|
203
|
+
|
|
204
|
+
# The documentation, built strictly so broken links and warnings fail.
|
|
205
|
+
docs:
|
|
206
|
+
runs-on: ubuntu-24.04
|
|
207
|
+
timeout-minutes: 10
|
|
208
|
+
steps:
|
|
209
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
210
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
211
|
+
with:
|
|
212
|
+
python-version: "3.12"
|
|
213
|
+
- run: python -m pip install -r docs/requirements.txt
|
|
214
|
+
- run: mkdocs build --strict
|
|
215
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
216
|
+
with:
|
|
217
|
+
name: docs
|
|
218
|
+
path: site
|
|
219
|
+
retention-days: 14
|
|
220
|
+
|
|
221
|
+
# The project site on GitHub Pages, from main: the docs, with the coverage report and its badge
|
|
222
|
+
# under coverage/.
|
|
223
|
+
# The site follows main whenever its docs build, so a failing test elsewhere never takes it down;
|
|
224
|
+
# the coverage report is included when the coverage job passed.
|
|
225
|
+
pages:
|
|
226
|
+
needs: [docs, coverage]
|
|
227
|
+
if: >
|
|
228
|
+
always() && github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
229
|
+
&& needs.docs.result == 'success'
|
|
230
|
+
runs-on: ubuntu-24.04
|
|
231
|
+
timeout-minutes: 10
|
|
232
|
+
permissions:
|
|
233
|
+
pages: write
|
|
234
|
+
id-token: write
|
|
235
|
+
environment:
|
|
236
|
+
name: github-pages
|
|
237
|
+
url: ${{ steps.deploy.outputs.page_url }}
|
|
238
|
+
steps:
|
|
239
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
240
|
+
with:
|
|
241
|
+
name: docs
|
|
242
|
+
path: site
|
|
243
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
244
|
+
if: needs.coverage.result == 'success'
|
|
245
|
+
with:
|
|
246
|
+
name: coverage
|
|
247
|
+
path: site/coverage
|
|
248
|
+
- uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
|
|
249
|
+
with:
|
|
250
|
+
path: site
|
|
251
|
+
- id: deploy
|
|
252
|
+
uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
|
|
253
|
+
|
|
159
254
|
wheel:
|
|
160
|
-
name: wheel (${{ matrix.platform }})
|
|
255
|
+
name: wheel (${{ matrix.platform }}, ${{ matrix.python }})
|
|
161
256
|
needs: version
|
|
162
257
|
runs-on: ${{ matrix.runner }}
|
|
163
258
|
timeout-minutes: 45
|
|
164
259
|
strategy:
|
|
165
260
|
fail-fast: false
|
|
166
261
|
matrix:
|
|
262
|
+
# cp312 is the stable-ABI wheel for every CPython from 3.12.
|
|
263
|
+
python: [cp310, cp311, cp312]
|
|
264
|
+
platform: [linux-x86_64, linux-aarch64, windows-amd64, macos-arm64]
|
|
167
265
|
include:
|
|
168
266
|
- { platform: linux-x86_64, runner: ubuntu-24.04 }
|
|
169
267
|
- { platform: linux-aarch64, runner: ubuntu-24.04-arm }
|
|
170
268
|
- { platform: windows-amd64, runner: windows-2025 }
|
|
171
269
|
- { platform: macos-arm64, runner: macos-15 }
|
|
270
|
+
env:
|
|
271
|
+
CIBW_BUILD: ${{ matrix.python }}-*
|
|
172
272
|
steps:
|
|
173
273
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
174
274
|
- name: Version
|
|
@@ -183,7 +283,7 @@ jobs:
|
|
|
183
283
|
output-dir: wheelhouse
|
|
184
284
|
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
185
285
|
with:
|
|
186
|
-
name: wheel-${{ matrix.platform }}
|
|
286
|
+
name: wheel-${{ matrix.platform }}-${{ matrix.python }}
|
|
187
287
|
path: wheelhouse/*.whl
|
|
188
288
|
|
|
189
289
|
# The sdist, then a wheel built from it and imported, as pip does for platforms without wheels.
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# Vendored sources stay byte for byte as their upstream release.
|
|
2
|
+
exclude: ^third_party/(basisu|nanovdb)/
|
|
3
|
+
|
|
1
4
|
repos:
|
|
2
5
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
6
|
rev: v6.0.0
|
|
@@ -16,6 +19,8 @@ repos:
|
|
|
16
19
|
hooks:
|
|
17
20
|
- id: clang-format
|
|
18
21
|
types_or: [c++, c]
|
|
22
|
+
# Data tables written by tools/, kept exactly as generated.
|
|
23
|
+
exclude: _table\.h$
|
|
19
24
|
|
|
20
25
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
21
26
|
rev: v0.17.1
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
2
|
cmake_minimum_required(VERSION 3.21)
|
|
3
|
+
# Extracted downloads get the time they were extracted, so they rebuild when they change.
|
|
4
|
+
if(POLICY CMP0135)
|
|
5
|
+
cmake_policy(SET CMP0135 NEW)
|
|
6
|
+
endif()
|
|
3
7
|
|
|
4
8
|
project(
|
|
5
9
|
Ernie
|
|
@@ -10,7 +14,7 @@ project(
|
|
|
10
14
|
)
|
|
11
15
|
|
|
12
16
|
# Pre-release suffix such as .dev12, written by CI.
|
|
13
|
-
set(ERNIE_VERSION_SUFFIX ".
|
|
17
|
+
set(ERNIE_VERSION_SUFFIX ".dev13" CACHE STRING "Pre-release suffix of Ernie's version")
|
|
14
18
|
set(ERNIE_VERSION "${PROJECT_VERSION}${ERNIE_VERSION_SUFFIX}")
|
|
15
19
|
|
|
16
20
|
option(ERNIE_BUILD_TESTS "Build Ernie's tests" OFF)
|
|
@@ -18,6 +22,8 @@ option(ERNIE_BUILD_PYTHON "Build Ernie's Python module" OFF)
|
|
|
18
22
|
option(ERNIE_BUILD_APP "Build the ernie program" ON)
|
|
19
23
|
option(ERNIE_WARNINGS_AS_ERRORS "Treat compiler warnings as errors" OFF)
|
|
20
24
|
option(ERNIE_ASSERTS "Keep assertions in optimised builds" OFF)
|
|
25
|
+
option(ERNIE_TRACY "Send profiling zones to the Tracy profiler too" OFF)
|
|
26
|
+
option(ERNIE_COVERAGE "Instrument Ernie for code coverage (GCC or Clang)" OFF)
|
|
21
27
|
|
|
22
28
|
get_property(ernie_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
|
23
29
|
if(PROJECT_IS_TOP_LEVEL AND NOT ernie_multi_config AND NOT CMAKE_BUILD_TYPE)
|
|
@@ -34,8 +40,17 @@ if(ERNIE_BUILD_PYTHON)
|
|
|
34
40
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
35
41
|
endif()
|
|
36
42
|
|
|
43
|
+
include(cmake/ErnieFetch.cmake)
|
|
44
|
+
include(cmake/third_party/glm.cmake)
|
|
45
|
+
include(cmake/third_party/dlpack.cmake)
|
|
46
|
+
include(cmake/third_party/json.cmake)
|
|
47
|
+
include(cmake/third_party/openexr.cmake)
|
|
48
|
+
include(cmake/third_party/bc7enc.cmake)
|
|
49
|
+
include(cmake/third_party/stb.cmake)
|
|
50
|
+
include(cmake/third_party/tracy.cmake)
|
|
37
51
|
include(cmake/third_party/vulkan_headers.cmake)
|
|
38
52
|
include(cmake/third_party/volk.cmake)
|
|
53
|
+
add_subdirectory(third_party)
|
|
39
54
|
|
|
40
55
|
add_library(ernie_build_options INTERFACE)
|
|
41
56
|
if(MSVC)
|
|
@@ -68,12 +83,16 @@ if(ERNIE_ASSERTS)
|
|
|
68
83
|
INTERFACE $<IF:$<CXX_COMPILER_ID:MSVC>,/UNDEBUG,-UNDEBUG>
|
|
69
84
|
)
|
|
70
85
|
endif()
|
|
86
|
+
if(ERNIE_COVERAGE)
|
|
87
|
+
target_compile_options(ernie_build_options INTERFACE --coverage -fprofile-update=atomic -Og -g)
|
|
88
|
+
target_link_options(ernie_build_options INTERFACE --coverage)
|
|
89
|
+
endif()
|
|
71
90
|
|
|
72
91
|
add_subdirectory(ernie)
|
|
73
92
|
|
|
74
93
|
if(ERNIE_BUILD_TESTS)
|
|
75
94
|
enable_testing()
|
|
76
|
-
add_subdirectory(
|
|
95
|
+
add_subdirectory(tests)
|
|
77
96
|
endif()
|
|
78
97
|
|
|
79
98
|
if(PROJECT_IS_TOP_LEVEL AND NOT SKBUILD)
|
|
@@ -28,8 +28,19 @@
|
|
|
28
28
|
"cacheVariables": {
|
|
29
29
|
"CMAKE_BUILD_TYPE": "Release",
|
|
30
30
|
"ERNIE_ASSERTS": "ON",
|
|
31
|
-
"ERNIE_WARNINGS_AS_ERRORS": "ON"
|
|
32
|
-
|
|
31
|
+
"ERNIE_WARNINGS_AS_ERRORS": "ON"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "coverage",
|
|
36
|
+
"displayName": "Coverage",
|
|
37
|
+
"description": "Instrumented for code coverage, as CI measures it, in build/coverage",
|
|
38
|
+
"inherits": "dev",
|
|
39
|
+
"binaryDir": "${sourceDir}/build/coverage",
|
|
40
|
+
"cacheVariables": {
|
|
41
|
+
"CMAKE_BUILD_TYPE": "Debug",
|
|
42
|
+
"ERNIE_COVERAGE": "ON",
|
|
43
|
+
"ERNIE_WARNINGS_AS_ERRORS": "ON"
|
|
33
44
|
}
|
|
34
45
|
},
|
|
35
46
|
{
|
|
@@ -43,8 +54,7 @@
|
|
|
43
54
|
"CMAKE_INSTALL_PREFIX": "/usr",
|
|
44
55
|
"ERNIE_BUILD_APP": "ON",
|
|
45
56
|
"ERNIE_BUILD_TESTS": "OFF",
|
|
46
|
-
"ERNIE_BUILD_PYTHON": "OFF"
|
|
47
|
-
"FETCHCONTENT_BASE_DIR": "${sourceDir}/.deps"
|
|
57
|
+
"ERNIE_BUILD_PYTHON": "OFF"
|
|
48
58
|
}
|
|
49
59
|
}
|
|
50
60
|
],
|
|
@@ -55,7 +65,13 @@
|
|
|
55
65
|
},
|
|
56
66
|
{
|
|
57
67
|
"name": "ci",
|
|
58
|
-
"configurePreset": "ci"
|
|
68
|
+
"configurePreset": "ci",
|
|
69
|
+
"nativeToolOptions": ["-k", "0"]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "coverage",
|
|
73
|
+
"configurePreset": "coverage",
|
|
74
|
+
"nativeToolOptions": ["-k", "0"]
|
|
59
75
|
},
|
|
60
76
|
{
|
|
61
77
|
"name": "package",
|
|
@@ -76,6 +92,13 @@
|
|
|
76
92
|
"output": {
|
|
77
93
|
"outputOnFailure": true
|
|
78
94
|
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "coverage",
|
|
98
|
+
"configurePreset": "coverage",
|
|
99
|
+
"output": {
|
|
100
|
+
"outputOnFailure": true
|
|
101
|
+
}
|
|
79
102
|
}
|
|
80
103
|
]
|
|
81
104
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ernie-renderer
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev13
|
|
4
4
|
Summary: Efficient Renderer for Natural and Interplanetary Environments: a physically based, spectral Vulkan ray tracer
|
|
5
5
|
Author: Alex Maietta
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -8,7 +8,7 @@ License-File: LICENSE
|
|
|
8
8
|
Project-URL: Homepage, https://github.com/alexmaietta/ernie
|
|
9
9
|
Project-URL: Repository, https://github.com/alexmaietta/ernie
|
|
10
10
|
Project-URL: Issues, https://github.com/alexmaietta/ernie/issues
|
|
11
|
-
Requires-Python: >=3.
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
12
|
Provides-Extra: test
|
|
13
13
|
Requires-Dist: pytest>=8; extra == "test"
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
@@ -16,6 +16,7 @@ Description-Content-Type: text/markdown
|
|
|
16
16
|
> 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
|
|
17
17
|
|
|
18
18
|
[](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
|
|
19
|
+
[](https://alexmaietta.github.io/ernie/coverage/)
|
|
19
20
|
[](https://github.com/alexmaietta/ernie/releases)
|
|
20
21
|
[](https://pypi.org/project/ernie-renderer/)
|
|
21
22
|
[](https://alexmaietta.github.io/ernie/)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
> 🚧 **This project is in active beta development.** This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
|
|
2
2
|
|
|
3
3
|
[](https://github.com/alexmaietta/ernie/actions/workflows/ci.yml)
|
|
4
|
+
[](https://alexmaietta.github.io/ernie/coverage/)
|
|
4
5
|
[](https://github.com/alexmaietta/ernie/releases)
|
|
5
6
|
[](https://pypi.org/project/ernie-renderer/)
|
|
6
7
|
[](https://alexmaietta.github.io/ernie/)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
include_guard(GLOBAL)
|
|
3
|
+
include(FetchContent)
|
|
4
|
+
|
|
5
|
+
set(ERNIE_DEPS_DIR
|
|
6
|
+
"${PROJECT_SOURCE_DIR}/.deps"
|
|
7
|
+
CACHE PATH
|
|
8
|
+
"Where fetched dependency sources are kept"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
function(ernie_fetch name)
|
|
12
|
+
# The FetchContent_Declare arguments recipes use, declared so others are rejected and gersemi
|
|
13
|
+
# formats calls by keyword.
|
|
14
|
+
cmake_parse_arguments(
|
|
15
|
+
ARG
|
|
16
|
+
""
|
|
17
|
+
"URL;GIT_REPOSITORY;GIT_TAG;GIT_SHALLOW;SOURCE_SUBDIR"
|
|
18
|
+
"GIT_SUBMODULES"
|
|
19
|
+
${ARGN}
|
|
20
|
+
)
|
|
21
|
+
if(ARG_UNPARSED_ARGUMENTS)
|
|
22
|
+
message(FATAL_ERROR "ernie_fetch(${name}): unexpected ${ARG_UNPARSED_ARGUMENTS}")
|
|
23
|
+
endif()
|
|
24
|
+
string(TOLOWER "${name}" lower)
|
|
25
|
+
string(TOUPPER "${name}" upper)
|
|
26
|
+
set(source "${ERNIE_DEPS_DIR}/${lower}-src")
|
|
27
|
+
set(stamp "${source}/.ernie-fetched")
|
|
28
|
+
if(EXISTS "${stamp}")
|
|
29
|
+
file(READ "${stamp}" fetched)
|
|
30
|
+
if(fetched STREQUAL "${ARGN}")
|
|
31
|
+
set(FETCHCONTENT_SOURCE_DIR_${upper} "${source}")
|
|
32
|
+
else()
|
|
33
|
+
file(REMOVE_RECURSE "${source}")
|
|
34
|
+
endif()
|
|
35
|
+
endif()
|
|
36
|
+
FetchContent_Declare(${name} ${ARGN} SOURCE_DIR "${source}")
|
|
37
|
+
FetchContent_MakeAvailable(${name})
|
|
38
|
+
file(WRITE "${stamp}" "${ARGN}")
|
|
39
|
+
set(${lower}_SOURCE_DIR "${${lower}_SOURCE_DIR}" PARENT_SCOPE)
|
|
40
|
+
set(${lower}_BINARY_DIR "${${lower}_BINARY_DIR}" PARENT_SCOPE)
|
|
41
|
+
endfunction()
|
|
@@ -9,6 +9,12 @@ set(ERNIE_TEST_TIMEOUT_unit 10)
|
|
|
9
9
|
set(ERNIE_TEST_TIMEOUT_gpu 60)
|
|
10
10
|
set(ERNIE_TEST_TIMEOUT_accuracy 120)
|
|
11
11
|
set(ERNIE_TEST_TIMEOUT_python 120)
|
|
12
|
+
# Unoptimised, instrumented coverage builds run several times slower.
|
|
13
|
+
if(ERNIE_COVERAGE)
|
|
14
|
+
foreach(label unit gpu accuracy python)
|
|
15
|
+
math(EXPR ERNIE_TEST_TIMEOUT_${label} "${ERNIE_TEST_TIMEOUT_${label}} * 10")
|
|
16
|
+
endforeach()
|
|
17
|
+
endif()
|
|
12
18
|
|
|
13
19
|
# Adds the gtest executable ernie_tests_<name> and registers its tests as ernie.<name>.<test>.
|
|
14
20
|
function(ernie_add_test_suite name)
|
|
@@ -19,6 +25,10 @@ function(ernie_add_test_suite name)
|
|
|
19
25
|
set(target ernie_tests_${name})
|
|
20
26
|
add_executable(${target} ${ARG_SOURCES})
|
|
21
27
|
target_link_libraries(${target} PRIVATE ${ARG_LIBRARIES} GTest::gtest_main ernie_build_options)
|
|
28
|
+
target_compile_definitions(
|
|
29
|
+
${target}
|
|
30
|
+
PRIVATE ERNIE_TEST_FIXTURES="${PROJECT_SOURCE_DIR}/tests/fixtures"
|
|
31
|
+
)
|
|
22
32
|
gtest_discover_tests(
|
|
23
33
|
${target}
|
|
24
34
|
TEST_PREFIX "ernie.${name}."
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
# bc7enc_rdo has no releases, so a commit is pinned.
|
|
3
|
+
set(ERNIE_DEP_VERSION_bc7enc
|
|
4
|
+
b9438627eef73a1157e84201b6fa6eb2ffd6d9f0
|
|
5
|
+
CACHE STRING
|
|
6
|
+
"Commit of bc7enc_rdo to fetch"
|
|
7
|
+
)
|
|
8
|
+
mark_as_advanced(ERNIE_DEP_VERSION_bc7enc)
|
|
9
|
+
|
|
10
|
+
ernie_fetch(
|
|
11
|
+
bc7enc
|
|
12
|
+
URL https://github.com/richgel999/bc7enc_rdo/archive/${ERNIE_DEP_VERSION_bc7enc}.tar.gz
|
|
13
|
+
SOURCE_SUBDIR no-build
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
# bc7enc_rdo (MIT or public domain): its BC7 encoder (bc7enc), BC1 to BC5 encoders and decoders
|
|
17
|
+
# (rgbcx) and BC7 decoder (bc7decomp), for baking and decoding textures.
|
|
18
|
+
add_library(
|
|
19
|
+
ernie_bc7enc
|
|
20
|
+
STATIC
|
|
21
|
+
"${bc7enc_SOURCE_DIR}/bc7enc.cpp"
|
|
22
|
+
"${bc7enc_SOURCE_DIR}/rgbcx.cpp"
|
|
23
|
+
"${bc7enc_SOURCE_DIR}/bc7decomp.cpp"
|
|
24
|
+
)
|
|
25
|
+
target_include_directories(ernie_bc7enc SYSTEM PUBLIC "${bc7enc_SOURCE_DIR}")
|
|
26
|
+
set_target_properties(ernie_bc7enc PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
set(ERNIE_DEP_VERSION_dlpack v1.3 CACHE STRING "Tag of DLPack to fetch")
|
|
3
|
+
mark_as_advanced(ERNIE_DEP_VERSION_dlpack)
|
|
4
|
+
|
|
5
|
+
ernie_fetch(
|
|
6
|
+
dlpack
|
|
7
|
+
URL https://github.com/dmlc/dlpack/archive/refs/tags/${ERNIE_DEP_VERSION_dlpack}.tar.gz
|
|
8
|
+
SOURCE_SUBDIR no-build
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
# The tensor exchange header, nothing to build.
|
|
12
|
+
add_library(ernie_dlpack INTERFACE)
|
|
13
|
+
target_include_directories(ernie_dlpack SYSTEM INTERFACE "${dlpack_SOURCE_DIR}/include")
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
set(ERNIE_DEP_VERSION_glm 1.0.3 CACHE STRING "Tag of glm to fetch")
|
|
3
|
+
mark_as_advanced(ERNIE_DEP_VERSION_glm)
|
|
4
|
+
|
|
5
|
+
set(GLM_BUILD_LIBRARY OFF)
|
|
6
|
+
set(GLM_BUILD_TESTS OFF)
|
|
7
|
+
set(GLM_BUILD_INSTALL OFF)
|
|
8
|
+
|
|
9
|
+
ernie_fetch(glm URL https://github.com/g-truc/glm/archive/refs/tags/${ERNIE_DEP_VERSION_glm}.tar.gz)
|
|
10
|
+
|
|
11
|
+
add_library(ernie_glm INTERFACE)
|
|
12
|
+
target_include_directories(ernie_glm SYSTEM INTERFACE "${glm_SOURCE_DIR}")
|
|
13
|
+
target_compile_definitions(ernie_glm INTERFACE GLM_FORCE_DEPTH_ZERO_TO_ONE)
|
|
@@ -6,11 +6,8 @@ set(BUILD_GMOCK OFF)
|
|
|
6
6
|
set(INSTALL_GTEST OFF)
|
|
7
7
|
set(gtest_force_shared_crt ON)
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
FetchContent_Declare(
|
|
9
|
+
ernie_fetch(
|
|
11
10
|
googletest
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
GIT_SHALLOW TRUE
|
|
11
|
+
URL
|
|
12
|
+
https://github.com/google/googletest/archive/refs/tags/${ERNIE_DEP_VERSION_googletest}.tar.gz
|
|
15
13
|
)
|
|
16
|
-
FetchContent_MakeAvailable(googletest)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
set(ERNIE_DEP_VERSION_json v3.12.0 CACHE STRING "Release of nlohmann/json to fetch")
|
|
3
|
+
mark_as_advanced(ERNIE_DEP_VERSION_json)
|
|
4
|
+
|
|
5
|
+
# The release's single-include archive, without the repository's tests and history.
|
|
6
|
+
ernie_fetch(
|
|
7
|
+
nlohmann_json
|
|
8
|
+
URL https://github.com/nlohmann/json/releases/download/${ERNIE_DEP_VERSION_json}/include.zip
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
add_library(ernie_json INTERFACE)
|
|
12
|
+
target_include_directories(ernie_json SYSTEM INTERFACE "${nlohmann_json_SOURCE_DIR}/single_include")
|
|
@@ -8,7 +8,7 @@ mark_as_advanced(ERNIE_DEP_VERSION_nanobind)
|
|
|
8
8
|
|
|
9
9
|
find_package(
|
|
10
10
|
Python
|
|
11
|
-
3.
|
|
11
|
+
3.10
|
|
12
12
|
REQUIRED
|
|
13
13
|
COMPONENTS Interpreter Development.Module ${SKBUILD_SABI_COMPONENT}
|
|
14
14
|
)
|
|
@@ -22,13 +22,11 @@ execute_process(
|
|
|
22
22
|
)
|
|
23
23
|
find_package(nanobind CONFIG QUIET)
|
|
24
24
|
if(NOT nanobind_FOUND)
|
|
25
|
-
|
|
26
|
-
FetchContent_Declare(
|
|
25
|
+
ernie_fetch(
|
|
27
26
|
nanobind
|
|
28
27
|
GIT_REPOSITORY https://github.com/wjakob/nanobind.git
|
|
29
28
|
GIT_TAG ${ERNIE_DEP_VERSION_nanobind}
|
|
30
29
|
GIT_SHALLOW TRUE
|
|
31
30
|
GIT_SUBMODULES ext/robin_map
|
|
32
31
|
)
|
|
33
|
-
FetchContent_MakeAvailable(nanobind)
|
|
34
32
|
endif()
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
set(ERNIE_DEP_VERSION_openexr v3.5.2 CACHE STRING "Tag of OpenEXR to fetch")
|
|
3
|
+
set(ERNIE_DEP_VERSION_imath v3.2.3 CACHE STRING "Tag of Imath to fetch for OpenEXR")
|
|
4
|
+
mark_as_advanced(ERNIE_DEP_VERSION_openexr ERNIE_DEP_VERSION_imath)
|
|
5
|
+
|
|
6
|
+
set(OPENEXR_BUILD_TOOLS OFF)
|
|
7
|
+
set(OPENEXR_BUILD_EXAMPLES OFF)
|
|
8
|
+
set(OPENEXR_BUILD_DOCS OFF)
|
|
9
|
+
set(OPENEXR_BUILD_PYTHON OFF)
|
|
10
|
+
set(OPENEXR_INSTALL OFF)
|
|
11
|
+
set(OPENEXR_INSTALL_TOOLS OFF)
|
|
12
|
+
set(OPENEXR_INSTALL_PKG_CONFIG OFF)
|
|
13
|
+
set(OPENEXR_TEST_LIBRARIES OFF)
|
|
14
|
+
set(OPENEXR_TEST_TOOLS OFF)
|
|
15
|
+
set(OPENEXR_TEST_PYTHON OFF)
|
|
16
|
+
set(OPENEXR_FORCE_INTERNAL_IMATH ON)
|
|
17
|
+
set(OPENEXR_FORCE_INTERNAL_DEFLATE ON)
|
|
18
|
+
set(OPENEXR_FORCE_INTERNAL_ZSTD ON)
|
|
19
|
+
set(OPENEXR_FORCE_INTERNAL_OPENJPH ON)
|
|
20
|
+
set(IMATH_INSTALL_PKG_CONFIG OFF)
|
|
21
|
+
set(IMATH_INSTALL OFF)
|
|
22
|
+
set(BUILD_SHARED_LIBS OFF)
|
|
23
|
+
|
|
24
|
+
# Their own tests stay out of Ernie's ctest. Imath is made available first, so OpenEXR finds it
|
|
25
|
+
# populated and skips its own git clone of it.
|
|
26
|
+
set(ernie_saved_build_testing ${BUILD_TESTING})
|
|
27
|
+
set(BUILD_TESTING OFF)
|
|
28
|
+
ernie_fetch(
|
|
29
|
+
Imath
|
|
30
|
+
URL
|
|
31
|
+
https://github.com/AcademySoftwareFoundation/Imath/archive/refs/tags/${ERNIE_DEP_VERSION_imath}.tar.gz
|
|
32
|
+
)
|
|
33
|
+
ernie_fetch(
|
|
34
|
+
openexr
|
|
35
|
+
URL
|
|
36
|
+
https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/${ERNIE_DEP_VERSION_openexr}.tar.gz
|
|
37
|
+
)
|
|
38
|
+
set(BUILD_TESTING ${ernie_saved_build_testing})
|
|
39
|
+
|
|
40
|
+
# Its headers and Imath's are system headers to Ernie, kept out of its warnings.
|
|
41
|
+
foreach(
|
|
42
|
+
target
|
|
43
|
+
OpenEXR
|
|
44
|
+
OpenEXRCore
|
|
45
|
+
OpenEXRUtil
|
|
46
|
+
Iex
|
|
47
|
+
IlmThread
|
|
48
|
+
Imath
|
|
49
|
+
ImathConfig
|
|
50
|
+
OpenEXRConfig
|
|
51
|
+
)
|
|
52
|
+
if(TARGET ${target})
|
|
53
|
+
get_target_property(directories ${target} INTERFACE_INCLUDE_DIRECTORIES)
|
|
54
|
+
if(directories)
|
|
55
|
+
set_property(
|
|
56
|
+
TARGET ${target}
|
|
57
|
+
APPEND
|
|
58
|
+
PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${directories}
|
|
59
|
+
)
|
|
60
|
+
endif()
|
|
61
|
+
endif()
|
|
62
|
+
endforeach()
|
|
63
|
+
|
|
64
|
+
add_library(ernie_openexr INTERFACE)
|
|
65
|
+
target_link_libraries(ernie_openexr INTERFACE OpenEXR::OpenEXR)
|
|
66
|
+
|
|
67
|
+
# The zstd built into OpenEXRCore exports its API, so KTX2's zstd supercompression is decoded with
|
|
68
|
+
# it rather than a second copy.
|
|
69
|
+
add_library(ernie_zstd INTERFACE)
|
|
70
|
+
target_include_directories(ernie_zstd SYSTEM INTERFACE "${openexr_SOURCE_DIR}/external/zstd/lib")
|
|
71
|
+
target_link_libraries(ernie_zstd INTERFACE OpenEXR::OpenEXRCore)
|