Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
1d6045a
Add OSMesa support on all OS
Meakk Jun 26, 2026
cefad26
try
Meakk Jun 26, 2026
e6c763c
issue
Meakk Jun 26, 2026
728420d
simplify
Meakk Jun 26, 2026
753fab0
nop
Meakk Jun 26, 2026
446244d
linux
Meakk Jun 26, 2026
2e4eb5f
fix
Meakk Jun 27, 2026
11e94a4
try
Meakk Jun 27, 2026
6cf09fc
fix
Meakk Jun 27, 2026
42c38e5
foo
Meakk Jun 27, 2026
2138fdf
platform
Meakk Jun 27, 2026
e704188
new try
Meakk Jun 27, 2026
70e2579
xml
Meakk Jun 27, 2026
c71aef9
try
Meakk Jun 27, 2026
03ce14c
llvmpipe
Meakk Jun 27, 2026
f080274
llvm
Meakk Jun 27, 2026
d7d7f26
try
Meakk Jun 27, 2026
700be95
wintry
Meakk Jun 27, 2026
9a98b63
mingw
Meakk Jun 27, 2026
5a0fbba
msvc
Meakk Jun 27, 2026
15ef73c
workaround
Meakk Jun 27, 2026
27c6800
cmake
Meakk Jun 27, 2026
5505f14
download
Meakk Jun 27, 2026
356aed2
clean
Meakk Jun 27, 2026
e51b344
test
Meakk Jun 28, 2026
85d0108
debug
Meakk Jun 28, 2026
ad14c08
archive
Meakk Jun 28, 2026
9b45275
use external action
Meakk Jun 28, 2026
760baf9
almost there (lol I believe)
Meakk Jun 28, 2026
49c738d
static
Meakk Jun 28, 2026
7be9c67
zstd
Meakk Jun 28, 2026
0ab22e5
workaround
Meakk Jun 28, 2026
0f3cabe
debug
Meakk Jun 29, 2026
cb5a024
softpipe
Meakk Jun 29, 2026
c2abc3d
md
Meakk Jun 29, 2026
3fac425
build llvm
Meakk Jun 29, 2026
508d347
version
Meakk Jun 29, 2026
3bee65f
fix
Meakk Jun 29, 2026
cc01358
path
Meakk Jun 29, 2026
7571a3f
all
Meakk Jun 29, 2026
f4da142
fixinstall
Meakk Jun 29, 2026
ff9f9f3
mesa
Meakk Jun 29, 2026
7809a40
python
Meakk Jun 29, 2026
7c56ac6
llvm
Meakk Jun 29, 2026
b6d5e24
rtti
Meakk Jun 29, 2026
17b83d9
zstd
Meakk Jun 29, 2026
268a214
msvc
Meakk Jun 29, 2026
c336ab7
link
Meakk Jun 29, 2026
a697e27
static llvm
Meakk Jun 29, 2026
61d2c1f
fix python
Meakk Jun 29, 2026
492b339
find_path
Meakk Jun 29, 2026
7402d3f
fix windows build and tree
Meakk Jun 30, 2026
50f708d
ls
Meakk Jun 30, 2026
1afad74
try
Meakk Jun 30, 2026
bd4f79a
debug
Meakk Jun 30, 2026
29d2f71
try
Meakk Jun 30, 2026
26d0b40
inc
Meakk Jun 30, 2026
3de7e51
...
Meakk Jun 30, 2026
c9d4ba6
fix
Meakk Jun 30, 2026
628c350
remove warning
Meakk Jun 30, 2026
4a25894
clean
Meakk Jun 30, 2026
db9cbf1
try
Meakk Jun 30, 2026
a22c908
DYLD_LIBRARY_PATH
Meakk Jun 30, 2026
b9378a2
macos
Meakk Jun 30, 2026
b66c9fb
eh
Meakk Jun 30, 2026
b81a126
debug
Meakk Jul 1, 2026
d5069e7
fixes
Meakk Jul 1, 2026
5a5572a
style
Meakk Jul 1, 2026
1bd849f
debug
Meakk Jul 1, 2026
ebc97d9
more debug
Meakk Jul 1, 2026
f3ec116
reorder
Meakk Jul 1, 2026
c98075e
cleanup
Meakk Jul 1, 2026
b5dcb06
macos: osmesa in ci
Meakk Jul 1, 2026
be962b8
debug
Meakk Jul 1, 2026
9a4f0ed
bump vtk
Meakk Jul 1, 2026
8ea74cc
debug
Meakk Jul 1, 2026
89d4db2
tweak
Meakk Jul 2, 2026
3cc9c38
sdktest
Meakk Jul 2, 2026
ae038c4
yml
Meakk Jul 2, 2026
e8b4638
threshold
Meakk Jul 2, 2026
5ea3a0f
python
Meakk Jul 2, 2026
0cc4808
debug egl
Meakk Jul 2, 2026
f15cafc
try fix
Meakk Jul 2, 2026
ed27fad
more debug
Meakk Jul 2, 2026
d733e60
fix
Meakk Jul 2, 2026
f34451b
coverager
Meakk Jul 3, 2026
f83b629
clean
Meakk Jul 3, 2026
707fdeb
style
Meakk Jul 3, 2026
caae832
review
Meakk Jul 3, 2026
7f11271
style
Meakk Jul 3, 2026
765ce05
review
Meakk Jul 3, 2026
5a339bb
fix python
Meakk Jul 3, 2026
f155d6e
fix
Meakk Jul 3, 2026
5146aa3
try fix python
Meakk Jul 3, 2026
8bcdf38
tests
Meakk Jul 3, 2026
d0a74bc
python
Meakk Jul 3, 2026
cfbe075
style
Meakk Jul 3, 2026
125f3e2
rev
Meakk Jul 4, 2026
3a4211c
review
Meakk Jul 4, 2026
8567456
doc
Meakk Jul 4, 2026
0b3bcbc
timeout
Meakk Jul 4, 2026
7fa94cf
sdk scene
Meakk Jul 4, 2026
6f679dd
review
Meakk Jul 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/actions/coverage-ci/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,19 @@ runs:
lfs_sha: ${{inputs.lfs_sha}}
cache_postfix: cache-0

