You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1a0ad7f
Browse filesBrowse the repository at this point in the historyBrowse files
Summary:
Pull Request resolved: #1569
PyMomentum renderer tests were skipped in OSS CI because the rasterizer crashed
when built without SIMD. The failing path was `pymomentum.renderer` calling
software rasterization helpers such as `rasterize_spheres`, which eventually
iterate rasterizer primitives with `drjit::range<IntP>()`.
This works in internal Buck builds because those builds use SIMD compiler flags,
so Dr.Jit sees `IntP` as a packed SIMD packet and `drjit::range<IntP>()` produces
packet indices as intended. OSS/PyPI-style builds can compile with SIMD disabled,
where `IntP` becomes scalar (`Packet<int, 1>`). In that mode `drjit::range<IntP>()`
goes through Dr.Jit's recursive static-array range implementation instead of the
packed SIMD range path, and the one-dimensional scalar case underflows internally.
That produces invalid indices and can crash the renderer.
Fix this by adding a rasterizer-local `intPacketRange()` helper:
- SIMD builds continue to use `drjit::range<IntP>()`, with a static assertion that
`IntP` is actually packed.
- Scalar/non-SIMD builds use explicit packet iteration based on `drjit::arange<IntP>()`
and a tail mask.
Update all rasterizer primitive loops to use the helper, then unskip the affected
Linux and macOS PyMomentum renderer tests in OSS CI. The Windows `test_lighting`
skip remains because it tracks a separate CMake stack-overflow issue.
Reviewed By: cdtwigg
Differential Revision: D111828395
fbshipit-source-id: 556184370c9decba521cde0e924b6a0e69330a0d
0 commit comments