A patch series six months in the making and consisting of 24 patches by longtime Intel Linux graphics engineer Ian Romanick was merged on Christmas Eve for Mesa 25.0.
In addition to the Christmas goodies from AMD’s Marek Olšák for Mesa, longtime Intel driver engineer Ian Romanick saw his big patch series merged for the Intel graphics compiler for treating convergent values as SIMD8.
Romanick explained in the commit introducing the Intel compiler infrastructure for storing convergent values as scalars:
“In SIMD16 and SIMD32, storing convergent values in full 16- or 32-channel registers is wasteful. It wastes register space, and in most cases on SIMD32, it wastes instructions. Our register allocator is not clever enough to handle scalar allocations. It’s fundamental unit of allocation is SIMD8. Start treating convergent values as SIMD8.”
The now-merged merge request goes on to explain:
“This is the bulk of “treat convergent values as SIMD8.” This series lays the groundwork to treat convergent ALU operations and many convergent “leaf” operations as SIMD8 in all dispatch modes. In SIMD16 this saves register space. In SIMD32 it saves register space and instructions. Leaf operations are operations that are always the leaves of NIR ALU expression trees. Load constant, load UBO, etc. are all leaf operations.
Overall, this MR is -158 lines of code because it deletes all of the resource rematerialization code. The resource rematerialization code used a similar technique, but it was more limited in scope. This MR does everything that the resource rematerialization code did, and much, much more.”
All of that restructuring for the Intel driver code is now merged for next quarter’s Mesa 25.0 release. It took six months to work through due to addressing GPU hangs and other regressions from the significant changes.