Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
512 commits
Select commit Hold shift + click to select a range
d15e17e
feat(exr): Write OpenEXR colorInteropID metadata based on oiio:ColorS…
brechtvl Dec 19, 2025
f95b0c3
feat(JXL): CICP read and write support for JPEG XL (#4968)
brechtvl Dec 22, 2025
4debaa1
docs: fix missing docs for `OIIO:attribute()` and `OIIO::getattribute…
lgritz Dec 30, 2025
304e51d
deps: Test against libraw 0.21.5 (#4988)
lgritz Dec 30, 2025
64cb1c4
feat(sgi): Implement RLE encoding support for output (#4990)
jessey-git Dec 31, 2025
932b7e0
docs: Update CHANGES (#4991)
lgritz Jan 1, 2026
5162e80
deps: libheif 1.21 support (#4992)
lgritz Jan 5, 2026
22d0007
perf: IBA::resample improvements to speed up 20x or more (#4993)
lgritz Jan 8, 2026
39ff776
ci/deps: Freetype adjustments (#4999)
lgritz Jan 9, 2026
738e3df
ci: Speed up macos15 intel variant by not installing Qt (#4998)
lgritz Jan 9, 2026
3617c1c
ci: don't run non-wheel workflows when only pyproject.toml changes (#…
lgritz Jan 9, 2026
8c09bc6
fix(build): Fix building on OpenBSD (#5001)
brad0 Jan 10, 2026
c83ef5e
admin: Refine PR template to give more visual separation (#4995)
lgritz Jan 10, 2026
64225cd
build: Fix HARDENING build options (#4996)
lgritz Jan 13, 2026
2e07465
test: Add new ref image for jpeg test (#5007)
lgritz Jan 14, 2026
6421305
docs: Remove outdated/wrong description in INSTALL.md (#5008)
lgritz Jan 15, 2026
c95b4d5
ci: Windows runners switched which python version they had (#5010)
lgritz Jan 17, 2026
cc8d120
ci: test against libraw 0.22 for 'latest' test variants (#5009)
lgritz Jan 17, 2026
4933f6d
fix: several bug fixes related to internal use of image_span (#5004)
lgritz Jan 18, 2026
30e9bc2
build: Use libheif exported config if available (#5012)
lgritz Jan 21, 2026
ea1820b
build: fully disable tests when their required dependencies are missi…
lgritz Jan 23, 2026
61a57a7
fix(heif): Can not output AVIF when libheif has no HEVC support (#5013)
brechtvl Jan 23, 2026
ea44c3f
fix(webp): Use correct resolution limits for WebpOutput::open (#5016)
jessey-git Jan 28, 2026
ccc4039
api: IBA::make_texture now honors "maketx:threads" hint (#5014)
lgritz Jan 28, 2026
fae7a3d
api(ImageBuf): IB::localpixels_as_[writable_]byte_image_span (#5011)
lgritz Jan 28, 2026
4352e73
fix(heif): Error saving multiple images with different bit depths (#5…
brechtvl Jan 28, 2026
3d1cf90
feat(heif): Add IOProxy for input and output (#5017)
brechtvl Jan 28, 2026
55807a4
fix(webp): Missing oiio:UnassociatedAlpha on input (#5020)
brechtvl Jan 29, 2026
2b9fd0c
build(ocio): bump build ver to 2.5.1 (#5022)
zachlewis Jan 30, 2026
d3929d4
ci: lock bleeding edge to pybind11 latest version (#5024)
lgritz Jan 31, 2026
9b56e2b
feat(iv): flip, rotate and save image (#5003)
vangeliq Feb 1, 2026
3d49f5c
CHANGES udpates (#5028)
lgritz Feb 1, 2026
bd3b956
testing: Adjust test comparision thresholds for Mac ARM (#5026)
lgritz Feb 1, 2026
284e2b3
fix: conform certain attrib names "exif:*" to our "Exif:*" convention…
lgritz Feb 2, 2026
a9fb445
fix(win): `oiiotool --buildinfo` misreported platform on MSVS (#5027)
lgritz Feb 2, 2026
7630cfc
testing: Add testsuite/heif ref output for libheif 1.21 + avif suppor…
lgritz Feb 6, 2026
aa2bd86
cleanup: remove left over tile emulation code for various formats (#5…
jessey-git Feb 6, 2026
9897658
api: OIIO_CONTRACT_ASSERT and other hardening improvements (#5006)
lgritz Feb 6, 2026
ceefa5c
ci: Don't install OpenCV on Mac Intel job variant (#5032)
lgritz Feb 7, 2026
7d02d63
fix(bmp): detect corrupt files where palette doesn't match bpp (#5030)
lgritz Feb 7, 2026
6d19f4b
fix(tiff): Fix TIFF output crash for multi-count Exif metadata (#5035)
lgritz Feb 11, 2026
a5a97b9
build: Raise fmt auto-build version to 12.1, handle Windows flags (#5…
lgritz Feb 11, 2026
899d5de
fix(tiff): Improve TIFF robustness for non-matching tag/metadata type…
lgritz Feb 12, 2026
11d1b6c
fix: gamma precision (#5038)
adskWangl Feb 12, 2026
317a79e
ci: Turn off nightly workflows for user forks (#5042)
lgritz Feb 13, 2026
6cb7e0f
feat(heif): Monochrome channel read and write support, fix crash (#5043)
brechtvl Feb 13, 2026
e4c2abb
fix(tiff): Correctly read TIFF EXIF fields for ExifVersion and FlashP…
lgritz Feb 14, 2026
3a9fdc1
fix(oiiotool): Fix expression BOTTOM when there are exactly two image…
lgritz Feb 19, 2026
8bbee37
build: self-builder logic fixes for deep vs shallow clones (#5034)
lgritz Feb 20, 2026
1b7b4f6
test: imageinout_test: add benchmark of read and write speed vs tile …
lgritz Feb 21, 2026
e8b72c2
build: Remove support for deprecated Intel icc compiler (#5040)
lgritz Feb 21, 2026
6e77a93
build(deps): Raise minimum fmt library version to 9.0 (#5041)
lgritz Feb 22, 2026
31c5f6a
ci: temporarily disable python stub checking (#5061)
lgritz Feb 23, 2026
5d4014d
fix: address fmath.h warning with ispow2 (#5033)
lgritz Feb 24, 2026
094dcc7
jxl: Extending JXL CICP support to include P3 / color primaries 12 (#…
shanesmith-dwa Feb 24, 2026
2f2e2b5
build: use quote to avoid error if variable is empty (#5053)
lgritz Feb 26, 2026
115a46a
fix(oiiotool): `-d SUBIMAGENAME.*` didn't work properly (#5048)
lgritz Feb 26, 2026
ef2b36e
fix: Fixups for new TypeURational after PR #5036 (#5057)
lgritz Feb 26, 2026
a0af318
fix(oiiotool): make sure `oiiotool --compression` does expression sub…
lgritz Feb 28, 2026
6f20ebf
ci: add MacOS 26 (ARM) to the CI lineup (#5059)
lgritz Feb 28, 2026
c12708b
Update CHANGES and stage for tagging 3.2.0.0-dev preview
lgritz Feb 28, 2026
5909833
Bump version after developer preview tag
lgritz Feb 28, 2026
77f570f
ci: Add CI test for MSVS 2026 (#5060)
lgritz Mar 1, 2026
31608f8
feat(tiff): Support GPS fields, and other metadata enhancements (#5050)
lgritz Mar 4, 2026
086bf40
ci: On Mac Intel CI variant, don't insall openvdb, for speed (#5065)
lgritz Mar 7, 2026
b34b2d8
docs: Update description for dwaCompressionLevel (#5074)
Aamir-Raza Mar 7, 2026
498c5e5
test: Add new ref output for tiff-misc (#5075)
lgritz Mar 7, 2026
eb7277b
docs: fix formatting examples for version macros (#5073)
lgritz Mar 7, 2026
9ef83fd
fix(texture): fix texture overblur with st-blur parameters (#5071)
lecocqp Mar 7, 2026
f4c957f
build: Test building with clang 22.1, fix warnings uncovered (#5067)
lgritz Mar 7, 2026
bf63340
fix(python): Address new pybind11 float/int auto-conversion behavior …
lgritz Mar 7, 2026
b74cf4b
fix(win): Embed manifest in OIIO .exes to enable long path handling (…
nrusch Mar 7, 2026
3030249
fix(oiiotool): better type understanding with -i:ch= and other cleanu…
lgritz Mar 11, 2026
f1270a1
ci: For security, replace some workflow substitutions with safer env …
lgritz Mar 11, 2026
d233608
testing: New ref output for heif no-avif case (#5079)
lgritz Mar 11, 2026
ded4bda
fix(texture): remove legacy_texture_blur override (#5080)
lecocqp Mar 11, 2026
4209138
fix(tiff): wrong number of values passed to invert_photometric (#5083)
lgritz Mar 15, 2026
656c857
docs: keep TextureSystem docs in sync with ImageCache (#5085)
lgritz Mar 15, 2026
bb12115
ImageInput::check_open fixes and new checks (#5087)
lgritz Mar 15, 2026
db24e34
fix(jpeg): Improved safety and error reporting for jpeg and iptc (#5081)
lgritz Mar 15, 2026
dabbe0b
fix(tiff): fix buffer overrun and make better error reporting (#5082)
lgritz Mar 16, 2026
ade6ab6
build: Improve security by pinning auto-build dependencies by hash (#…
lgritz Mar 16, 2026
432d51f
ci: Speed up slow benchmarks for debug and sanitizer CI tests (#5077)
lgritz Mar 16, 2026
c09eaf9
fix(bmp): use check_open to guard against corrupt resolutions (#5086)
lgritz Mar 16, 2026
20d4f09
fix(tiff): check for invalid bit depth for palette images (#5091)
lgritz Mar 17, 2026
e04de46
fix(psd): fixes against corrupt files with better validation (#5089)
lgritz Mar 17, 2026
5371c00
docs: Fix typos and incorrect attribute name in a comment (#5093)
lgritz Mar 18, 2026
89a9972
cleanup: Add .cache to .gitignore (#5092)
lgritz Mar 18, 2026
401f4a5
fix(heif): Invalid read writing 8bit and dimensions not a multiple of…
brechtvl Mar 18, 2026
c31f3c3
ci: Bump GitHub Actions to latest versions (#5078)
lgritz Mar 18, 2026
2b832d0
ci: Try to fix broken Mac CI with full compiler paths to Apple clang …
lgritz Mar 20, 2026
80cd45a
build: Fix broken Mac wheel building by specifying compiler path (#5101)
lgritz Mar 20, 2026
bf3e4ea
fix(ico): Various validity checks and error handling for corruptions …
lgritz Mar 20, 2026
ea6b83b
deps: Need new ref output for ffmpeg 8.1 (#5099)
lgritz Mar 21, 2026
5928f67
fix: ImageSpec::metadata_val improved safety (#5096)
lgritz Mar 23, 2026
17f8432
fix(rla): lots of additional validity checking and safety (#5094)
lgritz Mar 23, 2026
a87b7ce
fix(jpeg2000): Suppress leak when reading with OpenJPH (#5098)
lgritz Mar 23, 2026
9771123
admin: Draft policy on use of AI coding assistants (#5072)
lgritz Mar 23, 2026
f0a7bdd
build: Include idiff in the python wheels we build (#5104)
lgritz Mar 23, 2026
abd9714
ci: Push to newest actions except jobs needing old containers (#5110)
lgritz Mar 25, 2026
4717032
fix: Fix UB-sanitizer warning about alignment (#5097)
lgritz Mar 25, 2026
12323d1
fix: catch exceptions in print-uncaught-messages destructor (#5103)
lgritz Mar 25, 2026
c24a821
fix: enhanced exception safety for our use of OpenColorIO (#5114)
lgritz Mar 27, 2026
6283da6
ci: Yet another tiff-misc ref output (#5112)
lgritz Mar 28, 2026
3a3dd20
docs: Fix misstatement about oiiotool `--if` (#5102)
lgritz Mar 28, 2026
1485d3b
fix: Fix UB in exif parsing of corrupt data (#5113)
lgritz Mar 28, 2026
2060a57
ci: Fix UB in exif parse, revert PR #5113, move sanitizer test to 202…
lgritz Mar 30, 2026
37a8983
fix: fix possible fmt exceptions where we might have passed null stri…
lgritz Mar 30, 2026
7390857
fix(IBA): Handle offset data windows in fillholes_pushpull (#5105)
lgritz Mar 30, 2026
52d1d0c
ci: update container versions, move 3 variants from 2022 to Ubuntu (#…
lgritz Mar 31, 2026
654b417
docs: Various updates related to the AI policy (#5116)
lgritz Mar 31, 2026
e8f6750
CHANGES updates
lgritz Apr 1, 2026
296d490
fix(ustring): protect against idempotent rehash upon collision (#5090)
lgritz Apr 1, 2026
6c625be
Add imiv viewer app and CMake support
ssh4net Mar 1, 2026
42dfb13
Add Vulkan preview pipeline and image navigation
ssh4net Mar 2, 2026
d4082c1
Add prefs, recent files, subimage/mip support
ssh4net Mar 2, 2026
78880b5
Improve UI layout dumping, status bar, and mouse mode
ssh4net Mar 4, 2026
33663a2
Add pixel probe, EXIF orientation & sorting
ssh4net Mar 5, 2026
44d8d25
Record custom deps; install fonts; imiv improvements
ssh4net Mar 6, 2026
233f6d5
Add preview window and controls
ssh4net Mar 6, 2026
decb035
Add test-engine mouse control and zoom/pan
ssh4net Mar 7, 2026
2eb501a
Improve viewer navigation, Vulkan setup, and tests
ssh4net Mar 9, 2026
d9cd996
Modularize imiv: split app into multiple sources
ssh4net Mar 10, 2026
a1152d0
Add Vulkan capture and refactor UI modules
ssh4net Mar 10, 2026
ed9381f
Add drag-and-drop support and multi-file open
ssh4net Mar 10, 2026
0e38b9c
Add area-probe drag overlay and stats
ssh4net Mar 10, 2026
854911e
Add OCIO integration and runtime GLSL
ssh4net Mar 11, 2026
e3e4c36
Add OCIO config selection and file dialog
ssh4net Mar 12, 2026
5ba4809
Add developer menu, screenshots & glslang support
ssh4net Mar 12, 2026
43b26a1
Add raw color support and ImageCache usage
ssh4net Mar 12, 2026
3f1885f
Add OCIO regression tests and fallbacks
ssh4net Mar 13, 2026
eb7cd05
OCIO builtin fallback & GUI test improvements
ssh4net Mar 13, 2026
af9bb5e
Add auto-subimage-from-zoom behavior and tests
ssh4net Mar 13, 2026
eaf9ea7
Add persistent image selection and tests
ssh4net Mar 14, 2026
fb14c05
Fix ImGui styles, selection, and Vulkan semaphores
ssh4net Mar 14, 2026
5a849a6
Add UI style presets and refactor mouse modes
ssh4net Mar 15, 2026
491c15d
Add renderer abstraction and Vulkan shim
ssh4net Mar 16, 2026
f38ebc0
Add multi-backend renderer selection & GLFW layer
ssh4net Mar 16, 2026
e21f477
GLFW multi-backend support and OpenGL preview
ssh4net Mar 16, 2026
c36a856
Add OpenGL OCIO GLSL support and tests
ssh4net Mar 16, 2026
36a78f4
Add Metal preview and OpenGL selection regression
ssh4net Mar 17, 2026
e68bfaa
Update CMakeLists.txt
ssh4net Mar 17, 2026
88ace10
Use uintptr_t reinterpret_cast for Metal textures
ssh4net Mar 17, 2026
94175cc
Add macOS Metal backend verification tools
ssh4net Mar 17, 2026
83c5aca
Use build/ and auto-detect imiv_env.sh
ssh4net Mar 17, 2026
d43c964
Metal: implement screenshot readback and test
ssh4net Mar 17, 2026
a8ee770
Update imiv_renderer_metal.mm
ssh4net Mar 17, 2026
f4713e4
Metal: GPU preview pipeline and ctest
ssh4net Mar 17, 2026
4bc70ba
Update imiv_renderer_metal.mm
ssh4net Mar 17, 2026
a6c6703
Update imiv_renderer_metal.mm
ssh4net Mar 17, 2026
e9bcb29
Add Metal OCIO preview and orientation regression
ssh4net Mar 17, 2026
0619a60
Use safe math on macOS 15; require RGB channels
ssh4net Mar 18, 2026
dad1ed0
Add Metal OCIO live-update tests and macOS fixes
ssh4net Mar 18, 2026
26b6ef9
Use normalized RGB diff, improve macOS verify
ssh4net Mar 18, 2026
9987653
Update imiv_macos_backend_verify.sh
ssh4net Mar 18, 2026
9bc57b0
Support external/URI OCIO configs for imiv tests
ssh4net Mar 18, 2026
4029cd9
Add OCIO state dumps and switch-mode for tests
ssh4net Mar 18, 2026
665fcc9
Log Metal OCIO fallback; output state in OCIO tests
ssh4net Mar 18, 2026
5f57cef
Split texture and uniform call params
ssh4net Mar 18, 2026
e2043f2
Add Metal ImGui backend and sampling regression
ssh4net Mar 18, 2026
e61150b
Add per-case timeout to OCIO tools, update Windows doc
ssh4net Mar 18, 2026
2fd6545
Add cross-platform imiv backend verifier
ssh4net Mar 18, 2026
45bb154
imiv: multi-backend CMake refactor
ssh4net Mar 19, 2026
5c2bb04
Add backend preferences regression test
ssh4net Mar 19, 2026
6e5431d
Use backend buttons in Preferences UI
ssh4net Mar 19, 2026
bb10537
Add imiv docs and Vulkan capture support
ssh4net Mar 21, 2026
b92b914
Add native texture upload & fix Vulkan capture
ssh4net Mar 21, 2026
efd17bb
Add imiv RGB input regression test
ssh4net Mar 21, 2026
d109eff
Add shared sampling regression and tests
ssh4net Mar 21, 2026
8bbe7f6
Add linear interpolation support and tests
ssh4net Mar 21, 2026
57d8072
Update imiv_sampling_regression.py
ssh4net Mar 21, 2026
17cac45
Improve screen capture scaling and backend casts
ssh4net Mar 21, 2026
983e5cf
Document multi-backend support and verifier status
ssh4net Mar 22, 2026
5305907
Probe and expose runtime renderer availability
ssh4net Mar 22, 2026
3b7dd38
Add runtime-controlled developer mode
ssh4net Mar 25, 2026
9468448
Add multi-view workspace and shared library
ssh4net Mar 26, 2026
2aab8c5
Per-view recipes, folder open, and save-selection
ssh4net Mar 27, 2026
d01278a
Add view-oriented Export As/Selection and OCIO tests
ssh4net Mar 27, 2026
86ec1e3
fix(oiiotool): make sure `oiiotool --compression` does expression sub…
lgritz Feb 28, 2026
a6bc579
ci: add MacOS 26 (ARM) to the CI lineup (#5059)
lgritz Feb 28, 2026
1bd6c6c
Update CHANGES and stage for tagging 3.2.0.0-dev preview
lgritz Feb 28, 2026
8d7d13c
Bump version after developer preview tag
lgritz Feb 28, 2026
3ade3aa
ci: Add CI test for MSVS 2026 (#5060)
lgritz Mar 1, 2026
13b0577
feat(tiff): Support GPS fields, and other metadata enhancements (#5050)
lgritz Mar 4, 2026
5bba433
ci: On Mac Intel CI variant, don't insall openvdb, for speed (#5065)
lgritz Mar 7, 2026
e8ca467
docs: Update description for dwaCompressionLevel (#5074)
Aamir-Raza Mar 7, 2026
365fd5e
test: Add new ref output for tiff-misc (#5075)
lgritz Mar 7, 2026
c00b6f1
docs: fix formatting examples for version macros (#5073)
lgritz Mar 7, 2026
c5c81ee
fix(texture): fix texture overblur with st-blur parameters (#5071)
lecocqp Mar 7, 2026
e5b8abe
build: Test building with clang 22.1, fix warnings uncovered (#5067)
lgritz Mar 7, 2026
616196d
fix(python): Address new pybind11 float/int auto-conversion behavior …
lgritz Mar 7, 2026
cedeada
fix(win): Embed manifest in OIIO .exes to enable long path handling (…
nrusch Mar 7, 2026
23fda9b
fix(oiiotool): better type understanding with -i:ch= and other cleanu…
lgritz Mar 11, 2026
cde0edb
ci: For security, replace some workflow substitutions with safer env …
lgritz Mar 11, 2026
fb74686
testing: New ref output for heif no-avif case (#5079)
lgritz Mar 11, 2026
7a4fd07
fix(texture): remove legacy_texture_blur override (#5080)
lecocqp Mar 11, 2026
e42617d
fix(tiff): wrong number of values passed to invert_photometric (#5083)
lgritz Mar 15, 2026
b5f2ee9
docs: keep TextureSystem docs in sync with ImageCache (#5085)
lgritz Mar 15, 2026
55ff96a
ImageInput::check_open fixes and new checks (#5087)
lgritz Mar 15, 2026
12ab581
fix(jpeg): Improved safety and error reporting for jpeg and iptc (#5081)
lgritz Mar 15, 2026
dc36672
fix(tiff): fix buffer overrun and make better error reporting (#5082)
lgritz Mar 16, 2026
6d34a14
build: Improve security by pinning auto-build dependencies by hash (#…
lgritz Mar 16, 2026
5d4ed73
ci: Speed up slow benchmarks for debug and sanitizer CI tests (#5077)
lgritz Mar 16, 2026
c35ee20
fix(bmp): use check_open to guard against corrupt resolutions (#5086)
lgritz Mar 16, 2026
a995251
fix(tiff): check for invalid bit depth for palette images (#5091)
lgritz Mar 17, 2026
92d3519
fix(psd): fixes against corrupt files with better validation (#5089)
lgritz Mar 17, 2026
fcccf14
docs: Fix typos and incorrect attribute name in a comment (#5093)
lgritz Mar 18, 2026
895bdfc
cleanup: Add .cache to .gitignore (#5092)
lgritz Mar 18, 2026
b5bf77b
fix(heif): Invalid read writing 8bit and dimensions not a multiple of…
brechtvl Mar 18, 2026
73c822f
ci: Bump GitHub Actions to latest versions (#5078)
lgritz Mar 18, 2026
55977ce
ci: Try to fix broken Mac CI with full compiler paths to Apple clang …
lgritz Mar 20, 2026
3fb7266
build: Fix broken Mac wheel building by specifying compiler path (#5101)
lgritz Mar 20, 2026
9dd2c13
fix(ico): Various validity checks and error handling for corruptions …
lgritz Mar 20, 2026
1ad087c
deps: Need new ref output for ffmpeg 8.1 (#5099)
lgritz Mar 21, 2026
471ab7e
fix: ImageSpec::metadata_val improved safety (#5096)
lgritz Mar 23, 2026
9dc100d
fix(rla): lots of additional validity checking and safety (#5094)
lgritz Mar 23, 2026
eacd42e
fix(jpeg2000): Suppress leak when reading with OpenJPH (#5098)
lgritz Mar 23, 2026
3f01b40
admin: Draft policy on use of AI coding assistants (#5072)
lgritz Mar 23, 2026
45d897e
build: Include idiff in the python wheels we build (#5104)
lgritz Mar 23, 2026
337ed58
ci: Push to newest actions except jobs needing old containers (#5110)
lgritz Mar 25, 2026
16006e9
fix: Fix UB-sanitizer warning about alignment (#5097)
lgritz Mar 25, 2026
c4b5d39
fix: catch exceptions in print-uncaught-messages destructor (#5103)
lgritz Mar 25, 2026
3ef50d9
Increase Vulkan descriptor pools and add guards
ssh4net Mar 28, 2026
b51530c
Embed Vulkan SPIR-V into headers
ssh4net Mar 30, 2026
bb16941
Striped GPU uploads for large images
ssh4net Mar 30, 2026
cb4de5c
Vulkan texture retirement, UI and probe fixes
ssh4net Mar 31, 2026
9211c8c
Embed fonts and SPIR-V; Image List/UI fixes
ssh4net Apr 1, 2026
b682ec1
Add OpenGL multi-open OCIO test and clear GL errors
ssh4net Apr 1, 2026
155cb03
Merge branch '_imgui' of https://github.com/ssh4net/OpenImageIO into …
ssh4net Apr 1, 2026
9a7e4a0
Use scenario runner for auto subimage regression
ssh4net Apr 2, 2026
295effe
Merge remote-tracking branch 'upstream/main' into _imgui
ssh4net Apr 2, 2026
4e5a67d
Merge branch 'main' into _imgui
ssh4net Apr 2, 2026
6a0f526
clang-format fix
ssh4net Apr 2, 2026
5874180
Exclude dnd_glfw from clang-format
ssh4net Apr 2, 2026
db4060f
Record and display custom build dependencies (regression fix)
ssh4net Apr 2, 2026
838003e
Add 'Always on Top' and 'Reset Windows' features
ssh4net Apr 3, 2026
b211645
Format: normalize spacing in imiv sources
ssh4net Apr 3, 2026
b6b9e2f
Add UiMetrics and replace hardcoded UI values
ssh4net Apr 4, 2026
b6b1aad
Refactoring
ssh4net Apr 7, 2026
d9652cd
Use source.c_str() for NSString creation
ssh4net Apr 7, 2026
53e1f80
dnd_glfw: headers, style and macOS fix
ssh4net Apr 7, 2026
2302fca
Refactor Metal OCIO shader setup & rendering
ssh4net Apr 7, 2026
27e95f6
Extract image save logic into new module
ssh4net Apr 8, 2026
6235eae
Add Image List UI and Preferences window
ssh4net Apr 8, 2026
6a86bfa
Use ImGui functions directly in renderer vtables
ssh4net Apr 9, 2026
8f9a1c9
Remove legacy backend/workspace, add preferences UI
ssh4net Apr 9, 2026
51f63a8
Refactor OpenGL/Vulkan backend setup
ssh4net Apr 9, 2026
2f271a0
Add batched upload_corpus smoke runner and test
ssh4net Apr 9, 2026
b351a0e
Add buffer helpers and image barrier util
ssh4net Apr 9, 2026
2f391ee
Add probe state and refactor Vulkan cleanup
ssh4net Apr 9, 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
10 changes: 8 additions & 2 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Language: Cpp
---
BasedOnStyle: WebKit

AccessModifierOffset: -4
Expand Down Expand Up @@ -121,11 +121,17 @@ SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++17
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 8
UseTab: Never
#...

---
Language: Cpp
Standard: c++17

---
Language: ObjC
Standard: c++17
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,5 @@ gastest.o
/*.log


/build_*
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does this file change?

/bld
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ if (OIIO_BUILD_TOOLS AND NOT BUILD_OIIOUTIL_ONLY)
add_subdirectory (src/idiff)
add_subdirectory (src/igrep)
add_subdirectory (src/iinfo)
add_subdirectory (src/imiv)
add_subdirectory (src/maketx)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line is fine, but about 10 lines higher up, you probably need an ENABLE_imiv switch for the SKBUILD case.

(GitHub reviews unfortunately do not line you add comments to code that didn't change, even if you are just trying to point a place that SHOULD have changed!)

add_subdirectory (src/oiiotool)
add_subdirectory (src/testtex)
Expand Down
1 change: 0 additions & 1 deletion docs/dev/AI_Policy.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
Policy on AI Coding Assistants
==============================
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is one of several spots where something unrelated to this PR seems to have changed for no reason.


- Initial policy merged 23-Mar-2026

Expand Down
2 changes: 1 addition & 1 deletion src/build-scripts/run-clang-format.bash
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ CLANG_FORMAT_EXE=${CLANG_FORMAT_EXE:="clang-format"}
echo "Running " `which clang-format` " version " `${CLANG_FORMAT_EXE} --version`

files=`find ./{src,testsuite} \( -name '*.h' -o -name '*.cpp' \) -print \
| grep -Ev 'pugixml|SHA1|farmhash.cpp|libdpx|libcineon|bcdec.h|gif.h|stb_sprintf.h'`
| grep -Ev 'pugixml|SHA1|farmhash.cpp|libdpx|libcineon|bcdec.h|gif.h|src/imiv/external/dnd_glfw/|stb_sprintf.h'`


${CLANG_FORMAT_EXE} -i -style=file $files
Expand Down
1 change: 1 addition & 0 deletions src/cmake/compiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,7 @@ if (PROJECT_IS_TOP_LEVEL)
"src/cineon.imageio/libcineon/*"
"src/dds.imageio/bcdec.h"
"src/gif.imageio/gif.h"
"src/imiv/external/dnd_glfw/*"
"src/libutil/stb_sprintf.h"
CACHE STRING "Glob patterns to exclude for clang-format")
find_program (CLANG_FORMAT_EXE
Expand Down
84 changes: 78 additions & 6 deletions src/cmake/dependency_utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ set_option (${PROJECT_NAME}_DEPENDENCY_BUILD_ALLOW_UNVERIFIED_TAGS
# Track all build deps we find with checked_find_package
set (CFP_ALL_BUILD_DEPS_FOUND "")
set (CFP_EXTERNAL_BUILD_DEPS_FOUND "")
set (CFP_CUSTOM_BUILD_DEPS_FOUND "")

# Track all build deps we failed to find with checked_find_package
set (CFP_ALL_BUILD_DEPS_NOTFOUND "")
Expand Down Expand Up @@ -81,6 +82,44 @@ endfunction ()



# Helper: record the final status of a dependency that is discovered outside
# checked_find_package(), so it still shows up in the dependency summary.
macro (record_build_dependency pkgname)
cmake_parse_arguments(_pkg
"FOUND;NOTFOUND;REQUIRED"
"VERSION;NOT_FOUND_EXPLANATION"
""
Comment on lines +85 to +91
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's with all the changes here?

${ARGN})
if ((_pkg_FOUND AND _pkg_NOTFOUND)
OR (NOT _pkg_FOUND AND NOT _pkg_NOTFOUND))
message (FATAL_ERROR
"record_build_dependency(${pkgname}) requires exactly one of FOUND or NOTFOUND")
endif ()
set (_pkg_version "")
set (_pkg_not_found_explanation "")
if (DEFINED _pkg_VERSION)
set (_pkg_version "${_pkg_VERSION}")
endif ()
if (DEFINED _pkg_NOT_FOUND_EXPLANATION)
set (_pkg_not_found_explanation "${_pkg_NOT_FOUND_EXPLANATION}")
endif ()
set (${pkgname}_VERSION "${_pkg_version}")
set (${pkgname}_VERSION "${_pkg_version}" CACHE INTERNAL
"Recorded dependency version for ${pkgname}" FORCE)
set (${pkgname}_NOT_FOUND_EXPLANATION "${_pkg_not_found_explanation}")
set (${pkgname}_NOT_FOUND_EXPLANATION "${_pkg_not_found_explanation}"
CACHE INTERNAL "Recorded dependency explanation for ${pkgname}" FORCE)
set (${pkgname}_REQUIRED ${_pkg_REQUIRED})
set (${pkgname}_REQUIRED ${_pkg_REQUIRED} CACHE INTERNAL
"Recorded dependency required-ness for ${pkgname}" FORCE)
if (_pkg_FOUND)
set_property (GLOBAL APPEND PROPERTY OIIO_CFP_CUSTOM_BUILD_DEPS_FOUND ${pkgname})
else ()
set_property (GLOBAL APPEND PROPERTY OIIO_CFP_CUSTOM_BUILD_DEPS_NOTFOUND ${pkgname})
endif ()
endmacro ()


# Utility: if `condition` is true, append `addition` to variable `var`
macro (string_append_if var condition addition)
# message (STATUS "string_append_if ${var} ${condition}='${${condition}}' '${addition}'")
Expand All @@ -94,11 +133,26 @@ endmacro()
# Helper: Print a report about missing dependencies and give instructions on
# how to turn on automatic local dependency building.
function (print_package_notfound_report)
get_property(_cfp_custom_build_deps_found
GLOBAL PROPERTY OIIO_CFP_CUSTOM_BUILD_DEPS_FOUND)
get_property(_cfp_custom_build_deps_notfound
GLOBAL PROPERTY OIIO_CFP_CUSTOM_BUILD_DEPS_NOTFOUND)
set (_cfp_all_build_deps_found ${CFP_ALL_BUILD_DEPS_FOUND})
foreach (_pkg IN LISTS _cfp_custom_build_deps_found)
string (STRIP "${_pkg} ${${_pkg}_VERSION}" _cfp_dep_with_version)
list (APPEND _cfp_all_build_deps_found "${_cfp_dep_with_version}")
endforeach ()
foreach (_pkg IN LISTS _cfp_custom_build_deps_notfound)
list (APPEND _cfp_all_build_deps_found "${_pkg} NONE")
endforeach ()
list (SORT _cfp_all_build_deps_found CASE INSENSITIVE)
list (REMOVE_DUPLICATES _cfp_all_build_deps_found)
message (STATUS)
message (STATUS "${ColorBoldYellow}=========================================================================${ColorReset}")
message (STATUS "${ColorBoldYellow}= Dependency report =${ColorReset}")
message (STATUS "${ColorBoldYellow}=========================================================================${ColorReset}")
message (STATUS)
message (STATUS "All build dependencies: ${_cfp_all_build_deps_found}")
if (CFP_EXTERNAL_BUILD_DEPS_FOUND)
message (STATUS "${ColorBoldWhite}The following dependencies found externally:${ColorReset}")
list (SORT CFP_EXTERNAL_BUILD_DEPS_FOUND CASE INSENSITIVE)
Expand All @@ -109,28 +163,46 @@ function (print_package_notfound_report)
message (STATUS " ${_msg}")
endforeach ()
endif ()
if (_cfp_custom_build_deps_found)
message (STATUS "${ColorBoldWhite}The following additional dependencies were found:${ColorReset}")
list (SORT _cfp_custom_build_deps_found CASE INSENSITIVE)
list (REMOVE_DUPLICATES _cfp_custom_build_deps_found)
foreach (_pkg IN LISTS _cfp_custom_build_deps_found)
set (_msg "${_pkg} ${${_pkg}_VERSION} ")
string_append_if (_msg ${_pkg}_REQUIRED " (REQUIRED)")
message (STATUS " ${_msg}")
endforeach ()
endif ()
if (CFP_ALL_BUILD_DEPS_BADVERSION)
message (STATUS "${ColorBoldWhite}The following dependencies were found but were too old:${ColorReset}")
list (SORT CFP_ALL_BUILD_DEPS_BADVERSION CASE INSENSITIVE)
list (REMOVE_DUPLICATES CFP_ALL_BUILD_DEPS_BADVERSION)
foreach (_pkg IN LISTS CFP_ALL_BUILD_DEPS_BADVERSION)
set (_msg "${_pkg}")
string_append_if (_msg ${_pkg}_REQUIRED " (REQUIRED)")
string_append_if (_msg ${_pkg}_NOT_FOUND_EXPLANATION " ${_pkg}_NOT_FOUND_EXPLANATION")
if (DEFINED ${_pkg}_NOT_FOUND_EXPLANATION
AND NOT "${${_pkg}_NOT_FOUND_EXPLANATION}" STREQUAL "")
string (APPEND _msg " ${${_pkg}_NOT_FOUND_EXPLANATION}")
endif ()
if (_pkg IN_LIST CFP_LOCALLY_BUILT_DEPS)
string (APPEND _msg " ${ColorMagenta}(${${_pkg}_VERSION} BUILT LOCALLY)${ColorReset} in ${${_pkg}_build_elapsed_time}s)${ColorReset}")
endif ()
message (STATUS " ${_msg}")
endforeach ()
endif ()
if (CFP_ALL_BUILD_DEPS_NOTFOUND)
set (_cfp_all_build_deps_notfound
${CFP_ALL_BUILD_DEPS_NOTFOUND} ${_cfp_custom_build_deps_notfound})
if (_cfp_all_build_deps_notfound)
message (STATUS "${ColorBoldWhite}The following dependencies were not found:${ColorReset}")
list (SORT CFP_ALL_BUILD_DEPS_NOTFOUND CASE INSENSITIVE)
list (REMOVE_DUPLICATES CFP_ALL_BUILD_DEPS_NOTFOUND)
foreach (_pkg IN LISTS CFP_ALL_BUILD_DEPS_NOTFOUND)
list (SORT _cfp_all_build_deps_notfound CASE INSENSITIVE)
list (REMOVE_DUPLICATES _cfp_all_build_deps_notfound)
foreach (_pkg IN LISTS _cfp_all_build_deps_notfound)
set (_msg "${_pkg} ${_${_pkg}_version_range}")
string_append_if (_msg ${_pkg}_REQUIRED " (REQUIRED)")
string_append_if (_msg ${_pkg}_NOT_FOUND_EXPLANATION " ${_pkg}_NOT_FOUND_EXPLANATION")
if (DEFINED ${_pkg}_NOT_FOUND_EXPLANATION
AND NOT "${${_pkg}_NOT_FOUND_EXPLANATION}" STREQUAL "")
string (APPEND _msg " ${${_pkg}_NOT_FOUND_EXPLANATION}")
endif ()
if (_pkg IN_LIST CFP_LOCALLY_BUILT_DEPS)
string (APPEND _msg " ${ColorMagenta}(${${_pkg}_VERSION} BUILT LOCALLY in ${${_pkg}_build_elapsed_time}s)${ColorReset}")
endif ()
Expand Down
4 changes: 4 additions & 0 deletions src/doc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ if (UNIX AND TXT2MAN AND Python3_Interpreter_FOUND)
message (STATUS "Unix man page documentation will be generated")
set (cli_tools oiiotool iinfo maketx idiff igrep iconvert)

if (TARGET imiv)
list (APPEND cli_tools imiv)
endif()

if (TARGET iv)
list (APPEND cli_tools iv)
endif()
Expand Down
55 changes: 8 additions & 47 deletions src/doc/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -829,7 +829,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.

INPUT = ../../src
INPUT = ../../src/include/OpenImageIO
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where the contents of Doxyfile changed on purpose?


# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand All @@ -854,51 +854,11 @@ INPUT_ENCODING = UTF-8
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.

FILE_PATTERNS = *.c \
*.cc \
*.cxx \
*.cpp \
*.c++ \
*.java \
*.ii \
*.ixx \
*.ipp \
*.i++ \
*.inl \
*.idl \
*.ddl \
*.odl \
*.h \
FILE_PATTERNS = *.h \
*.hh \
*.hxx \
*.hpp \
*.h++ \
*.cs \
*.d \
*.php \
*.php4 \
*.php5 \
*.phtml \
*.inc \
*.m \
*.markdown \
*.md \
*.mm \
*.dox \
*.py \
*.pyw \
*.f90 \
*.f95 \
*.f03 \
*.f08 \
*.f \
*.for \
*.tcl \
*.vhd \
*.vhdl \
*.ucf \
*.qsf \
*.ice
*.h++

# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
Expand Down Expand Up @@ -1158,7 +1118,7 @@ IGNORE_PREFIX =
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
# The default value is: YES.

GENERATE_HTML = YES
GENERATE_HTML = NO

# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
Expand Down Expand Up @@ -1713,7 +1673,7 @@ EXTRA_SEARCH_MAPPINGS =
# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
# The default value is: YES.

GENERATE_LATEX = YES
GENERATE_LATEX = NO

# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
Expand Down Expand Up @@ -2157,7 +2117,8 @@ SEARCH_INCLUDES = YES
# preprocessor.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.

INCLUDE_PATH = ../../src
INCLUDE_PATH = ../../src/include \
../../build/include

# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
Expand Down Expand Up @@ -2587,4 +2548,4 @@ GENERATE_LEGEND = YES

DOT_CLEANUP = YES

CLANG_ASSISTED_PARSING = YES
CLANG_ASSISTED_PARSING = NO
60 changes: 60 additions & 0 deletions src/doc/imiv.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
..
Copyright Contributors to the OpenImageIO project.
SPDX-License-Identifier: CC-BY-4.0

.. _chap-imiv:

`imiv`: ImGui Image Viewer
################################

.. highlight:: bash


Overview
========

The :program:`imiv` program is an in-progress Dear ImGui-based replacement
for the legacy :program:`iv` image viewer. It uses GLFW for windowing and
currently supports renderer backends built around Vulkan, Metal, or OpenGL.

ImIv port is still under active development, and several of the most
valuable workflows are developer-facing:

* understanding the shared app/viewer/UI architecture;
* keeping behavior aligned across multiple renderer backends;
* extending the automated GUI regression suite built on Dear ImGui Test
Engine.


Current status
==============

:program:`imiv` already covers the core image-viewing loop, OCIO display
controls, backend selection, persistent preferences, and a growing automated
regression suite. But it does **not** yet claim full parity with
:program:`iv`.

In particular:

* Vulkan is currently the reference backend for renderer-side feature work.
* Current macOS multi-backend verification is green on Vulkan, Metal, and
OpenGL in the shared backend suite.
* Multi-backend builds can expose backend selection through both the command
line and the Preferences window, with restart-on-next-launch semantics.
* Some legacy :program:`iv` workflows are still intentionally marked as
incomplete or behaviorally different.

For that reason, this chapter is organized into a compact user guide and
deeper developer/testing guides.


Documentation map
=================

.. toctree::
:maxdepth: 1

imiv_user
imiv_dev
imiv_tests
Comment on lines +58 to +60
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think only the user documentation should be in src/doc and appear in the ReadTheDocs page that explains how users should use OIIO. I believe the developer documentation (contents of imiv_dev and imiv_tests, I believe) should go in docs/dev with the rest of the developer documentation that explains how we develop the code.

Loading
Loading