# Python is needed in case Mesa must be built
- name: Extract python version
id: python_ver
uses: f3d-app/extract-version-action@main
with:
file: ${{inputs.versions_file}}
name: python

Comment thread
Meakk marked this conversation as resolved.
- name: Install all F3D dependencies
uses: ./source/.github/actions/generic-dependencies
with:
versions_file: ${{inputs.versions_file}}
python_version: ${{steps.python_ver.outputs.extract}}

- name: Install VTK dependency
uses: ./source/.github/actions/vtk-install-dep
Expand Down
14 changes: 14 additions & 0 deletions .github/actions/f3d-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ inputs:
runs:
using: "composite"
steps:
- name: Install LLVM dependency
uses: ./source/.github/actions/llvm-install-dep
with:
versions_file: ${{inputs.versions_file}}
mindeps_label: ${{inputs.mindeps_label}}
cpu: ${{inputs.cpu}}

- name: Install MESA
uses: ./source/.github/actions/mesa-install-dep
with:
versions_file: ${{inputs.versions_file}}
mindeps_label: ${{inputs.mindeps_label}}
cpu: ${{inputs.cpu}}

- name: Install OCCT dependency
uses: ./source/.github/actions/occt-install-dep
with:
Expand Down
78 changes: 22 additions & 56 deletions .github/actions/generic-ci/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,22 @@ runs:
lfs_sha: ${{inputs.lfs_sha}}
cache_postfix: cache-0

- name: Extract python version
id: python_ver
uses: f3d-app/extract-version-action@main
with:
file: ${{inputs.versions_file}}
name: python
minver_label: ${{inputs.mindeps_label == 'mindeps' && 'minver' || ''}}

- name: Install all F3D dependencies
uses: ./source/.github/actions/generic-dependencies
with:
versions_file: ${{inputs.versions_file}}
optdeps_label: ${{inputs.optdeps_label}}
mindeps_label: ${{inputs.mindeps_label}}
cpu: ${{inputs.cpu}}
python_version: ${{steps.python_ver.outputs.extract}}

- name: Install VTK dependency
uses: ./source/.github/actions/vtk-install-dep
Expand All @@ -77,26 +86,11 @@ runs:
cpu: ${{inputs.cpu}}
vtk_version: ${{inputs.vtk_version}}

- name: Extract python version
id: python_ver
uses: f3d-app/extract-version-action@main
with:
file: ${{inputs.versions_file}}
name: python
minver_label: ${{inputs.mindeps_label == 'mindeps' && 'minver' || ''}}

