diff --git a/.github/workflows/ax.yml b/.github/workflows/ax.yml index 58a48d56b1..1927282790 100644 --- a/.github/workflows/ax.yml +++ b/.github/workflows/ax.yml @@ -14,6 +14,7 @@ on: - 'nanovdb/**' - 'openvdb_maya/**' - 'openvdb_houdini/**' + - 'fvdb/**' - 'pendingchanges/**' - 'fvdb/**' - '**.md' @@ -27,6 +28,7 @@ on: - 'nanovdb/**' - 'openvdb_maya/**' - 'openvdb_houdini/**' + - 'fvdb/**' - 'pendingchanges/**' - 'fvdb/**' - '**.md' @@ -76,6 +78,10 @@ jobs: - { image: '2021-clang10', cxx: 'g++', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } fail-fast: false steps: + - name: Enable Node 16 + if: contains(matrix.config.image, '2021') || contains(matrix.config.image, '2022') + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: pybind11 #if: contains(matrix.config.image, '2023') == false @@ -125,14 +131,16 @@ jobs: matrix: config: #@note llvm10 never got its own brew formula... - - { runner: 'macos-latest', cxx: 'clang++', build: 'Release', llvm: '11' } - - { runner: 'macos-latest', cxx: 'clang++', build: 'Release', llvm: '12' } - - { runner: 'macos-latest', cxx: 'clang++', build: 'Release', llvm: '13' } + # Last macos runner befor M1 (macos-14) + - { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '12' } + - { runner: 'macos-13', cxx: 'clang++', build: 'Release', llvm: '13' } fail-fast: false steps: - uses: actions/checkout@v3 - name: install_deps - run: ./ci/install_macos.sh ${{ matrix.config.llvm }} + run: | + ./ci/install_macos.sh ${{ matrix.config.llvm }} + ./ci/install_tbb_macos.sh - name: build run: > ./ci/build.sh -v @@ -141,7 +149,8 @@ jobs: --cargs=\" -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON -DUSE_EXPLICIT_INSTANTIATION=OFF - -DLLVM_DIR=/usr/local/opt/llvm@${{ matrix.config.llvm }}/lib/cmake/llvm + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install + -DLLVM_DIR=/opt/homebrew/opt/llvm@${{ matrix.config.llvm }}/lib/cmake/llvm \" - name: test run: cd build && ctest -V diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a702205130..fa1956fd22 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -88,6 +88,11 @@ jobs: - { cxx: g++, image: '2022-clang11', abi: '9', build: 'Release', cmake: '-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON' } fail-fast: false steps: + - name: Enable Node 16 + # Solution taken from https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default + if: contains(matrix.config.image, '2022') + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: pybind11 #if: contains(matrix.config.image, '2023') == false @@ -127,29 +132,16 @@ jobs: run: ccache --evict-older-than 1d windows: - # Windows CI. Tests static and dynamic builds with MT and MD respectively. + # Windows CI. Tests a dynamic build with MD. if: | github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || github.event.inputs.type == 'win' runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} - name: windows-vc:${{ matrix.config.vc }}-type:${{ matrix.config.build }} + name: windows env: - VCPKG_DEFAULT_TRIPLET: ${{ matrix.config.vc }} + VCPKG_DEFAULT_TRIPLET: x64-windows strategy: - matrix: - config: - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries - # due to disk space constraints - # @note Commented out the static debug build due to linker OOM LNK1102 - - { vc: 'x64-windows-static', components: 'core,bin,view,render,test', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } - #- { vc: 'x64-windows-static', components: 'core,bin,view,render,test', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DUSE_EXPLICIT_INSTANTIATION=OFF' } - - { vc: 'x64-windows', components: 'core,bin,view,render,python,test', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } - - { vc: 'x64-windows', components: 'core,bin,view,render,python,test', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } - #- { vc: 'x64-windows', build: 'Release', cmake: '-G \"MinGW Makefiles\" -DOPENVDB_CORE_STATIC=OFF' } fail-fast: false steps: - uses: actions/checkout@v3 @@ -157,17 +149,17 @@ jobs: shell: pwsh run: | # note: system path must be modified in a previous step to it's use - echo "$Env:VCPKG_INSTALLATION_ROOT\installed\${{ matrix.config.vc }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "${{github.workspace}}\build\openvdb\openvdb\${{ matrix.config.build }}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "$Env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "${{github.workspace}}\build\openvdb\openvdb\Release" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: install run: ./ci/install_windows.sh - name: build run: > ./ci/build.sh -v - --config=${{ matrix.config.build }} - --components=${{ matrix.config.components }} + --config='Release' + --components='core,bin,view,render,python,test' --cargs=\' - ${{ matrix.config.cmake }} + -A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF -DMSVC_COMPRESS_PDB=ON -DUSE_EXR=ON -DUSE_PNG=ON @@ -178,27 +170,29 @@ jobs: # Print the build directy size (monitor if we're hitting runner limits) run: du -h build - name: test - # Always run tests on weekly builds but skip Debug on commits as they take a while. - # https://github.community/t/distinct-job-for-each-schedule/17811/2 - if: contains(github.event.schedule, '0 7 * * 1') || matrix.config.build == 'Release' - run: cd build && ctest -V -C ${{ matrix.config.build }} + run: cd build && ctest -V -C Release macos: if: | github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || github.event.inputs.type == 'mac' - runs-on: macos-latest + runs-on: macos-13 # Last macos runner befor M1 (macos-14) env: CXX: clang++ steps: - uses: actions/checkout@v3 - name: install - run: ./ci/install_macos.sh + run: | + ./ci/install_macos.sh + ./ci/install_tbb_macos.sh - name: build run: > ./ci/build.sh -v --build-type=Release --components=\"core,python,bin,view,render,test\" + --cargs=\' + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install + \' - name: test run: cd build && ctest -V diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d3febe0d76..21a9e2bac8 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -42,6 +42,9 @@ jobs: # need to re-write the python docs to use sphinx image: aswf/ci-openvdb:2022 steps: + - name: Enable Node 16 + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: install_doxygen run: ./ci/install_doxygen.sh 1_8_11 @@ -51,7 +54,12 @@ jobs: # - name: install_epydoc # run: pip install epydoc - name: install_latex - run: yum -y install texlive-latex-bin texlive-dvips texlive-collection-fontsrecommended texlive-collection-latexrecommended + run: | + # Fix error: Cannot prepare internal mirrorlist: No URLs in mirrorlist. CentOS 8 reached EOL means need to replace the official mirror to vault.centos.org + # Comment out mirrorlist and replace #baseurl=...mirror.centos.org with baseurl=...vault.centos.org in files starting with CentOS- in /etc/yum.repos.d folder + sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* + yum -y install texlive-latex-bin texlive-dvips texlive-collection-fontsrecommended texlive-collection-latexrecommended - name: build run: > ./ci/build.sh -v diff --git a/.github/workflows/houdini.yml b/.github/workflows/houdini.yml index 077d979ca8..3f2445cd21 100644 --- a/.github/workflows/houdini.yml +++ b/.github/workflows/houdini.yml @@ -85,6 +85,9 @@ jobs: steps: # See note on this step in the Houdini weekly.yml job # We can remove this when we no longer use < 2023 images + - name: Enable Node 16 + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - name: remove zstd run: yum -y remove zstd - uses: actions/checkout@v3 @@ -161,21 +164,12 @@ jobs: cp hou/hou.tar.gz $HOME/houdini_install/hou.tar.gz cd $HOME/houdini_install && tar -xzf hou.tar.gz && cd - - name: install_deps - run: | - # Remove Python3 symlinks in /usr/local/bin as workaround to brew update issues - # https://github.com/actions/setup-python/issues/577 - rm /usr/local/bin/2to3* || : - rm /usr/local/bin/idle3* || : - rm /usr/local/bin/pydoc* || : - rm /usr/local/bin/python3* || : - brew update - brew install bash gnu-getopt cmake boost glfw googletest openexr pybind11 llvm@15 cppunit - echo "/usr/local/opt/gnu-getopt/bin" >> $GITHUB_PATH + run: ./ci/install_macos.sh 15 - name: build run: | ./ci/build.sh -v \ --build-type=Release \ - --components="core,hou,bin,view,render,python,test,axcore,axbin,axtest" \ + --components="core,hou,bin,view,render,python,test,axcore,axbin" \ --cargs=\" \ -DHOUDINI_ROOT=$HOME/houdini_install/hou \ -DOPENVDB_BUILD_HOUDINI_ABITESTS=OFF \ @@ -183,7 +177,9 @@ jobs: -DDISABLE_CMAKE_SEARCH_PATHS=ON \ -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON \ -DUSE_EXPLICIT_INSTANTIATION=OFF \ - -DLLVM_DIR=/usr/local/opt/llvm@15/lib/cmake/llvm \ + -DTbb_INCLUDE_DIR=$HOME/houdini_install/hou/Frameworks/Houdini.framework/Versions/Current/Resources/toolkit/include/tbb \ + -DLLVM_DIR=/opt/homebrew/opt/llvm@15/lib/cmake/llvm \ + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install \ \" - name: test run: cd build && ctest -V diff --git a/.github/workflows/nanovdb.yml b/.github/workflows/nanovdb.yml index da6e95345e..ed98499aaf 100644 --- a/.github/workflows/nanovdb.yml +++ b/.github/workflows/nanovdb.yml @@ -67,9 +67,17 @@ jobs: - { cxx: clang++, image: '2022-clang11', build: 'Debug' } fail-fast: false steps: + - name: Enable Node 16 + if: contains(matrix.config.image, '2022') + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: install_cuda_11 run: | + # Fix error: Cannot prepare internal mirrorlist: No URLs in mirrorlist. CentOS 8 reached EOL means need to replace the official mirror to vault.centos.org + # Comment out mirrorlist and replace #baseurl=...mirror.centos.org with baseurl=...vault.centos.org in files starting with CentOS- in /etc/yum.repos.d folder + sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* yum -y install yum-utils yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo echo "Installing cuda toolkit" @@ -98,43 +106,32 @@ jobs: github.event.inputs.type == 'win' runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} env: - VCPKG_DEFAULT_TRIPLET: ${{ matrix.config.vc }} + VCPKG_DEFAULT_TRIPLET: 'x64-windows' visual_studio: "Visual Studio 17 2022" - cuda: "11.6.2" + cuda: "12.4.0" strategy: - matrix: - config: - # static build of blosc from vcpkg does not build internal sources. - # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and - # Boost as both shared and static libs are installed. - - { vc: 'x64-windows-static', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' } - - { vc: 'x64-windows-static', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug' } - - { vc: 'x64-windows', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } - - { vc: 'x64-windows', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } fail-fast: false steps: - uses: actions/checkout@v3 - name: path run: | # note: system path must be modified in a previous step to it's use - echo "$Env:VCPKG_INSTALLATION_ROOT\installed\${{ matrix.config.vc }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "${{github.workspace}}\build\openvdb\openvdb\${{ matrix.config.build }}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "$Env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "${{github.workspace}}\build\openvdb\openvdb\Release" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - name: install_cuda shell: powershell run: .\ci\install_windows_cuda.ps1 - name: install_deps shell: bash - run: | - vcpkg update - vcpkg install zlib tbb gtest blosc boost-iostreams boost-system boost-any boost-uuid boost-interprocess boost-algorithm + run: ./ci/install_windows.sh - name: build shell: bash run: > ./ci/build.sh -v - --config=${{ matrix.config.build }} + --config=Release --components=core,nano,nanotest,nanoexam,nanobench,nanotool --cargs=\' - ${{ matrix.config.cmake }} + -A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF -DMSVC_COMPRESS_PDB=ON -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_USE_CUDA=ON @@ -157,13 +154,15 @@ jobs: strategy: matrix: config: - - { runner: 'macos-11', cxx: 'clang++', build: 'Release' } - - { runner: 'macos-11', cxx: 'clang++', build: 'Debug' } + - { runner: 'macos-12', cxx: 'clang++', build: 'Release' } + - { runner: 'macos-12', cxx: 'clang++', build: 'Debug' } fail-fast: false steps: - uses: actions/checkout@v3 - name: install_deps - run: ./ci/install_macos.sh + run: | + ./ci/install_macos.sh + ./ci/install_tbb_macos.sh - name: build run: > ./ci/build.sh -v @@ -190,6 +189,6 @@ jobs: cd nanovdb/nanovdb sudo mkdir .build cd .build - sudo cmake -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_BUILD_UNITTESTS=ON ../ + sudo cmake -DUSE_EXPLICIT_INSTANTIATION=OFF -DNANOVDB_BUILD_UNITTESTS=ON -DNANOVDB_USE_OPENVDB=OFF -DNANOVDB_USE_CUDA=OFF ../ sudo make -j8 install sudo ctest -V diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index 7e26ca9305..5debe30be5 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -77,6 +77,9 @@ jobs: container: image: aswf/ci-base:2023 steps: + - name: Enable Node 16 + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 # We bumped from the 2021 CI image to 2023 here to fix some OpenSSL issues # with the Houdini download script. In so doing we broke some of the caching @@ -111,6 +114,8 @@ jobs: (github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || github.event.inputs.type == 'houdini') + # Note that macos-14 (current macos-latest) switches to M1. We could instead test + # the arm build here instead of the x86 one. runs-on: macos-latest name: macos-houdini-20 env: @@ -122,7 +127,7 @@ jobs: id: timestamp run: echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - name: download_houdini - run: ./ci/download_houdini.sh 20.0 macosx_x86_64_clang12.0_11 --prod + run: ./ci/download_houdini.sh 20.0 macosx_arm64_clang14.0_13 --prod - name: install_houdini run: | mkdir $HOME/houdini_install @@ -169,6 +174,9 @@ jobs: - { name: 'conf', build: 'Release', components: 'core,python,bin,view,render,test,axcore,axtest', cmake: '-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON' } fail-fast: false steps: + - name: Enable Node 16 + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: pybind11 #if: contains(container.image, '2023') == false @@ -198,7 +206,7 @@ jobs: # Disable the clang job for now. See https://github.com/actions/runner-images/issues/8659 # - { runson: ubuntu-latest, cxx: clang++, cmake: '' } # @todo gcc on macos - - { runson: macos-latest, cxx: '', cmake: '-D CMAKE_CXX_COMPILER=/usr/local/opt/llvm@15/bin/clang++' } + - { runson: macos-latest, cxx: '', cmake: '-D CMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm@15/bin/clang++' } fail-fast: false steps: - uses: actions/checkout@v3 @@ -208,6 +216,7 @@ jobs: sudo apt-get -q install -y libboost-dev libboost-iostreams-dev libtbb-dev libblosc-dev llvm-dev libgtest-dev libcppunit-dev pybind11-dev elif [ "$RUNNER_OS" == "macOS" ]; then ./ci/install_macos.sh 15 + ./ci/install_tbb_macos.sh else echo "$RUNNER_OS not supported"; exit 1 fi @@ -220,6 +229,60 @@ jobs: - name: test run: cd build && ctest -V + windows: + # Windows CI. Tests static and dynamic builds with MT and MD respectively. + if: | + github.event_name != 'workflow_dispatch' || + github.event.inputs.type == 'all' || + github.event.inputs.type == 'win' + runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} + name: windows-vc:${{ matrix.config.vc }}-type:${{ matrix.config.build }} + env: + VCPKG_DEFAULT_TRIPLET: ${{ matrix.config.vc }} + strategy: + matrix: + config: + # static build of blosc from vcpkg does not build internal sources. + # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # Boost as both shared and static libs are installed. + # USE_EXPLICIT_INSTANTIATION is disabled for debug static libraries + # due to disk space constraints + - { vc: 'x64-windows-static', components: 'core,bin,view,render,test', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON' } + - { vc: 'x64-windows', components: 'core,bin,view,render,python,test', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } + - { vc: 'x64-windows', components: 'core,bin,view,render,python,test', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } + fail-fast: false + steps: + - uses: actions/checkout@v3 + - name: path + shell: pwsh + run: | + # note: system path must be modified in a previous step to it's use + echo "$Env:VCPKG_INSTALLATION_ROOT\installed\${{ matrix.config.vc }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "${{github.workspace}}\build\openvdb\openvdb\${{ matrix.config.build }}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + - name: install + run: ./ci/install_windows.sh + - name: build + run: > + ./ci/build.sh -v + --config=${{ matrix.config.build }} + --components=${{ matrix.config.components }} + --cargs=\' + ${{ matrix.config.cmake }} + -DMSVC_COMPRESS_PDB=ON + -DUSE_EXR=ON + -DUSE_PNG=ON + -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} + -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" + \' + - name: size + # Print the build directy size (monitor if we're hitting runner limits) + run: du -h build + - name: test + # Always run tests on weekly builds but skip Debug on commits as they take a while. + # https://github.community/t/distinct-job-for-each-schedule/17811/2 + if: contains(github.event.schedule, '0 7 * * 1') || matrix.config.build == 'Release' + run: cd build && ctest -V -C ${{ matrix.config.build }} + ############################################################################# ############################ AX Library Extras ############################## ############################################################################# @@ -251,6 +314,10 @@ jobs: - { image: '2022-clang11', cxx: 'g++', build: 'Release', components: 'core', cmake: '' } fail-fast: false steps: + - name: Enable Node 16 + if: contains(matrix.config.image, '2021') || contains(matrix.config.image, '2022') + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: pybind11 #f: contains(matrix.config.image, '2023') == false @@ -291,7 +358,7 @@ jobs: github.event_name != 'workflow_dispatch' || github.event.inputs.type == 'all' || github.event.inputs.type == 'ax' - runs-on: macos-latest + runs-on: macos-13 name: macos-cxx:${{ matrix.config.cxx }}-llvm:${{ matrix.config.llvm }}-${{ matrix.config.build }} env: CXX: ${{ matrix.config.cxx }} @@ -305,7 +372,9 @@ jobs: steps: - uses: actions/checkout@v3 - name: install_deps - run: ./ci/install_macos.sh ${{ matrix.config.llvm }} + run: | + ./ci/install_macos.sh ${{ matrix.config.llvm }} + ./ci/install_tbb_macos.sh - name: build run: > ./ci/build.sh -v @@ -314,7 +383,8 @@ jobs: --cargs=\" -DOPENVDB_AX_TEST_CMD_DOWNLOADS=ON -DUSE_EXPLICIT_INSTANTIATION=OFF - -DLLVM_DIR=/usr/local/opt/llvm@${{ matrix.config.llvm }}/lib/cmake/llvm + -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install + -DLLVM_DIR=/opt/homebrew/opt/llvm@${{ matrix.config.llvm }}/lib/cmake/llvm \" - name: test run: cd build && ctest -V @@ -380,6 +450,64 @@ jobs: ################################## Blosc #################################### ############################################################################# + windows-nanovdb: + if: | + github.event_name != 'workflow_dispatch' || + github.event.inputs.type == 'all' || + github.event.inputs.type == 'win' + runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'windows-2022-8c-32g-300h') || 'windows-latest' }} + env: + VCPKG_DEFAULT_TRIPLET: ${{ matrix.config.vc }} + visual_studio: "Visual Studio 17 2022" + cuda: "12.4.0" + strategy: + matrix: + config: + # static build of blosc from vcpkg does not build internal sources. + # USE_STATIC_DEPENDENCIES is required for IlmBase/OpenEXR defines and + # Boost as both shared and static libs are installed. + - { vc: 'x64-windows-static', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded' } + - { vc: 'x64-windows-static', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_SHARED=OFF -DUSE_STATIC_DEPENDENCIES=ON -DBLOSC_USE_EXTERNAL_SOURCES=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug' } + - { vc: 'x64-windows', build: 'Release', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } + - { vc: 'x64-windows', build: 'Debug', cmake: '-A x64 -G \"Visual Studio 17 2022\" -DOPENVDB_CORE_STATIC=OFF' } + fail-fast: false + steps: + - uses: actions/checkout@v3 + - name: path + shell: powershell + run: | + # note: system path must be modified in a previous step to it's use + echo "$Env:VCPKG_INSTALLATION_ROOT\installed\${{ matrix.config.vc }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "${{github.workspace}}\build\openvdb\openvdb\${{ matrix.config.build }}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + - name: install_cuda + shell: powershell + run: .\ci\install_windows_cuda.ps1 + - name: install_deps + shell: bash + run: ./ci/install_windows.sh + - name: build + shell: bash + run: > + ./ci/build.sh -v + --config=${{ matrix.config.build }} + --components=core,nano,nanotest,nanoexam,nanobench,nanotool + --cargs=\' + ${{ matrix.config.cmake }} + -DMSVC_COMPRESS_PDB=ON + -DUSE_EXPLICIT_INSTANTIATION=OFF + -DNANOVDB_USE_CUDA=ON + -DNANOVDB_USE_OPENVDB=ON + -DVCPKG_TARGET_TRIPLET=${VCPKG_DEFAULT_TRIPLET} + -DCMAKE_TOOLCHAIN_FILE=\"${VCPKG_INSTALLATION_ROOT}\\scripts\\buildsystems\\vcpkg.cmake\" + \' + - name: test + shell: bash + run: cd build && ctest -V -E ".*cuda.*" + + ############################################################################# + ################################## Blosc #################################### + ############################################################################# + linux-blosc: if: | github.event_name != 'workflow_dispatch' || @@ -394,6 +522,9 @@ jobs: blosc: ['1.18.0','1.19.0','1.20.0','1.21.0'] fail-fast: false steps: + - name: Enable Node 16 + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 - name: install_blosc run: sudo ./ci/install_blosc.sh ${{ matrix.blosc }} @@ -420,6 +551,9 @@ jobs: # may not have this build type. See OpenVDBCXX.cmake CXXFLAGS: "-gdwarf-4 -g3 -ggdb -Og" steps: + - name: Enable Node 16 + run: | + echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - uses: actions/checkout@v3 with: fetch-depth: 0 diff --git a/.github/workflows/whitespace.yml b/.github/workflows/whitespace.yml index bf2d7223d0..fb2e0187b1 100644 --- a/.github/workflows/whitespace.yml +++ b/.github/workflows/whitespace.yml @@ -36,5 +36,5 @@ jobs: - name: test run: | set +e - git grep -n " " -- ':!*/whitespace.yml' ':!tsc/meetings/*' ':!*.svg' ':!*.cmd' ':!*.png' ':!pendingchanges/*' ':!*.wlt' + git grep -n " " -- ':!*/whitespace.yml' ':!tsc/meetings/*' ':!*.svg' ':!*.cmd' ':!*.png' ':!pendingchanges/*' ':!*.wlt' ':!*.jpg' ':!*.gif' ':!*.mp4' ':!*.pt' ':!*.pth' ':!*.nvdb' ':!*.npz' test $? -eq 1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1ee6eda8af..e0838e682c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,18 +57,20 @@ code and has the right to release it under the [Mozilla Public License, version 2.0](LICENSE.md) license. See the [TAC documentation on contribution sign off](https://github.com/AcademySoftwareFoundation/tac/blob/master/process/contributing.md#contribution-sign-off) for more information on this requirement. -## Committer +## Maintainer -The committer role enables the participant to commit code directly to the repository, but also comes with the obligation to be a responsible leader in the community. +The maintainer role is the equivalent of the "Committer" role in the charter. -### Process for becoming a committer +This role enables the participant to commit code directly to the repository, but also comes with the obligation to be a responsible leader in the community. + +### Process for becoming a maintainer * Show your experience with the codebase through contributions and engagement on the community channels. -* Request to become a committer. -* Have the majority of committers approve you becoming a committer. +* Request to become a maintainer. +* Have the majority of maintainers approve you becoming a maintainer. * Your name and email is added to the MAINTAINERS.md file for the project. -### Committer responsibilities +### Maintainer responsibilities * Monitor email aliases. * Monitor Slack (delayed response is perfectly acceptable). @@ -76,28 +78,29 @@ The committer role enables the participant to commit code directly to the reposi * Make sure that ongoing PRs are moving forward at the right pace or close them. * Remain an active contributor to the project in general and the code base in particular. -### When does a committer lose committer status? +### When does a maintainer lose maintainer status? -If a committer is no longer interested or cannot perform the committer duties listed above, they +If a maintainer is no longer interested or cannot perform the maintainer duties listed above, they should volunteer to be moved to emeritus status. In extreme cases this can also occur by a vote of -the committers per the voting process below. +the maintainers per the voting process below. ## Technical Steering Committee (TSC) member The Technical Steering Committee (TSC) oversees the overall technical direction of OpenVDB, as defined in the [charter](charter.md). -TSC voting members consist of committers that have been nominated by the committers, with a supermajority of voting members required to have a committer elected to be a TSC voting member. TSC voting members term and succession is defined in the [charter](charter.md). +TSC voting members consist of maintainers that have been nominated by the TSC, with a supermajority of voting members required to have a maintainer elected to be a TSC voting member. TSC voting members term and succession is defined in the [charter](charter.md). All meetings of the TSC are open to participation by any member of the OpenVDB community. Meeting times are listed in the [ASWF technical community calendar](https://lists.aswf.io/g/tac/calendar). ## Current TSC members -* Ken Museth, Chair / NVIDIA -* Andre Pradhana, DreamWorks +* Ken Museth (Chair), Nvidia +* Andre Pradhana, Nvidia * Jeff Lait, SideFX -* Nick Avramoussis, WETA +* Nick Avramoussis, WETA FX * Dan Bailey, ILM -* Richard Jones, DNEG +* Richard Jones, ILM +* Gregory Hurst, United Therapeutics # Release Process diff --git a/MAINTAINERS.md b/MAINTAINERS.md index df279e587e..1d9752fb24 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -14,3 +14,5 @@ The current OpenVDB maintainers are: | Ken Museth | ken.museth@gmail.com | Andre Pradhana | andre.pradhana@gmail.com | Richard Jones | richardj@ilm.com +| Gregory Hurst | tbd +| Jonathan Swartz | tbd diff --git a/RE-LICENSE_NOTE.txt b/RE-LICENSE_NOTE.txt index fd38be7dfe..47c3c73623 100644 --- a/RE-LICENSE_NOTE.txt +++ b/RE-LICENSE_NOTE.txt @@ -30,3 +30,4 @@ Kuba Roth Tom Cnops Walt Disney Pictures (Walt Disney Animation Studios) The Linux Foundation +Industrial Light & Magic (ILM) diff --git a/ci/install_macos.sh b/ci/install_macos.sh index 39d89ba191..0d7899687d 100755 --- a/ci/install_macos.sh +++ b/ci/install_macos.sh @@ -19,7 +19,6 @@ brew install googletest brew install jq # for trivial parsing of brew json brew install openexr brew install pybind11 # also installs the dependent python version -brew install tbb brew install zlib brew install jemalloc @@ -31,8 +30,13 @@ echo "Using python $py_version" echo "Python_ROOT_DIR=/usr/local/opt/$py_version" >> $GITHUB_ENV echo "/usr/local/opt/$py_version/bin" >> $GITHUB_PATH +# use bash +echo "/usr/local/opt/bash/bin" >> $GITHUB_PATH +echo "/opt/homebrew/opt/bash/bin" >> $GITHUB_PATH + # use gnu-getopt echo "/usr/local/opt/gnu-getopt/bin" >> $GITHUB_PATH +echo "/opt/homebrew/opt/gnu-getopt/bin" >> $GITHUB_PATH LLVM_VERSION=$1 if [ ! -z "$LLVM_VERSION" ]; then diff --git a/ci/install_tbb_macos.sh b/ci/install_tbb_macos.sh new file mode 100755 index 0000000000..4b71fe9e93 --- /dev/null +++ b/ci/install_tbb_macos.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -x + +brew update +brew install tbb diff --git a/ci/install_windows.sh b/ci/install_windows.sh index 939668c4b3..9620ee42a7 100755 --- a/ci/install_windows.sh +++ b/ci/install_windows.sh @@ -1,8 +1,44 @@ #!/usr/bin/env bash -set -ex +set -x +set -e +# Required dependencies +VCPKG_INSTALL_CMD="vcpkg install + zlib + libpng + openexr + tbb + gtest + cppunit + blosc + glfw3 + glew + python3 + jemalloc + boost-iostreams + boost-interprocess + boost-algorithm + pybind11 + --clean-after-build" + +# Update vcpkg vcpkg update -vcpkg install zlib libpng openexr tbb gtest cppunit blosc glfw3 glew python3 jemalloc \ - boost-iostreams boost-interprocess boost-algorithm pybind11 \ - --clean-after-build + +# Allow the vcpkg command to fail once so we can retry with the latest +set +e +$VCPKG_INSTALL_CMD +STATUS=$? + +# Subsequent commands cannot fail +set -x + +if [ $STATUS -ne 0 ]; then + # Try once more with latest ports + echo "vcpkg install failed, retrying with latest ports..." + cd $VCPKG_INSTALLATION_ROOT && git pull && cd- + vcpkg update + $VCPKG_INSTALL_CMD +fi + +echo "vcpkg install completed successfully" diff --git a/ci/install_windows_cuda.ps1 b/ci/install_windows_cuda.ps1 index db8b49c79a..f365cca7e7 100644 --- a/ci/install_windows_cuda.ps1 +++ b/ci/install_windows_cuda.ps1 @@ -26,12 +26,13 @@ $CUDA_KNOWN_URLS = @{ "11.2.1" = "https://developer.download.nvidia.com/compute/cuda/11.2.1/network_installers/cuda_11.2.1_win10_network.exe"; "11.2.2" = "https://developer.download.nvidia.com/compute/cuda/11.2.2/network_installers/cuda_11.2.2_win10_network.exe"; "11.3.0" = "https://developer.download.nvidia.com/compute/cuda/11.3.0/network_installers/cuda_11.3.0_win10_network.exe"; - "11.6.2" = "https://developer.download.nvidia.com/compute/cuda/11.6.2/network_installers/cuda_11.6.2_windows_network.exe" + "11.6.2" = "https://developer.download.nvidia.com/compute/cuda/11.6.2/network_installers/cuda_11.6.2_windows_network.exe"; + "12.4.0" = "https://developer.download.nvidia.com/compute/cuda/12.4.0/network_installers/cuda_12.4.0_windows_network.exe" } # @todo - change this to be based on _MSC_VER intead, or invert it to be CUDA keyed instead? $VISUAL_STUDIO_MIN_CUDA = @{ - "2022" = "11.6"; + "2022" = "12.4"; "2019" = "10.1"; "2017" = "10.0"; # Depends on which version of 2017! 9.0 to 10.0 depending on version "2015" = "8.0"; # might support older, unsure. diff --git a/cmake/FindBlosc.cmake b/cmake/FindBlosc.cmake index a9c77ae5e7..9b873cfb63 100644 --- a/cmake/FindBlosc.cmake +++ b/cmake/FindBlosc.cmake @@ -188,22 +188,6 @@ list(APPEND _BLOSC_LIBRARYDIR_SEARCH_DIRS ${SYSTEM_LIBRARY_PATHS} ) -# Library suffix handling - -set(_BLOSC_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) -set(_BLOSC_ORIG_CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES}) - -if(MSVC) - if(BLOSC_USE_STATIC_LIBS) - set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib") - set(CMAKE_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES};lib") - endif() -else() - if(BLOSC_USE_STATIC_LIBS) - set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") - endif() -endif() - set(Blosc_LIB_COMPONENTS "") # NOTE: Search for debug version first (see vcpkg hack) list(APPEND BLOSC_BUILD_TYPES DEBUG RELEASE) @@ -246,13 +230,6 @@ foreach(BUILD_TYPE ${BLOSC_BUILD_TYPES}) set(CMAKE_IGNORE_PATH ${_BLOSC_CMAKE_IGNORE_PATH}) endforeach() -# Reset library suffix - -set(CMAKE_FIND_LIBRARY_SUFFIXES ${_BLOSC_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) -set(CMAKE_FIND_LIBRARY_PREFIXES ${_BLOSC_ORIG_CMAKE_FIND_LIBRARY_PREFIXES}) -unset(_BLOSC_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) -unset(_BLOSC_ORIG_CMAKE_FIND_LIBRARY_PREFIXES) - if(Blosc_LIBRARY_DEBUG AND Blosc_LIBRARY_RELEASE) # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for # single-config generators, set optimized and debug libraries diff --git a/nanovdb/nanovdb/unittest/TestNanoVDB.cu b/nanovdb/nanovdb/unittest/TestNanoVDB.cu index ba60b231d5..0b0ee9eccf 100644 --- a/nanovdb/nanovdb/unittest/TestNanoVDB.cu +++ b/nanovdb/nanovdb/unittest/TestNanoVDB.cu @@ -22,6 +22,7 @@ #include #include // for std::sort +#include // for std::setw, std::setfill namespace nanovdb {// this namespace is required by gtest diff --git a/openvdb/openvdb/Types.h b/openvdb/openvdb/Types.h index ad811e1520..d654750b7e 100644 --- a/openvdb/openvdb/Types.h +++ b/openvdb/openvdb/Types.h @@ -688,6 +688,23 @@ class Steal {}; /// @brief Tag dispatch class that distinguishes constructors during file input class PartialCreate {}; +// For half compilation +namespace math { +template<> +inline auto cwiseAdd(const math::Vec3& v, const float s) +{ + math::Vec3 out; + const math::half* ip = v.asPointer(); + math::half* op = out.asPointer(); + for (unsigned i = 0; i < 3; ++i, ++op, ++ip) { + OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN + *op = *ip + s; + OPENVDB_NO_TYPE_CONVERSION_WARNING_END + } + return out; +} +} // namespace math + } // namespace OPENVDB_VERSION_NAME } // namespace openvdb diff --git a/openvdb/openvdb/unittest/TestLinearInterp.cc b/openvdb/openvdb/unittest/TestLinearInterp.cc index 944f0ef60b..137c81f7de 100644 --- a/openvdb/openvdb/unittest/TestLinearInterp.cc +++ b/openvdb/openvdb/unittest/TestLinearInterp.cc @@ -999,7 +999,7 @@ template void TestLinearInterp::testStencilsMatch() { - typedef typename GridType::ValueType ValueType; + using ValueType = typename GridType::ValueType; GridType grid; typename GridType::TreeType& tree = grid.tree(); @@ -1022,14 +1022,13 @@ TestLinearInterp::testStencilsMatch() openvdb::tools::GridSampler interpolator(grid); - openvdb::math::BoxStencil - stencil(grid); - - typename GridType::ValueType val1 = interpolator.sampleVoxel(pos.x(), pos.y(), pos.z()); + openvdb::math::BoxStencil stencil(grid); + const ValueType val1 = interpolator.sampleVoxel(pos.x(), pos.y(), pos.z()); stencil.moveTo(pos); - typename GridType::ValueType val2 = stencil.interpolation(pos); - EXPECT_EQ(val1, val2); + const ValueType val2 = stencil.interpolation(pos); + static const ValueType epsilon = openvdb::math::Delta::value(); + EXPECT_NEAR(val1, val2, epsilon); } } TEST_F(TestLinearInterp, testStencilsMatchFloat) { testStencilsMatch(); } diff --git a/pendingchanges/windows_static_blosc.txt b/pendingchanges/windows_static_blosc.txt new file mode 100644 index 0000000000..882dc1f3fa --- /dev/null +++ b/pendingchanges/windows_static_blosc.txt @@ -0,0 +1,2 @@ +Build: + - Fixed an issue with the Blosc CMake FindPackage for the OpenVDB Windows static library. diff --git a/tsc/meetings/2023-01-24.md b/tsc/meetings/2023-01-24.md new file mode 100644 index 0000000000..966a406bfa --- /dev/null +++ b/tsc/meetings/2023-01-24.md @@ -0,0 +1,125 @@ +Minutes from OpenVDB TSC meeting, January 24, 2023 + +Attendees: *Jeff* L., *Andre* P, *Dan* B., *Ken* M., *Nick* A., *Greg* H. + +Additional Attendees: JT Nelson (Blender) + +Regrets: *Rich* J. + +Agenda: + +1) Confirm quorum +2) Secretary +3) Broken Houdini download link +4) Open PR's +5) Fracture CSG tools +6) Active states +7) Sharpening filter + + +------------ + +1) Confirm quorum + +Quorum is present. + +2) Secretary + +Secretary is Greg Hurst. + +3) Broken Houdini download link + +Houdini download link is broken at openvdb.org downloads page. Happened during git lfs switch. Need to upload regularly using git. + +File not updated often, so it's ok to not use git lfs and just use regular git commit. + +Maybe the URL needs to change in the html source when using git lfs? + +4) Open PR's + +Python bindings (1515) +* Ken will try to look at the PR tomorrow +* Recreate the PR to remedy the CLA issues and credit the original author +* Or squash everything and go as if everything is just one commit + +Switch to using the static asserts (1522) +* Why do we have a special wrapper for the static assert? +* NANOVDB_ASSERT instead of the static_assert +* Soon nanovdb will require C++17 (waiting on pnanovdb) +* Ideally we'd have #ifdef platform instead of #if 1, so keep skeleton code present through #if 0 +* Ken will approve and merge + +Prefer fixed-width integer types instead of size_t (1528) +* Awaiting another approval -- Dan will approve + +Add missing separate_arguments cmake call (1534) +* Needs another look -- not entirely clear why this was added +* Splits list of arguments in case they're separated by non-standard delimiters +* Perhaps re-ask OP what failed / why make this PR + +Support for IlmBase versions < 3.1 is deprecated and will be removed (1529) +* vdbtool stuff +* This PR looks to remove support for old version + +Remove the explicit default assignment operator (1530) +* Remove explicit default assignment operator in nanovdb +* Once something is given a default, you need to set default for other things too +* More defaults need to be removed in the same file before approval + +Consolidated ValueAccessor implementations (1547) +* Perhaps someone can build and see if everything still works, test against Houdini, etc. +* Implementation related questions added to the PR by Dan +* The override specifiers might be redundant +* Need to add missing isCached in code base in similar piece of code. + +Fix Segfault in Projection Mode of VDB Advect Points SOP (1559) +* Just awaiting approval from Jeff + +Fix all the int-in-bool-context warnings with GCC9 (1563) +* Switch to use constexpr +* Still need macros to guard type conversions? (Node type conversion warning, just relevant to float portion now) +* LOD removed for bool grids + +5) Fracture CSG tools + +https://github.com/AcademySoftwareFoundation/openvdb/issues/1566 + +Seemless free cuts -- how can you do this with OpenVDB? Can do it in Houdini though since it has robust mesh support. + +Really need this to make your split-frame free of artifacts and for water-tight union. + +Our current choice is to not support robust mesh computation. Currently OpenVDB just has polygon soup. Mainly used for translation purposes. Robust support could lead us down a rabbit hole. + +By templating our meshes, it's probably not clear that if you wrote your own accelerated structure, what methods you need. + +Houdini seems to use everything in OpenVDB here, and so we could return polygon soup and edge data list (MeshToVoxelEdgeData) and the user can do it. The SOP can be a reference. + +Point OP to this SOP / OpenVDB methods. + +6) Active / Inactive States + +What should the default behavior be and how to expose different functionalities. + +Default behavior proposed: Max of values and if either is active make result active. + +Currently the activeness of states is not being brought over. + +Not more efficient to make 2 passes when combining multiple grids. Loses cache coherency. +2 passes node-wise will be more efficient than 2 passes tree-wise. + +Do we want the ability to handle active states differently? +Maybe we have a use to ignore when any grid has an inactive value. + +max( (0.0, inactive), (-1.0, active) ) --> (0.0, active) or (0.0, inactive)? + +What does it mean for a fog volume node to be active? Tags (GRID_LEVEL_SET, etc in enum GridClass) give implicit meaning to active states / values +Majority of tools don't seem to normalize fogs to lie between 0 and 1. Difficult to maintain this discipline. + +Make sure to make whatever choices extendable. Tricky part is coming up with different patterns. +Selection merge and reduction merge, etc. + +7) Sharpening filter + +Switch away from boost dependencies & add unit tests. + +Seems like updated PR could be around the corner. diff --git a/tsc/meetings/2023-05-02.md b/tsc/meetings/2023-05-02.md new file mode 100644 index 0000000000..b75abfcd72 --- /dev/null +++ b/tsc/meetings/2023-05-02.md @@ -0,0 +1,89 @@ +Minutes from OpenVDB TSC meeting, May 02, 2023 + +Attendees: *Jeff* L., *Andre* P, *Ken* M., *Greg* H., *Dan* B. + +Additional Attendees: + +Regrets: *Rich* J., *Nick* A. + +Agenda: + +1) Confirm quorum +2) Secretary +3) SIGGRAPH 2023 +4) Website broken link +5) Root node offset +6) I/O revamp + +------------ + + +1) Confirm quorum + +Quorum is present. + + +2) Secretary + +Secretary is Greg Hurst. + + +3) SIGGRAPH 2023 + +Course accepted with good feedback from reviewers. +Must sign over copyrights for anything in the presentation. Need to do this now. +Course material must be submitted by June 5. Option to revise slides by August 11. + +For ASWF: tentatively do Bird of a Feather and advertise SIGGRAPH course. + + +4) Website broken link + +PR for broken Houdini link to be merged. +https://github.com/AcademySoftwareFoundation/openvdb-website/pull/71 + +Fixed link: +https://www.openvdb.org/download/files/houdini_examples.hip-1.0.1.zip + + +5) Root node offset + +Root node dense, all other nodes are dense. Root essentially hash table. + +Since root is sparse, root access is slower. Tend to avoid touching the root node. e.g. value accessors. + +Root is centered at origin (0, 0, 0), and so a small sphere centered at the origin makes 8 children. + +The offset mitigates this issue. + +Root node now has mOrigin member, just like all other nodes (added in v10) + +Currently mOrigin is hard coded to origin still and even has checks to throw errors if not. + +First pass tried to hard code half offset (-2048, -2048, -2048) but saw no measurable speedup. + +Can we make mOrigin anything? If so looks like we will have massive overhead -- merging trees, etc will need to rebuild tree structure. + +If you guarantee that the root node is aligned with grandchild of other root +e.g. If mOrigin is a multiple of 128, then only misaligned is child nodes of the root. +And so during these operations, only root node needs to be rebuilt. +It _can_ generalize to arbitrary fan factors but need different number from 128. +2 level tree is a special case, but n (>= 3) follows above logic. + +What is the impact on the existing code? CSG, Combinations, etc. +Merging 2 grids with incommensurate origins is tricky if const operators... duplicate data etc. + +How to maintain backward compatibility for I/O if we just hardcode (-2048, -2048, -2048)? +And (it seems) that's the only backward compatibility to suss out. +Export will need to recenter to (0, 0, 0)? +I/O needs to be refactored anyway... +Hardcoded global offset means we don't need to explicitly export it + +Ken will investigate and do deep dive + + +6) I/O revamp + +Would be good to investigate into I/O revamp. +Come up with a list of modern requirements. +Refer to this list in future development efforts. diff --git a/tsc/meetings/2023-09-05.md b/tsc/meetings/2023-09-05.md new file mode 100644 index 0000000000..93203b7d91 --- /dev/null +++ b/tsc/meetings/2023-09-05.md @@ -0,0 +1,129 @@ +Minutes from OpenVDB TSC meeting, September 5, 2023 + +Attendees: *Jeff* L., *Rich* J., *Ken* M., *Greg* H., *Dan* B., *Andre* P. + +Additional Attendees: + +Regrets: *Nick* A. + +Agenda: + +1) Confirm quorum +2) Secretary +3) VTT +4) VDB Maya +5) V10.1 +6) PRs + +------------ + + +1) Confirm quorum + +Quorum is present. + + +2) Secretary + +Secretary is Greg Hurst. + + +3) VTT + +Autodesk has a product call Bifrost (sim framework) + +Internal multires grid + +NanoVTT github repo expires in September... but it's a fork of OpenVDB? + +Bifrost group seems gunghoe about open sourcing it + +Why open source it? +Integration of nanovtt into OpenVDB will be intricate. +Attend meetings, contribute to the CI is a good start, but will be much more complicating. What's the balance? + +Sampling across tiles is tricky and they have the method they want to use -- could be advantageous to open source as a standard + +Why should this be part of OpenVDB and not its own product? Best not to have competing formats +But how can the two coexist in a meaningful way? Can't just have two independent things + +OpenVDB has threadpools, math functions, metadata, transforms, etc. And a standard API. VTT could integrate into these. + +VDB's are sparse (active / inactive, etc) +VTT's is in some sense dense, but adaptive +Complementary data structures + +This is an opportunity to rip out delayed loading for vdb +We can have a family of grids that perform and specialize in different use cases +When we write tools, what grids should & could these tools support? + +Could this be confusing to general users? +Is VTT too similar sounding to VDB + +We will need support from them integrating properly +We need commitment to delivering everything, not just nanovtt + +Another need is conversion between vdb and vtt, something that's missing at the moment + +Can we iterate of vtt grids in similar fashions (API-wise at least) to DynamicNodeManager? + +If they first just give us NanoVTT, then they write a converter, is that even a meaningful thing? +OpenVDB grid does not contain adaptive information, but possible ways one might want to convert + +How does VTT compare to a stack of VDBs? + +Did VTT mention point support at all? Points to volume mentioned in their ppt + +Mathematica link to vtt? Probably, yes + +********** + +we agree we don't want just NanoVTT +C++ structure for non-NanoVTT should have: + VTT needs a sampler + way to save and load from disk + NodeManager-esque interfaces + Converters + Random access + +********** + +Worth asking them about feasibility of above and what they have in the bifrost SDK + +Let's organize all of this in a Google doc to establish minimally required features. + +What version would this go into? +This will change ABI? and so V12 integration? + +Probably would inherit GridBase without a Tree pointer. + + +4) VDB Maya + +What happens to VDB Maya now? + +Probably broken at this point... + +Should we just move it to its own repo and retire it from OpenVDB repo? + +It's a useful reference and useful starting point. + +Who own's the separate repo, etc... + +What about deleting from git repo but keep folder with a text file saying to go to a branch to find it? + + +5) V10.1 + +Ellipsoid stuff still being worked on + +Just push out what we have now + + +6) PR + +PR 1651 suffering from TBB build errors: + https://github.com/oneapi-src/oneTBB/issues/301 + Bumping up to TBB 2021.2 will probably fix this +PR 1655 needs a look +PR 1666 on fast sweeping needs to be refactored diff --git a/tsc/meetings/2023-10-17.md b/tsc/meetings/2023-10-17.md new file mode 100644 index 0000000000..88b39cf93f --- /dev/null +++ b/tsc/meetings/2023-10-17.md @@ -0,0 +1,65 @@ +Minutes from OpenVDB TSC meeting, October 17, 2023 + +Attendees: *Jeff* L., *Andre* P, *Ken* M., *Greg* H., *Dan* B., *Rich* J., *Nick* A. + +Additional Attendees: + +Regrets: + +Agenda: + +1) Confirm quorum +2) Secretary +3) PRs +4) Root Node TBB concurrent hash node +5) ABI changes in NanoVDB +6) VDB 11 + +------------ + + +1) Confirm quorum + +Quorum is present. + + +2) Secretary + +Secretary is Greg Hurst. + + +3) PRs + +1687 need another approval and CLI +1685 abstraction layer. + 122 files changed + wrapper around TBB + higher level wrappers in nano: + for_each, reduce, ... + define a functor that you do parallel_reduce over + std::thread implementation & serial fallback functionality + similar TBB mechanisms we use in the codebase, we should consolidate this at first + use case here is if you have your own thread pool + another is to be able to build OpenVDB without TBB + + OpenVDB needs to have it's own highlevel parallel functionality that just uses TBB under the hood + grainsize is important keep exposed +1679 + checking for the grid but dereferencing the iterator + looks good to go + +4) Root Node TBB concurrent hash node + violates ABI? + we should get rid of this + +5) ABI changes in NanoVDB + Nano has its own versioning system + Do we adopt same ABI change policies for nano used in OpenVDB + So now is the time to change the ABI + +6) VDB 11 + Need people to look at infrastructure changes + Removes support for ilmBase + Does this build with Houdini 20? + 10.1 works just fine + Closer to removing Boost dependencies (still optional for delayed loading) diff --git a/tsc/meetings/2024-02-06.md b/tsc/meetings/2024-02-06.md new file mode 100644 index 0000000000..dae626664b --- /dev/null +++ b/tsc/meetings/2024-02-06.md @@ -0,0 +1,73 @@ +Minutes from OpenVDB TSC meeting, February 06, 2024 + +Attendees: *Jeff* L., *Andre* P, *Ken* M., *Greg* H., *Dan* B., *Rich* J. + +Additional Attendees: + +Regrets: + +Agenda: + +1) Confirm quorum +2) Secretary +3) PRs +4) Major refactoring in Nano + +------------ + + +1) Confirm quorum + +Quorum is present. + + +2) Secretary + +Secretary is Greg Hurst. + + +3) PRs + +1762: Vector fog volumes throw a printf to the console whenever one is created + +Remove #if 1 fprintf(stderr,"Warning: .... + +1760: Adaptive grid placeholder. +Simple grid: A background value only grid -- extendable to dense grids, etc. + +adaptive name space and in directory openvdb/adaptive +Rename GridTypes to SparseGridTypes and adds AdaptiveGridTypes too. +Instead should we do AllGridTypes and keep GridTypes unchanged OR do we deprecate the GridTypes alias? +The name 'GridType' is confusing... it really is a value type for a grid + +Introduces TreeTraits -- determine if a grid is sparse, adaptive, etc. +e.g. + +if constexpr (TreeTraits::IsSparse) { + // sparse implementation +} else if constexpr (TreeTraits::IsAdaptive) { + // adaptive implementation +} +OPENVDB_THROW(NotImplementedError, ""); + +Do we have an entry method and then a header file for each grid type? +e.g. openvdb/tools/Count.h has an entry method that calls openvdb/tools/sparse/Count.h, etc + +How many tools will/should support multiple grid types? Andre has a list of the ~200 tools to sift through +certainly samplers +Let's add in support as needed +API and user include paths need to remain the same then implementation details aren't as important + +Proposed types: +Sparse (OG grids) +Adaptive +Dense +Procedural/Implicit + +Invite back to VTT team and walk them through these ideas and attempt +(Change example from memUsage to sampler on a flat list of points) + +4) Major refactoring in Nano + +Use of namespaces that emulate OpenVDB and accompanying subdirectories. +Affects client code, but there's a script that can help alleviate. diff --git a/tsc/meetings/2024-04-06.md b/tsc/meetings/2024-04-06.md new file mode 100644 index 0000000000..bf7d78e53f --- /dev/null +++ b/tsc/meetings/2024-04-06.md @@ -0,0 +1,84 @@ +Minutes from OpenVDB TSC meeting, April 06, 2024 + +Attendees: *Jeff* L., *Andre* P, *Ken* M., *Greg* H., *Dan* B., + +Additional Attendees: Nishith Singhai + +Regrets: + +Agenda: + +1) Confirm quorum +2) Secretary +3) Half Grid & Grid registration +4) PR 1780 +5) retooling IO +6) Adaptive grids +7) xz + +------------ + + +1) Confirm quorum + +Quorum is present. + + +2) Secretary + +Secretary is Greg Hurst. + + +3) Half Grid + +Andre will merge his work into master first +ghurst will then retool his branch too +Autodesk is working from Andre's branch too for half IO conversions + +We should add Vec3HGrid + +Other Vec2XXX grids, we might not want to register in the openvdb repo + +We should be willing to add IO but not instantiation by default + + +4) PR 1780 + +Ivo presented 2 weeks ago + +Question: +Is it worth to expose convert to half grid only first? +A lot of improvements could be made to IO in general, so it might make sense to start retooling here with a leaner implementation. + +Answers: +But it's already 'done' and could influence how we want to retool the IO... +It is also much more efficient to do a JIT conversion during import. + + +5) retooling IO + +Need to do some benchmarking to determine if it's worth retooling IO + +Is there a way to merge vdb and nvdb into one file format? + +What about adaptive, dense, etc. + +No multipassing (multiple traversals of the tree to export), and so you work against that. i.e. you must write topology then data. + +It's because the writers are on the tree because the methods need to be virtual. And so you can just write out certain internal nodes, etc. + + +6) Adaptive grids + +We should decide if we're going to pitch to Autodesk the prototype that's put together. + +Looking over PR 1760 again... + + +7) xz + +SSH vulnerability since xz is compromised + +Consequences for OpenVDB? + +Treat external vdbs as suspect, and therefore we 'round-trip' import/export vdb or recreate the vdb ourselves? So binary vdbs being read for bug submissions / unit-tests. diff --git a/tsc/meetings/2024-04-23.md b/tsc/meetings/2024-04-23.md new file mode 100644 index 0000000000..144d9cd061 --- /dev/null +++ b/tsc/meetings/2024-04-23.md @@ -0,0 +1,60 @@ +Minutes from OpenVDB TSC meeting, April 23rd, 2024 + +Attendees: *Jeff* L., *Andre* P, *Dan* B., *Greg* H., *Ken* M. + +Additional Attendees: +Rabih Masri (Solitons, Inc: building an ultra-realistic underwater metaverse) + +Regrets: *Nick* A., *Rich* J. + +Agenda: + +1) Confirm quorum +2) Secretary +3) Bifrost team +4) PR 1793 +5) PR 1794 +6) PR 1796 +7) fVDB + +------------ + +1) Confirm quorum + +Quorum is present. + +2) Secretary + +Secretary is Greg Hurst. + +3) Bifrost team + +Confirmed we have sent them relevant info pertaining to adaptive grids and are waiting to hear back + +4) PR 1793 + +Fillet filter based off LevelSetFilter + +"Clamped min-principle curvature flow", so it's similar to mean-curvature flow + +Appears in page 204 on 'Level Set Methods and Fast Marching Methods by J.A. Sethian' + +indefinite iterations convereges to convex hull + +5) PR 1794 + +Quick fix to prevent integer overflow in NodeManager and LeafManager when iterating over large grids + +6) PR 1796 + +guarding UINT64_C in nanovdb (for NVRTC users who have it defined already) + +7) fVDB + +Future project to be open sourced in the OpenVDB repo + +Will get its own folder, similar to Houdini, Maya, Wolfram, etc. + +Stands for "feature VDB" and uses to ML to reconstruct geometry from point clouds + +PyTorch dependancy diff --git a/tsc/meetings/2024-04-30.md b/tsc/meetings/2024-04-30.md new file mode 100644 index 0000000000..dd4439b7d7 --- /dev/null +++ b/tsc/meetings/2024-04-30.md @@ -0,0 +1,67 @@ +Minutes from OpenVDB TSC meeting, April 30th, 2024 + +Attendees: *Ken* M., *Dan* B., *Greg* H., *Rich* J., *Andre* P + +Additional Attendees: +Matthew Cong (NVIDIA), Alexandre Sirois-Vigneux (SideFX), +Efty Sifakis (Univ. Wisconsin), Francis Williams (NVIDIA), +Jonathan Schwartz (NVIDIA), Michiel Hagedoorn +Dhruv Govil (Apple), Tom (Sidefx), Rayhaan Tanweer, +Rabih, Youmna, Shahan N + +Regrets: *Jeff* L., *Nick* A. + +Agenda: + +1) Confirm quorum +2) Secretary +3) Migration from PyBind11 to NanoBind +4) Greg's ASWF membership +5) FVDB +6) Next meeting + +------------ + +1) Confirm quorum + +Quorum is present. + +2) Secretary + +Secretary is Andre Pradhana. + +3) Migration from PyBind11 to NanoBind + +Matthew Cong presented a solution to handle NanoBind dependency +by using pip. He has done work on the NanoBind-side to allow this workflow. +The solution with Git-subtree/submodule is brittle because it +can run into firewall issues. + +It was re-iterated that NanoBind is preferred because of zero-interop +on the GPU side. + +Dhruv Govil pointed out that PyBind is used by other projects +for its support for multiple inheritance (which NanoBind doesn’t +support). + +4) Greg's ASWF membership + +Greg will follow up with John Mertic to be added to ASWF organization. + +5) FVDB + +NVIDIA team presented a presentation on fVDB, a project that is for +consideration to be adopted by OpenVDB project. It is a framework to +do spatial reasoning on 3D volumetric dataset, which includes deep- +learning. + +The main dependencies is pytorch. The project will live in its own +directory, parallel to the `openvdb` directory. + +Ken will bring up the need for GPU-support in the CI in the TAC meeting. +TSC members will be added to the private fVDB repository for further +investigation. Jonathan Schwartz provided us with documentation. + +6) Next meeting + +Next meeting is on May 7th, 2024. 2pm-3pm EDT (GMT-4) diff --git a/tsc/meetings/2024-06-25.md b/tsc/meetings/2024-06-25.md new file mode 100644 index 0000000000..9737d82001 --- /dev/null +++ b/tsc/meetings/2024-06-25.md @@ -0,0 +1,75 @@ +Minutes from OpenVDB TSC meeting, June 25th, 2024 + +Attendees: *Ken* M., *Jeff* L., *Greg* H., *Rich* J, *Andre* P. + +Regrets: *Nick* A., *Dan* B. + +Additional Attendees: +Dhruv Govil (Apple), Jonathan Swartz (NVIDIA), Francis Williams (NVIDIA), +John Mertic (The Linux Foundation), J. T. Nelson (Blender) + +Agenda: + +1) Confirm quorum +2) Secretary +3) CLA Language Option +4) License change PRs +5) NanoVDB Review +6) fVDB PR +7) Half Grid +8) SIGGRAPH OpenVDB BoF (Birds of a Feather) +9) Next Meeting + +------------ + +1) Confirm quorum + +Quorum is present. + +2) Secretary + +Secretary is Andre Pradhana. + +3) CLA Language Option + +John Mertic brings up the possibility to update the CLA (Contributor +License Agreement) for the OpenVDB project: one is using the Linux-Foundation +short form and then other one using Apache-style CLA. The advantage of moving +to a new CLA is to align the project with other organizations, reducing +possible friction for contributors to contribute. Ken will send an email to the +private TSC mailing address and we will take a vote. + +4) License change PRs + +Ken and Andre will work on merging more relicensing PR. + +Dhruv will write the script that will change the license identifier +from MPL 2.0 license to Apache 2.0. He will submit a PR. + +We need ILM sign-off for license change. + +5) NanoVDB Review + +Andre is trying to get unblock on the failing NanoVDB Windows CI. + +Andre suggests a name change from nanovdb::callNanoGrid to nanovdb::processTypedGrid +to reflect what is available on openvdb. + +6) fVDB PR + +We want to get fVDB to merge in before SIGGRAPH. We need more progress +in the fVDB Code Review. + +7) Half Grid + +Greg asks for more progress on the Half Grid PR. So far, Greg has been battle-testing +the Half-Grid PR and found no issues with it. Andre will write more unit tests after he +is done with the NanoVDB PR. + +8) SIGGRAPH OpenVDB BoF (Birds of a Feather) + +SIGGRAPH OpenVDB BOF is on Monday at 9 a.m. + +9) Next Meeting + +Next meeting is on July 2nd, 2024. 2pm-3pm EDT (GMT-4). diff --git a/tsc/meetings/2024-07-02.md b/tsc/meetings/2024-07-02.md new file mode 100644 index 0000000000..94ba460eac --- /dev/null +++ b/tsc/meetings/2024-07-02.md @@ -0,0 +1,65 @@ +Minutes from OpenVDB TSC meeting, July 2nd, 2024 + +Attendees: *Jeff* L., *Greg* H., *Rich* J, *Ken* M., *Andre* P. + +Regrets: *Nick* A., *Dan* B. + +Additional Attendees: +Dhruv Govil (Apple), Jonathan Swartz (NVIDIA), Francis Williams (NVIDIA), +JT Nelson (Blender) + +Agenda: + +1) Confirm quorum +2) Secretary +3) CLA Voting +4) PR for License Change +5) NanoVDB Code Review +6) fVDB PR +7) Siggraph BOF +8) Blender +9) Next Meeting + +------------ + +1) Confirm quorum + +Quorum is present. + +2) Secretary + +Secretary is Andre Pradhana. + +3) CLA Voting + +We voted to move the our CLA to the one used by most other ASWF +projects. + +4) License Change PR. + +Dhruv puts a PR for updating the license change: [PR-1858](https://github.com/AcademySoftwareFoundation/openvdb/pull/1858). + +5) NanoVDB Code Review + +Linux CI is currently not passing. Suggests a named change from +callNanoGrid to nanovdb::processTypedGrid since it provides the +same functionality as the openvdb counterpart. + +6) fVDB PR + +fVDB Branch needs to be public in github and it should be visible. +The first step is to reopen the fVDB PR. Need to add link to the +fVDB documentation in the OpenVDB website. We need CI to build docs +for fVDB. + +7) Siggraph BOF + +SIGGRAPH BOF is Monday, July 29 at 9 a.m. + +8) Blender + +OpenVDB in blender is working with Open3D Engine. + +9) Next Meeting + +Next meeting is on July 9th, 2024. 2pm-3pm EDT (GMT-4). diff --git a/tsc/meetings/2024-08-27.md b/tsc/meetings/2024-08-27.md new file mode 100644 index 0000000000..276a9005ec --- /dev/null +++ b/tsc/meetings/2024-08-27.md @@ -0,0 +1,117 @@ +Minutes from OpenVDB TSC meeting, August 27th, 2024 + +Attendees: *Jeff* L., *Greg* H., *Rich* J, *Ken* M., *Andre* P., *Dan* B. + +Regrets: *Nick* A., *Ken* M. + +Additional Attendees: +Dhruv Govil (Apple), Jonathan Swartz (NVIDIA), Barry Dempsey + +Agenda: + +1) Confirm quorum +2) Secretary +3) VDB 12 Release Items +4) License Changes +5) Maintainer List +6) CI Issues +7) PRs to merge +8) Next meeting + +------------ + +1) Confirm quorum + +Quorum is present. + +2) Secretary + +Secretary is Jeff Lait. + +3) VDB 12 Release Items + +a) Half support for v12 + +Should half grid be a REAL grid? Ie, should the macros for REAL grid +type include it? Conclusion was they should not. Instead a +higher-level named macro should contain Half. + +With this decided it is a v12 candidate. Proxy grid test is +failing, but other than that seems good. The problem is we can't +instantiate a proxy tree at the moment. + +b) fVDB + +Will be a feature branch. Can we have a cadence separate from main VDB? +Can binaries be released on a different place, like Anaconda? + +NanoVDB has a separate release system. + +Tags can be created on branches to mark a release point. + +This would require the fVDB release to be based against a stable +version of VDB. + +Currently NanoVDB and fVDB are tightly coupled - improvements to +NanoVDB are coming from fVDB. This suggests NanoVDB needs to match +fVDB. + +4) License Changes + +Still trying to set up the second repo to verify CLAs. + +5) Maintainer List + +Unanimous for changing Committer to Maintainer + +Unanimous that it is two maintainers to commit. + +Unanimous that all current TSC member are also maintainers. + +Unanimous that Jonathan Swartz to be added as a maintainer. + +Jeff will attempt to update the relevant policy docs. + +6) CI Issues + +No good tricks to speed up CI debugging. Can sometimes turn off +unnecessary runners, but some runners just take a long time until the +first possible error. + +The secret is for the Houdini download. + +cudann download seemed to be failing. This is likely not from our +runner side. + +Need notes for the PR for CI to explain why some of the unusual +solutions are present. + +Why certain versions of clang? This is likely to try to match the g++ +of the VFX platform, but we are not sure. The docker images came from +the ASWF. We have clang at all to catch more issues than g++ alone. + +VDB12 will likely drop support for gcc9. + +7) PRs to merge + +a) 744 - remove boost any + +Someone must approve by next meeting or it will be approved then. + +b) 1723 - boost conversion traits + +Waiting on the Half PR? We should take it out of the Half PR so this +can get in, Half PR can rebase on top of the resulting change. + +c) 1789, 1775 - Makes adaptive grid easier + +1789 is needed so you can use the same Grid with different custom Trees. + +1775 explores all possible instantiations and ensures they are handled. + +These are both on schedule to be decided on by the next meeting. + +8) Next Meeting + +Next meeting is on September 10th, 2024. 2pm-3pm EDT (GMT-4). + diff --git a/tsc/process/codereview.md b/tsc/process/codereview.md index 418e81d783..5cb7a0c015 100644 --- a/tsc/process/codereview.md +++ b/tsc/process/codereview.md @@ -1,24 +1,24 @@ **Code Reviewing and Merging OpenVDB Pull Requests** -The Technical Steering Committee have write-access to the OpenVDB repository and are responsible for triaging, reviewing and ultimately merging or rejecting GitHub pull requests. This document lists the policy and best practices to guide the TSC in this process. +The Maintainers have write-access to the OpenVDB repository and are responsible for triaging, reviewing and ultimately merging or rejecting GitHub pull requests. This document lists the policy and best practices to guide the Maintainers in this process. ***Policy*** * No direct commits to the master (or any other protected) branch, every code change should be a pull request * Any member of the community can provide feedback on any pull request (and is encouraged to do so) * A CODEOWNERS file introduced to the root of the repo to configure ownership (global, per-directory and/or per-file) - this will automatically request pull request reviews from the relevant maintainers (https://help.github.com/articles/about-codeowners/) -* Minimum of one non-author TSC member approval on every pull request before merging +* Minimum of one non-author Maintainer member approval on every pull request before merging * Non fast-forward merges must be used (ie the merge must not be rebased onto master) * Travis CI and DCO status checks must strictly pass before merging, ASWF Jenkins CI should loosely pass (https://help.github.com/articles/types-of-required-status-checks) ***Best Practices*** * Prefer all requested reviewers to approve before merging -* Merging a pull request should be the responsibility of the author if they are a TSC member -* Any TSC member can merge a pull request authored by a non-TSC member, but with a preferred minimum of two approvals from TSC members (including themself) +* Merging a pull request should be the responsibility of the author if they are a Maintainer member +* Any Maintainer member can merge a pull request authored by a non-Maintainer member, but with a preferred minimum of two approvals from Maintainer members (including themself) * Re-writing the branch history by rebasing a pull request branch just before a merge is discouraged, unless it significantly improves the overall history (such as any broken commits on the review branch that might make reverting or bisecting more difficult) * Prefer pull requests to be open for a minimum of 72 hours before merging in order to gather any feedback -* Aim for all pull requests to be responded to by one of the TSC members within a minimum of two weeks with either explanation of non-acceptance, request for changes or merge +* Aim for all pull requests to be responded to by one of the Maintainer members within a minimum of two weeks with either explanation of non-acceptance, request for changes or merge * TSC meetings should regularly review and discuss any outstanding pull requests * Pull requests should link to the associated Jira ticket (if applicable) in the description or title, this provides a route back to the Jira ticket through the Git history (git blame -> PR merge -> Jira ticket) * All pull request comments should aim to be answered and resolved before committing