Skip to content

Commit e1cd518

Browse files
authored
Merge pull request #2163 from apradhana/TSC-Jan142026
Add meeting notes Jan 14 2026.
2 parents d5da5b0 + 482a795 commit e1cd518

2 files changed

Lines changed: 291 additions & 0 deletions

File tree

tsc/meetings/2026-01-14.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
Minutes from OpenVDB TSC meeting, January 14th, 2026, (EDT)
2+
3+
Attendees: *Ken* M., *Dan* B., *Nick* A., *Jeff* L., *Andre* P., *Greg* H.
4+
5+
Additional Attendees: Jonathan Swartz (NVIDIA)
6+
7+
Regrets: *Rich* J.
8+
9+
Agenda:
10+
11+
1) Confirm quorum
12+
2) Secretary
13+
3) ASWF Presentation
14+
4) PR: Runtime checks / NaN handling -
15+
[PR-2093](https://github.com/AcademySoftwareFoundation/openvdb/pull/2093)
16+
5) PR backlog & review process
17+
6) IO Refactor – Supporting PRs
18+
7) CI Changes
19+
8) File Format & IO Architecture Roadmap
20+
9) Compression & Topology Encoding
21+
10) Half-Grid & Autodesk Topics
22+
11) Next Meeting
23+
24+
--------------------
25+
26+
1) Confirm quorum
27+
28+
Quorum is present.
29+
30+
2) Secretary
31+
32+
Secretary is Andre P.
33+
34+
3) ASWF Presentation
35+
36+
Chris Horvath (NVIDIA) will present representing the `fvdb` team.
37+
38+
4) PR: Runtime checks / NaN handling -
39+
[PR-2093](https://github.com/AcademySoftwareFoundation/openvdb/pull/2093)
40+
41+
PR introduced runtime math checks (overflow / invalid values).
42+
ConvexVoxelizer implementation relies on NaNs passing through the logic, the
43+
original fix will have broken this behavior. Decided to reduce scope: keep
44+
divide-by-zero checks only and defer broader overflow/NaN behavior until API
45+
expectations are clearer. Checks should be enabled in CI if unit tests pass,
46+
otherwise they are effectively dead code.
47+
48+
5) PR Backlog & Review Process
49+
50+
Project currently has roughly 40–50 open PRs, including long-stalled ones.
51+
Review bandwidth is the main bottleneck.
52+
53+
Ideas:
54+
* One committee member drives each PR to a decision.
55+
* If no strong objections, decision stands.
56+
* Preference to reject quickly rather than allow PRs to linger indefinitely.
57+
* Priority for TSC/maintainer PRs over external ones.
58+
59+
Discussion points:
60+
* Restricting PRs to maintainers only have drawbacks because of Github
61+
history (contributor credit), optics/community perception, cost in
62+
blocking high-quality external PRs, legal and DCO overhead.
63+
* PRs can be merged after required approvals and ~72 hours.
64+
* TSC/maintainer PRs effectively self-approved.
65+
* External PRs ideally require more scrutiny.
66+
* Ken noted he recently merged an externally authored PR that had been
67+
approved long ago.
68+
69+
6) IO Refactor – Supporting PRs (Dan)
70+
71+
### Point Index Grid IO Bug
72+
73+
* Long-standing bug when not using coordinate bounding box overload.
74+
* Likely existed for ~10 years.
75+
* Unit test added.
76+
* Determined **not a security issue**.
77+
* Backward compatibility requires skipping auxiliary bytes correctly.
78+
79+
Ensure skip/ignore logic is correct to preserve forward/backward compatibility.
80+
81+
### Serial Traversal Enhancement
82+
83+
* Added option for **bottom-up traversal** in serial tree traversal.
84+
* Leaves visited before internal nodes.
85+
* Sequential only (not parallel).
86+
87+
### Unit Test Refactor (Leaf IO)
88+
89+
* Tests now go through **Grid/File IO** rather than leaf-node buffer methods.
90+
* Preparation for eventual deprecation of non-virtual tree/leaf IO.
91+
* Jeff requested minimal coverage to ensure legacy methods don't silently
92+
break.
93+
* Action: Add a simple smoke test that directly exercises legacy tree/leaf IO
94+
methods.
95+
96+
7) CI Changes
97+
98+
* Proposal to:
99+
* Enable **asserts in release builds**.
100+
* Run asserts in **per-commit CI**.
101+
* Remove nightly builds; keep **weekly builds**.
102+
* Benefits:
103+
* Lower CI cost.
104+
* Better coverage per commit.
105+
* Tradeoff:
106+
* Loss of daily baseline for diagnosing external breakage.
107+
108+
8) File Format & IO Architecture Roadmap
109+
110+
* Dan refactoring IO into a **plugin / registry-based system**.
111+
* Initial phase:
112+
* No new IO features.
113+
* Preserve backward compatibility.
114+
* Lossless IO refactor only.
115+
* First version expected **within a couple of weeks** (before next TSC).
116+
* Performance regression testing requested (especially backward-compat paths).
117+
118+
Notes:
119+
* Long-term goal is replacing delayed loading with filtered loading.
120+
* Performance benchmarks may live outside standard unit tests.
121+
122+
9) Compression & Topology Encoding
123+
124+
* Topology compression exists (octree-based) and will be integrated.
125+
* Design will allow **independent selection** of:
126+
* Topology codec (must be lossless)
127+
* Value codec (may be lossy)
128+
* Avoids combinatorial explosion of codec combinations.
129+
130+
10) Half-Grid & Autodesk Topics
131+
132+
### Half-Grid
133+
134+
* Andre has an implementation for reading half from float.
135+
* Fixes most unit tests broken by previous implementation.
136+
* One remaining failing test (recent half-grid test).
137+
* PR forthcoming.
138+
139+
### Autodesk / VTT
140+
141+
* Main blocker: lack of converter between VTT and OpenVDB.
142+
143+
11) Next Meeting
144+
145+
Next Meeting 01-28-2026 at the same time.