- name: Set up Python
if: inputs.optdeps_label == 'optdeps'
uses: actions/setup-python@v6
with:
python-version: ${{steps.python_ver.outputs.extract}}

# numpy pinned to 2.2.X until python 3.10 support is dropped
- name: Install Python dependencies
if: inputs.optdeps_label == 'optdeps'
shell: bash
run: |
python -m pip install --upgrade pip
python -m pip install pytest==9.0.3
python -m pip install pybind11_stubgen
python -m pip install numpy==2.2.6
Expand Down Expand Up @@ -130,7 +124,7 @@ runs:
working-directory: ${{github.workspace}}
run: echo "PATH=$env:PATH;$(pwd)\dependencies\install\bin\;$(pwd)\dependencies\install\lib\;$(pwd)\install\bin\;"| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

- name: Set DYLD_LIBRARY_PATH on macOS for OSPRay dynamic loading
- name: Set DYLD_LIBRARY_PATH on macOS for OSPRay/OSMesa dynamic loading
if: |
runner.os == 'macOS' &&
inputs.optdeps_label == 'optdeps'
Expand Down Expand Up @@ -195,13 +189,14 @@ runs:
-DF3D_PLUGIN_BUILD_VDB=${{ inputs.optdeps_label == 'optdeps' && 'ON' || 'OFF' }}
-DF3D_PLUGIN_OCCT_COLORING_SUPPORT=${{ inputs.mindeps_label != 'mindeps' && 'ON' || 'OFF' }}
-DF3D_STRICT_BUILD=ON
-DF3D_TESTING_ENABLE_WGL_TESTS=${{ runner.os == 'Windows' && 'ON' || 'OFF' }}
Comment thread
mwestphal marked this conversation as resolved.
-DF3D_TESTING_ENABLE_EGL_TESTS=${{ runner.os == 'Linux' && 'ON' || 'OFF' }}
-DF3D_TESTING_ENABLE_EXTERNAL_GLFW=${{ (runner.os == 'Linux' && inputs.rendering_backend == 'auto') && 'ON' || 'OFF' }}
-DF3D_TESTING_ENABLE_EXTERNAL_QT=${{ (runner.os == 'Linux' && inputs.rendering_backend == 'auto') && 'ON' || 'OFF' }}
-DF3D_TESTING_ENABLE_ILLUSTRATION_TESTS=${{ (runner.os == 'Linux' && inputs.vtk_version == 'commit' && inputs.build_type == 'standard') && 'ON' || 'OFF' }}
-DF3D_TESTING_ENABLE_GLX_TESTS=${{ (runner.os == 'Linux' && inputs.rendering_backend == 'auto') && 'ON' || 'OFF' }}
-DF3D_TESTING_ENABLE_LONG_TIMEOUT_TESTS=${{ (runner.os == 'Linux' || runner.os == 'Windows') && 'ON' || 'OFF' }}
-DF3D_TESTING_ENABLE_OSMESA_TESTS=${{ runner.os == 'Linux' && 'ON' || 'OFF' }}
-DF3D_TESTING_ENABLE_OSMESA_TESTS=ON
-DF3D_TESTING_DISABLE_CATCH_ALL=ON
-DF3D_TESTING_FORCE_RENDERING_BACKEND=${{ inputs.rendering_backend }}
-DF3D_WINDOWS_BUILD_CONSOLE_APPLICATION=ON
Expand All @@ -220,52 +215,37 @@ runs:
shell: bash
run: Xvfb $DISPLAY -screen 0 1280x1024x24 &

# We install a proper WGL Mesa driver for regular tests
# This is needed because F3D_TESTING_ENABLE_WGL_TESTS options is enabled
Comment thread
mwestphal marked this conversation as resolved.
- name: Install Mesa Windows
if: runner.os == 'Windows'
uses: f3d-app/install-mesa-windows-action@v2
with:
path: ${{github.workspace}}\build\bin_Release

- name: Install Mesa Windows Python
if: runner.os == 'Windows'
uses: f3d-app/install-mesa-windows-action@v2
with:
path: ${{github.workspace}}\build\Release\f3d
Comment thread
mwestphal marked this conversation as resolved.

# A EGL test is crashing in the CI but not locally
- name: Set CI test exception for Linux EGL
if: runner.os == 'Linux' &&
inputs.rendering_backend != 'auto'
shell: bash
run: echo "F3D_CTEST_EXCEPTIONS=(TestSDKExternalWindowEGL)" >> $GITHUB_ENV

