Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
5f7319f
Add Google Highway SIMD acceleration to ImageBufAlgo
ssh4net Jan 7, 2026
e9d6924
Simplify CMake hwy option
ssh4net Jan 13, 2026
3704de5
Revert "Simplify CMake hwy option"
ssh4net Jan 13, 2026
9e8f530
Update CMakeLists.txt
ssh4net Jan 13, 2026
99ac995
Update src/cmake/externalpackages.cmake
ssh4net Jan 13, 2026
d52fe81
Update src/libOpenImageIO/imagebufalgo_addsub.cpp
ssh4net Jan 13, 2026
1e15603
Update platform.h
ssh4net Jan 27, 2026
f650c54
Update imagebufalgo_addsub.cpp
ssh4net Jan 27, 2026
fe507c0
Update platform.h
ssh4net Jan 27, 2026
82d0735
Refactor HWY per-pixel ops and add strided ROI fallback tests
ssh4net Feb 1, 2026
b10eb4d
Optimize SIMD for RGB ROI on RGBA images
ssh4net Feb 23, 2026
adb88ac
Add HWY helpers for RGBA-with-RGB ROI
ssh4net Feb 24, 2026
7efd58b
docs: fix missing docs for `OIIO:attribute()` and `OIIO::getattribute…
lgritz Dec 30, 2025
737fdf4
deps: Test against libraw 0.21.5 (#4988)
lgritz Dec 30, 2025
e2fe404
feat(sgi): Implement RLE encoding support for output (#4990)
jessey-git Dec 31, 2025
8a640bd
docs: Update CHANGES (#4991)
lgritz Jan 1, 2026
ccf895e
deps: libheif 1.21 support (#4992)
lgritz Jan 5, 2026
c9bff44
perf: IBA::resample improvements to speed up 20x or more (#4993)
lgritz Jan 8, 2026
f078f05
ci/deps: Freetype adjustments (#4999)
lgritz Jan 9, 2026
0141771
ci: Speed up macos15 intel variant by not installing Qt (#4998)
lgritz Jan 9, 2026
0a3547a
ci: don't run non-wheel workflows when only pyproject.toml changes (#…
lgritz Jan 9, 2026
a9e48fa
fix(build): Fix building on OpenBSD (#5001)
brad0 Jan 10, 2026
eb77fe9
admin: Refine PR template to give more visual separation (#4995)
lgritz Jan 10, 2026
3b35e46
build: Fix HARDENING build options (#4996)
lgritz Jan 13, 2026
a330517
test: Add new ref image for jpeg test (#5007)
lgritz Jan 14, 2026
0a9bfef
docs: Remove outdated/wrong description in INSTALL.md (#5008)
lgritz Jan 15, 2026
0e7c066
ci: Windows runners switched which python version they had (#5010)
lgritz Jan 17, 2026
e8ee385
ci: test against libraw 0.22 for 'latest' test variants (#5009)
lgritz Jan 17, 2026
8e39e3c
fix: several bug fixes related to internal use of image_span (#5004)
lgritz Jan 18, 2026
71e2949
build: Use libheif exported config if available (#5012)
lgritz Jan 21, 2026
06c2c42
build: fully disable tests when their required dependencies are missi…
lgritz Jan 23, 2026
218e664
fix(heif): Can not output AVIF when libheif has no HEVC support (#5013)
brechtvl Jan 23, 2026
ae8feec
fix(webp): Use correct resolution limits for WebpOutput::open (#5016)
jessey-git Jan 28, 2026
2e2ef42
api: IBA::make_texture now honors "maketx:threads" hint (#5014)
lgritz Jan 28, 2026
9436413
api(ImageBuf): IB::localpixels_as_[writable_]byte_image_span (#5011)
lgritz Jan 28, 2026
c358b74
fix(heif): Error saving multiple images with different bit depths (#5…
brechtvl Jan 28, 2026
2b9dd6d
feat(heif): Add IOProxy for input and output (#5017)
brechtvl Jan 28, 2026
70f643d
fix(webp): Missing oiio:UnassociatedAlpha on input (#5020)
brechtvl Jan 29, 2026
a513661
build(ocio): bump build ver to 2.5.1 (#5022)
zachlewis Jan 30, 2026
bbdd55a
ci: lock bleeding edge to pybind11 latest version (#5024)
lgritz Jan 31, 2026
1581ba8
feat(iv): flip, rotate and save image (#5003)
vangeliq Feb 1, 2026
bf49452
CHANGES udpates (#5028)
lgritz Feb 1, 2026
e3f22f7
testing: Adjust test comparision thresholds for Mac ARM (#5026)
lgritz Feb 1, 2026
65a46fc
fix: conform certain attrib names "exif:*" to our "Exif:*" convention…
lgritz Feb 2, 2026
0937935
fix(win): `oiiotool --buildinfo` misreported platform on MSVS (#5027)
lgritz Feb 2, 2026
a13b599
testing: Add testsuite/heif ref output for libheif 1.21 + avif suppor…
lgritz Feb 6, 2026
8251bba
cleanup: remove left over tile emulation code for various formats (#5…
jessey-git Feb 6, 2026
d60bb81
api: OIIO_CONTRACT_ASSERT and other hardening improvements (#5006)
lgritz Feb 6, 2026
d287b87
ci: Don't install OpenCV on Mac Intel job variant (#5032)
lgritz Feb 7, 2026
adb8b37
fix(bmp): detect corrupt files where palette doesn't match bpp (#5030)
lgritz Feb 7, 2026
527aee2
fix(tiff): Fix TIFF output crash for multi-count Exif metadata (#5035)
lgritz Feb 11, 2026
289d454
build: Raise fmt auto-build version to 12.1, handle Windows flags (#5…
lgritz Feb 11, 2026
7a17ba4
fix(tiff): Improve TIFF robustness for non-matching tag/metadata type…
lgritz Feb 12, 2026
61f3882
fix: gamma precision (#5038)
adskWangl Feb 12, 2026
dc86d66
ci: Turn off nightly workflows for user forks (#5042)
lgritz Feb 13, 2026
5e42e7b
feat(heif): Monochrome channel read and write support, fix crash (#5043)
brechtvl Feb 13, 2026
1e22b6c
fix(tiff): Correctly read TIFF EXIF fields for ExifVersion and FlashP…
lgritz Feb 14, 2026
055c618
fix(oiiotool): Fix expression BOTTOM when there are exactly two image…
lgritz Feb 19, 2026
03dddc1
build: self-builder logic fixes for deep vs shallow clones (#5034)
lgritz Feb 20, 2026
9b58893
test: imageinout_test: add benchmark of read and write speed vs tile …
lgritz Feb 21, 2026
6517f07
build: Remove support for deprecated Intel icc compiler (#5040)
lgritz Feb 21, 2026
98c83de
build(deps): Raise minimum fmt library version to 9.0 (#5041)
lgritz Feb 22, 2026
77c1bf6
ci: temporarily disable python stub checking (#5061)
lgritz Feb 23, 2026
a841554
fix: address fmath.h warning with ispow2 (#5033)
lgritz Feb 24, 2026
ecdeabf
jxl: Extending JXL CICP support to include P3 / color primaries 12 (#…
shanesmith-dwa Feb 24, 2026
429b57d
clang-format
ssh4net Feb 24, 2026
01575cc
Remove duplicated resample_deep function
ssh4net Feb 24, 2026
30d20c3
clang-format fix
ssh4net Feb 24, 2026
9b0e7d5
clang-format fix
ssh4net Feb 24, 2026
bcf110f
weird clang-format fix
ssh4net Feb 24, 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
5 changes: 5 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@



------ :scissors: -------------------------------------------------------------------

YOU MAY DELETE ALL OF THIS IF YOU ALREADY HAVE A DESCRIPTIVE COMMIT MESSAGE!

This is just a template and set of reminders about what constitutes a good PR.
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ on:
- '!**/scorecard.yml'
- '!**/wheel.yml'
- '!**.properties'
- '!pyproject.toml'
- '!docs/**'
# Run analysis on PRs only if the branch name indicates that the purpose of
# the PR is related to the Sonar analysis. We don't run on every PR because
Expand All @@ -51,7 +52,7 @@ jobs:
name: "SonarCloud Analysis"
# Exclude runs on forks, since only the main org has the SonarCloud
# account credentials.
if: github.repository == 'AcademySoftwareFoundation/OpenImageIO'
if: github.event.repository.fork == false
uses: ./.github/workflows/build-steps.yml
# Must let the called steps workflow inherit necessary secrets
secrets:
Expand Down
99 changes: 44 additions & 55 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ on:
- '!**/scorecard.yml'
- '!**/wheel.yml'
- '!**.properties'
- '!pyproject.toml'
- '!docs/**'
pull_request:
paths:
Expand All @@ -26,7 +27,6 @@ on:
schedule:
# Full nightly build
- cron: "0 8 * * *"
if: github.repository == 'AcademySoftwareFoundation/OpenImageIO'
workflow_dispatch:
# This allows manual triggering of the workflow from the web

Expand All @@ -41,7 +41,7 @@ concurrency:
jobs:

aswf-old:
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
if: ${{ (github.event.repository.fork == false || github.event_name != 'schedule') && ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
name: "(old) ${{matrix.desc}}"
uses: ./.github/workflows/build-steps.yml
with:
Expand Down Expand Up @@ -91,7 +91,7 @@ jobs:
cxx_std: 17
python_ver: 3.9
simd: "avx2,f16c"
fmt_ver: 8.1.1
fmt_ver: 9.0.0
opencolorio_ver: v2.3.0
pybind11_ver: v2.9.0
setenvs: export FREETYPE_VERSION=VER-2-12-0
Expand Down Expand Up @@ -123,7 +123,7 @@ jobs:
vfxyear: 2022
old_node: 1
cxx_std: 17
fmt_ver: 7.0.1
fmt_ver: 9.0.0
opencolorio_ver: v2.3.0
openexr_ver: v3.1.0
pybind11_ver: v2.7.0
Expand All @@ -145,7 +145,7 @@ jobs:
cc_compiler: clang
cxx_compiler: clang++
cxx_std: 17
fmt_ver: 7.0.1
fmt_ver: 9.0.0
opencolorio_ver: v2.3.0
openexr_ver: v3.1.0
pybind11_ver: v2.7.0
Expand All @@ -167,7 +167,7 @@ jobs:
vfxyear: 2022
old_node: 1
cxx_std: 17
fmt_ver: 7.0.1
fmt_ver: 9.0.0
opencolorio_ver: v2.3.0
openexr_ver: v3.1.0
pybind11_ver: v2.7.0
Expand All @@ -190,7 +190,7 @@ jobs:
# Linux Tests using ASWF-docker containers
#
linux-aswf:
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
if: ${{ (github.event.repository.fork == false || github.event_name != 'schedule') && ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
name: "${{matrix.desc}}"
uses: ./.github/workflows/build-steps.yml
with:
Expand Down Expand Up @@ -241,39 +241,6 @@ jobs:
pybind11_ver: v2.10.0
setenvs: export PUGIXML_VERSION=v1.13
optional_deps_append: 'LibRaw;Ptex;Qt6'
- desc: VFX2023 icc/C++17 py3.10 exr3.1 ocio2.3 qt5.15
nametag: linux-vfx2023.icc
runner: ubuntu-latest
container: aswf/ci-osl:2023
opencolorio_ver: v2.3.0
python_ver: "3.10"
# simd: "avx2,f16c"
fmt_ver: 7.1.3
# icc MUST use this older FMT version
pybind11_ver: v2.9.0
setenvs: export USE_ICC=1 USE_OPENVDB=0 USE_OPENCV=0
OIIO_EXTRA_CPP_ARGS="-fp-model=precise"
FREETYPE_VERSION=VER-2-13-0
DISABLE_libuhdr=1
# For icc, use fp-model precise to eliminate needless LSB errors
# that make test results differ from other platforms.
optional_deps_append: "LibRaw;Ptex;Qt6"
- desc: VFX2025 icx/C++17 py3.11 exr3.3 ocio2.4 qt5.15
nametag: linux-vfx2023.icx
runner: ubuntu-latest
container: aswf/ci-oiio:2025
cc_compiler: icx
cxx_compiler: icpx
fmt_ver: 11.2.0
python_ver: "3.11"
pybind11_ver: v2.13.6
simd: "avx2,f16c"
benchmark: 1
setenvs: export USE_OPENVDB=0 USE_OPENCV=0
UHDR_CMAKE_C_COMPILER=gcc
UHDR_CMAKE_CXX_COMPILER=g++
# Building libuhdr with icx results in test failures
optional_deps_append: "LibRaw;Ptex;openjph;Qt6"
- desc: VFX2024 gcc11/C++17 py3.11 exr3.2 ocio2.3
nametag: linux-vfx2024
runner: ubuntu-latest
Expand Down Expand Up @@ -316,6 +283,7 @@ jobs:
container: aswf/ci-oiio:2025
cxx_std: 17
build_type: Debug
ctest_test_timeout: "240"
python_ver: "3.11"
simd: "avx2,f16c"
fmt_ver: 11.2.0
Expand All @@ -335,6 +303,22 @@ jobs:
# setenvs: export PUGIXML_VERSION=v1.15
# BUILD_SHARED_LIBS=OFF
# optional_deps_append: "openjph;Qt6"
- desc: VFX2025 icx/C++17 py3.11 exr3.3 ocio2.4 qt5.15
nametag: linux-vfx2025.icx
runner: ubuntu-latest
container: aswf/ci-oiio:2025
cc_compiler: icx
cxx_compiler: icpx
fmt_ver: 11.2.0
python_ver: "3.11"
pybind11_ver: v2.13.6
simd: "avx2,f16c"
benchmark: 1
setenvs: export USE_OPENVDB=0 USE_OPENCV=0
UHDR_CMAKE_C_COMPILER=gcc
UHDR_CMAKE_CXX_COMPILER=g++
# Building libuhdr with icx results in test failures
optional_deps_append: "LibRaw;Ptex;openjph;Qt6"
- desc: VFX2026 gcc14/C++20 py3.13 exr3.4 ocio2.4
nametag: linux-vfx2026
runner: ubuntu-latest
Expand Down Expand Up @@ -387,7 +371,7 @@ jobs:
# Linux Tests using GHA Ubuntu runners directly
#
linux-ubuntu:
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
if: ${{ (github.event.repository.fork == false || github.event_name != 'schedule') && ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
name: "${{matrix.desc}}"
uses: ./.github/workflows/build-steps.yml
with:
Expand Down Expand Up @@ -460,13 +444,13 @@ jobs:
simd: avx2,f16c
setenvs: export LIBJPEGTURBO_VERSION=3.1.2
LIBPNG_VERSION=v1.6.50
LIBRAW_VERSION=0.21.4
LIBRAW_VERSION=0.22.0
LIBTIFF_VERSION=v4.7.1
OPENJPEG_VERSION=v2.5.4
PTEX_VERSION=v2.5.0
PUGIXML_VERSION=v1.15
WEBP_VERSION=v1.6.0
FREETYPE_VERSION=VER-2-14-0
FREETYPE_VERSION=VER-2-14-1
USE_OPENVDB=0
# Ensure we are testing all the deps we think we are. We would
# like this test to have minimal missing dependencies.
Expand All @@ -481,7 +465,7 @@ jobs:
fmt_ver: master
opencolorio_ver: main
openexr_ver: main
pybind11_ver: master
pybind11_ver: v3.0.1
python_ver: "3.12"
simd: avx2,f16c
benchmark: 1
Expand All @@ -493,7 +477,7 @@ jobs:
PTEX_VERSION=main
PUGIXML_VERSION=master
WEBP_VERSION=main
OIIO_CMAKE_FLAGS="-DOIIO_HARDENING=2"
OIIO_HARDENING=2
EXTRA_DEP_PACKAGES="python3.12-dev python3-numpy"
USE_OPENVDB=0
FREETYPE_VERSION=master
Expand All @@ -513,10 +497,11 @@ jobs:
simd: avx2,f16c
setenvs: export OpenImageIO_BUILD_LOCAL_DEPS=all
OpenImageIO_DEPENDENCY_BUILD_VERBOSE=ON
LIBRAW_VERSION=0.21.4
LIBRAW_VERSION=0.22.0
PTEX_VERSION=v2.4.2
PUGIXML_VERSION=v1.14
WEBP_VERSION=v1.4.0
OIIO_HARDENING=3
- desc: clang18 C++17 avx2 exr3.1 ocio2.3
nametag: linux-clang18
runner: ubuntu-24.04
Expand All @@ -543,13 +528,13 @@ jobs:
python_ver: "3.12"
setenvs: export LIBJPEGTURBO_VERSION=3.1.2
LIBPNG_VERSION=v1.6.50
LIBRAW_VERSION=0.21.4
LIBRAW_VERSION=0.22.0
LIBTIFF_VERSION=v4.7.1
OPENJPEG_VERSION=v2.5.4
PTEX_VERSION=v2.4.3
PUGIXML_VERSION=v1.15
WEBP_VERSION=v1.6.0
FREETYPE_VERSION=VER-2-14-0
FREETYPE_VERSION=VER-2-14-1
USE_OPENVDB=0
- desc: Linux ARM latest releases clang18 C++20 py3.12 exr3.4 ocio2.4
nametag: linux-arm-latest-releases-clang
Expand All @@ -564,21 +549,21 @@ jobs:
python_ver: "3.12"
setenvs: export LIBJPEGTURBO_VERSION=3.1.2
LIBPNG_VERSION=v1.6.50
LIBRAW_VERSION=0.21.4
LIBRAW_VERSION=0.22.0
LIBTIFF_VERSION=v4.7.1
OPENJPEG_VERSION=v2.5.4
PTEX_VERSION=v2.4.3
PUGIXML_VERSION=v1.15
WEBP_VERSION=v1.6.0
FREETYPE_VERSION=VER-2-14-0
FREETYPE_VERSION=VER-2-14-1
USE_OPENVDB=0


#
# MacOS Tests
#
macos:
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'linux-only') }}
if: ${{ (github.event.repository.fork == false || github.event_name != 'schedule') && ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'linux-only') }}
name: "${{matrix.desc}}"
uses: ./.github/workflows/build-steps.yml
with:
Expand Down Expand Up @@ -627,6 +612,8 @@ jobs:
simd: sse4.2,avx2
ctest_test_timeout: 1200
setenvs: export MACOSX_DEPLOYMENT_TARGET=12.0
INSTALL_QT=0 INSTALL_OPENCV=0
optional_deps_append: 'OpenCV;Qt5;Qt6'
benchmark: 1
- desc: MacOS-14-ARM aclang15/C++20/py3.13
runner: macos-14
Expand All @@ -649,7 +636,7 @@ jobs:
# Windows Tests
#
windows:
if: ${{ ! contains(github.ref, 'linux-only') && ! contains(github.ref, 'macos-only') }}
if: ${{ (github.event.repository.fork == false || github.event_name != 'schedule') && ! contains(github.ref, 'linux-only') && ! contains(github.ref, 'macos-only') }}
name: "${{matrix.desc}}"
uses: ./.github/workflows/build-steps.yml
with:
Expand Down Expand Up @@ -683,7 +670,7 @@ jobs:
# built. But we would like to add more dependencies and reduce this list
# of exceptions in the future.
required_deps: ${{ matrix.required_deps || 'all' }}
optional_deps: ${{ matrix.optional_deps || 'CUDAToolkit;DCMTK;FFmpeg;GIF;JXL;Libheif;LibRaw;Nuke;OpenCV;OpenGL;OpenJPEG;openjph;OpenCV;OpenVDB;Ptex;pystring;Qt5;Qt6;TBB;R3DSDK;${{matrix.optional_deps_append}}' }}
optional_deps: ${{ matrix.optional_deps || 'BZip2;CUDAToolkit;DCMTK;FFmpeg;GIF;JXL;Libheif;LibRaw;Nuke;OpenCV;OpenGL;OpenJPEG;openjph;OpenCV;OpenVDB;Ptex;pystring;Qt5;Qt6;TBB;R3DSDK;${{matrix.optional_deps_append}}' }}
strategy:
fail-fast: false
matrix:
Expand All @@ -693,13 +680,15 @@ jobs:
nametag: windows-2022
vsver: 2022
generator: "Visual Studio 17 2022"
python_ver: "3.9"
python_ver: "3.12"
ctest_test_timeout: "240"
setenvs: export OPENIMAGEIO_PYTHON_LOAD_DLLS_FROM_PATH=1
- desc: Windows-2025 VS2022
runner: windows-2025
nametag: windows-2025
vsver: 2022
generator: "Visual Studio 17 2022"
python_ver: "3.9"
python_ver: "3.12"
ctest_test_timeout: "240"
setenvs: export OPENIMAGEIO_PYTHON_LOAD_DLLS_FROM_PATH=1
benchmark: 1
4 changes: 3 additions & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ on:
- '**/run.py'
- 'src/build-scripts/**'
- './*.md'
- 'pyproject.toml'
pull_request:
paths-ignore:
- '**/ci.yml'
Expand All @@ -33,10 +34,10 @@ on:
- '**/run.py'
- 'src/build-scripts/**'
- './*.md'
- 'pyproject.toml'
schedule:
# Full nightly build
- cron: "0 8 * * *"
if: github.repository == 'AcademySoftwareFoundation/OpenImageIO'
workflow_dispatch:
# This allows manual triggering of the workflow from the web

Expand All @@ -51,6 +52,7 @@ concurrency:
jobs:
docs:
name: "Docs / ${{matrix.desc}}"
if: ${{ github.event_name != 'schedule' || github.event.repository.fork == false }}
uses: ./.github/workflows/build-steps.yml
with:
nametag: ${{ matrix.nametag || 'unnamed!' }}
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
push:
# Run on pushes to main, but only the official repo, not forks
branches: [ "main" ]
if: github.event.pull_request.head.repo.full_name == github.repository
pull_request:
# Only run on individual PRs if the workflows changed
paths:
Expand All @@ -28,7 +27,7 @@ concurrency:
jobs:
analysis:
name: Scorecards analysis
if: github.repository == 'AcademySoftwareFoundation/OpenImageIO'
if: github.event.repository.fork == false
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
Expand Down
Loading
Loading