tsc/meetings/2026-02-11.md

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
Minutes from OpenVDB TSC meeting, February 11th, 2026, (EDT)
2+
3+
Attendees: *Ken* M., *Dan* B., *Nick* A., *Jeff* L., *Andre* P.
4+
5+
Additional Attendees: Jonathan Swartz (NVIDIA)
6+
7+
Regrets: *Greg* H., *Rich* J.
8+
9+
Agenda:
10+
11+
1) Confirm quorum
12+
2) Secretary
13+
3) TAC meeting preparation
14+
4) Example files & artifacts.aswf.io
15+
5) IO refactor: Delayed loading removal
16+
6) Houdini integration demo
17+
7) Read options API design
18+
8) Next meeting
19+
20+
--------------------
21+
22+
1) Confirm quorum
23+
24+
Quorum is present.
25+
26+
2) Secretary
27+
28+
Secretary is Andre P.
29+
30+
3) TAC Meeting Preparation
31+
32+
* Ken preparing for annual TAC review/update next Wednesday.
33+
* New file format / IO system (justification: new compression schemes, performance improvements, smaller file sizes).
34+
* CI changes (switched off nightly builds, adjusted job categories).
35+
* SIGGRAPH course from last year.
36+
* Need slide with highlights of new file system.
37+
* Need on GPU CI issue
38+
39+
### CI Changes Update
40+
41+
* Changes implemented:
42+
* Removed nightly builds.
43+
* Reduced from 3 categories (per-commit, nightly, weekly) to 2 categories (per-commit, weekly).
44+
* Enabled asserts in release builds for per-commit CI.
45+
46+
4) Example Files & artifacts.aswf.io
47+
48+
* Issue: `explosions.vdb` on downloads page no longer loads (written before OpenVDB open-sourced).
49+
* All example files currently stored in `artifacts.aswf.io` (S3).
50+
* ~16-20 example files pointing to artifacts.aswf.io.
51+
* No clear documentation on how to access or update these files.
52+
53+
**Proposed Solution:**
54+
* Download all files using `download_vdb_caches.py` script (in CI folder).
55+
* Rewrite files using new format.
56+
* Upload to Git LFS in website repo.
57+
* Update hyperlinks in website repo.
58+
* Contact ASWF about artifacts.aswf.io usage (ask if others use it, or if it's just OpenVDB).
59+
60+
**Note:**
61+
* Most example files written as half-precision; should maintain same format when rewriting.
62+
* Files should get smaller with new compression (some improvements since old root node mask compression).
63+
64+
5) IO Refactor: Delayed Loading Removal
65+
66+
### Overview
67+
68+
* PR on `feature/io` branch removes delayed loading entirely.
69+
* Substantial change: removed ~4,000 lines, added ~400 lines.
70+
* Removes dependencies: boost iostreams, boost interprocess, IO temp file.
71+
* API remains backward compatible (ABI compatible); code recompiles but functionality removed.
72+
73+
### API Changes
74+
75+
* Most impactful change: `open()` method with delayed loading parameter.
76+
* Previously: `open(bool delayed)` was optional parameter (when delayed loading enabled at compile time).
77+
* Now: Parameter still exists but does nothing; deprecated with warnings.
78+
* Common pattern throughout codebase: `open(false)` to disable delayed loading.
79+
* Deprecation warnings guide users to remove the parameter.
80+
* Similar changes to `stream` API.
81+
* Delay load metadata removed (performance optimization that's no longer needed).
82+
83+
### Tooling Updates
84+
85+
* Public methods updated:
86+
* `isOutOfCore()` → returns `true` (always in-core), deprecated.
87+
* `memUsageIfLoaded()` → deprecated in favor of `memUsage()`.
88+
* `readNonResidentTiles()` → no-op, deprecated.
89+
* Private methods removed (e.g., `leafBuffer`).
90+
* All tools updated: Houdini tools, AX, VDB binaries, unit tests.
91+
92+
### Compatibility Notes
93+
94+
* Weta's custom delayed loading (ring buffer, eviction) is separate implementation.
95+
* Backward compatibility: old files still load, but new files cannot be loaded by old OpenVDB versions.
96+
97+
### Outstanding Items
98+
99+
* Value accessor optimizations still present but not harmful; can be removed later.
100+
* Unused atomics, mutexes remain for ABI compatibility; should be removed in future ABI bump.
101+
* Mesh-to-volume interrupt test: occasional CI failures (threshold increased from 1s to 2s); may need investigation.
102+
103+
6) Houdini Integration Demo (Dan)
104+
105+
* UI updates to align with File SOP.
106+
* New "Load" dropdown replaces metadata-only toggle:
107+
* Options: All Geometry, Metadata Only, Topology Only.
108+
* Topology Only: loads topology, creates float grid with zero values (no value data read).
109+
* New features:
110+
* "Read Float as Half" option (for Andre's half-grid work).
111+
* Clipping options: bounding box, mask VDBs, camera frustum (with inside/outside options).
112+
* VDB Points: attribute filtering at read time.
113+
* World space clipping (converts to index space internally).
114+
* Future addition: option to read voxel data as integer grid for points-per-voxel visualization.
115+
116+
7) Read Options API Design (Dan)
117+
118+
* `ReadOptions` struct provides immutable options for all grids being read.
119+
* Per-grid read options available (e.g., point attribute filters for point data grids).
120+
* Options passed through read pipeline: `readGrid()``readTopology()``readBuffers()`.
121+
* Codec-specific data (`CodecData`) allows passing information between topology and buffer reading phases.
122+
* Options are "hints" - codecs can choose to ignore them.
123+
* Rationale: Not all codecs support all options; allows flexibility for new codec types.
124+
* Struct-based approach chosen over function parameters:
125+
* Easier to pass through multiple layers.
126+
* Named initializers (C++20) improve readability.
127+
* Tradeoff: Harder to deprecate struct members vs. function signatures.
128+
129+
### Concerns & Discussion
130+
131+
* Users may not know which options were actually applied.
132+
* Deprecating struct members:
133+
* Function signatures easier to deprecate (new function, old deprecated).
134+
* Struct members require keeping both old and new members during transition.
135+
* Suggestion: Only add to struct, move uncertain options to map for flexibility.
136+
* "hints" being ignored silently:
137+
* Need way to know which options were actually applied.
138+
* Suggestion: Output struct or log stream with warnings/errors.
139+
* Other points:
140+
* Codec-specific map for experimental options (can change quickly).
141+
* Main read options stay static.
142+
* Output log/struct separate from input options (so options remain reusable).
143+
144+
8) Next Meeting
145+
146+
Next meeting is Wednesday Feb 25, 2026 at 13:00 PST.

0 commit comments

Comments
 (0)