# numpy makes pytest crashing on Windows in the CI but not locally, skipping for now
- name: Set CI test exception for Windows
if: runner.os == 'Windows'
shell: bash
run: echo "F3D_CTEST_EXCEPTIONS=(test_scene_zero_copy)" >> $GITHUB_ENV

# Certain tests are failing on macOS with GPU pass through
# https://github.com/f3d-app/f3d/issues/792
# https://github.com/f3d-app/f3d/issues/1534
# https://github.com/f3d-app/f3d/issues/2268
# https://github.com/f3d-app/f3d/issues/3047
# Certain tests are failing on macOS software rendering
# OSMesa is used for VTK > 9.6, remove when it's dropped
Comment thread
mwestphal marked this conversation as resolved.
Comment thread
mwestphal marked this conversation as resolved.
- name: Set CI test exception for macOS x86_64
if: |
runner.os == 'macOS' &&
inputs.cpu == 'x86_64'
inputs.cpu == 'x86_64' &&
inputs.rendering_backend == 'auto'
shell: bash
run: echo "F3D_CTEST_EXCEPTIONS=(TestDXF)|(TestPipedDXF)|(TestScalarsCell)|(TestXCAFColors)|(TestInteractionAnimationSlow)|(TestInteractionFocalPointPickingPoints)|(TestInteractionCycleAnimation)|(TestInteractionCycleComp)|(TestGLTFRigArmature)|(TestInteractionNoModelScrollWheel)|(TestInteractionNoModelScrollBar)|(TestInteractionTAA)|(TestInteractionPointCloudTAA)|(TestInteractionStochasticTAA)" >> $GITHUB_ENV

# Certain tests are failing on macOS arm64 for unknown reasons
# https://github.com/f3d-app/f3d/issues/1276
# https://github.com/f3d-app/f3d/issues/792
# https://github.com/f3d-app/f3d/issues/1534
# https://github.com/f3d-app/f3d/issues/3047
# Certain tests are failing on macOS software rendering
# OSMesa is used for VTK > 9.6, remove when it's dropped
Comment thread
mwestphal marked this conversation as resolved.
- name: Set CI test exception for macOS arm64
if: |
runner.os == 'macOS' &&
inputs.cpu == 'arm64'
inputs.cpu == 'arm64' &&
inputs.rendering_backend == 'auto'
shell: bash
run: echo "F3D_CTEST_EXCEPTIONS=(TestDepthPeelingToneMapping)|(TestDepthPeeling)|(TestTextureColor)|(TestDXF)|(TestPipedDXF)|(TestScalarsCell)|(TestXCAFColors)|(TestGrid)|(TestConfig)|(TestGLTFDracoImporter)|(TestInteractionActors)|(TestInteractionFocalPointPickingPoints)|(TestInteractionCycleAnimation)|(TestInteractionAnimationSlow)|(TestInteractionConfigFileInteractions)|(TestGLTFRigArmature)|(TestInteractionRollCameraRotation)|(TestInteractionDragRotateVertical)|(TestInteractionCheatsheet)|(TestMaxSizeAboveMultiFile)|(TestAxesCustomColor)|(TestInteractionTAA)|(TestInteractionStochasticTAA)|(TestInteractionPointCloudTAA)|(TestSDKNotification)|(TestUnlitOBJOpacity)|(TestInteractionGridReflectionChanged)|(TestUSDRigArmatureWithOpacity)" >> $GITHUB_ENV

Expand Down Expand Up @@ -300,12 +280,6 @@ runs:
cmake --install . --component configuration
cmake --install . --component colormaps

- name: Install Mesa Windows in install
if: runner.os == 'Windows'
uses: f3d-app/install-mesa-windows-action@v2
with:
path: ${{github.workspace}}\install\bin

- name: Build and configure python externally
if: |
inputs.optdeps_label == 'optdeps' &&
Expand Down Expand Up @@ -337,14 +311,6 @@ runs:
working-directory: ${{github.workspace}}
run: cmake --build build_examples --config Release

- name: Install Mesa Windows examples
if: |
runner.os == 'Windows' &&
inputs.static_label == 'no-static'
uses: f3d-app/install-mesa-windows-action@v2
with:
path: ${{github.workspace}}\build_examples\*\*\Release

# older VTK version create different renderings so they are not tested
- name: Test libf3d examples
if: inputs.static_label == 'no-static'
Expand Down
13 changes: 13 additions & 0 deletions .github/actions/generic-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ inputs:
description: "CPU architecture to build for"
required: false
default: "x86_64"
python_version:
description: "Python version to use for the CI"
required: false
default: "3.14"

runs:
using: "composite"
Expand All @@ -25,6 +29,15 @@ runs:
run: |
[[ "${{ inputs.versions_file }}" ]] || { echo "versions_file is empty" ; exit 1; }

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python_version }}
Comment thread
mwestphal marked this conversation as resolved.

- name: Upgrade pip
shell: bash
run: python -m pip install --upgrade pip

- name: Install VTK dependencies
uses: ./source/.github/actions/vtk-dependencies
with:
Expand Down
105 changes: 105 additions & 0 deletions .github/actions/llvm-install-dep/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: "Install LLVM Dependency"
description: "Install LLVM Dependency using cache when possible"
inputs:
versions_file:
description: "File to recover versions from"
required: true
mindeps_label:
description: "Label to flag for minimum versions dependencies"
required: false
default: "no-mindeps"
cpu:
description: "CPU architecture to build for"
required: false
default: "x86_64"

runs:
using: "composite"
steps:
- name: Check required inputs
shell: bash
run: |
[[ "${{inputs.versions_file}}" ]] || { echo "versions_file is empty" ; exit 1; }

- name: Extract llvm version
id: llvm_ver
uses: f3d-app/extract-version-action@main
with:
file: ${{inputs.versions_file}}
name: llvm
minver_label: ${{inputs.mindeps_label == 'mindeps' && 'minver' || ''}}

- name: Extract global cache index
id: global_idx
uses: f3d-app/extract-version-action@main
with:
file: ${{inputs.versions_file}}
special_name: global_cache_index

- name: Cache llvm
id: cache-llvm
continue-on-error: true # https://github.com/actions/cache/issues/1754
uses: actions/cache/restore@v6
with:
path: dependencies/llvm_install
key: llvm-${{steps.llvm_ver.outputs.extract}}-${{runner.os}}-${{inputs.cpu}}-${{steps.global_idx.outputs.extract}}-1

- name: Checkout LLVM
if: steps.cache-llvm.outputs.cache-hit != 'true'
uses: actions/checkout@v7
with:
repository: llvm/llvm-project
submodules: true
path: "./dependencies/llvm"
ref: llvmorg-${{steps.llvm_ver.outputs.extract}}

- name: Setup LLVM
if: steps.cache-llvm.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}/dependencies
shell: bash
run: |
mkdir llvm_build
mkdir llvm_install

- name: Configure LLVM
if: steps.cache-llvm.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}/dependencies/llvm_build
shell: bash
run: >
cmake ../llvm/llvm
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX="../llvm_install"
-DLLVM_TARGETS_TO_BUILD="host"
-DLLVM_ENABLE_PROJECTS=""
-DLLVM_BUILD_TOOLS=ON
-DLLVM_BUILD_TESTS=OFF
-DLLVM_BUILD_EXAMPLES=OFF
-DLLVM_BUILD_BENCHMARKS=OFF
-DLLVM_INCLUDE_TESTS=OFF
-DLLVM_INCLUDE_EXAMPLES=OFF
-DLLVM_INCLUDE_BENCHMARKS=OFF
-DLLVM_INCLUDE_DOCS=OFF
-DLLVM_ENABLE_ZLIB=OFF
-DLLVM_ENABLE_ZSTD=OFF
-DLLVM_ENABLE_LIBXML2=OFF
-DLLVM_ENABLE_RTTI=OFF
${{ runner.os == 'macOS' && '-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0' || null }}
${{ runner.os == 'Windows' && '-Ax64 -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL' || null }}

- name: Build LLVM
if: steps.cache-llvm.outputs.cache-hit != 'true'
working-directory: ${{github.workspace}}/dependencies/llvm_build
shell: bash
run: cmake --build . --parallel 2 --target install --config Release

- name: Copy to install
working-directory: ${{github.workspace}}/dependencies/llvm_install
shell: bash
run: cp -r ./* ../install/

- name: Save cache
if: steps.cache-llvm.outputs.cache-hit != 'true'
uses: actions/cache/save@v6
with:
key: ${{ steps.cache-llvm.outputs.cache-primary-key }}
path: dependencies/llvm_install
Loading