Intel is developing Jay, a new open-source shader compiler for Linux that could significantly boost performance on Intel GPUs by reducing instruction counts and compilation times compared to the current BRW compiler.
Intel is developing a new open-source shader compiler called Jay that promises to significantly improve Linux graphics performance on Intel hardware. The project, led by Alyssa Rosenzweig (formerly of Asahi Linux and Valve), represents a major shift in Intel's approach to shader compilation for their open-source Mesa drivers.
Why Jay Matters
Intel GPUs have historically relied on the BRW (Broadwell) shader compiler for their Mesa drivers, while also maintaining the Intel Graphics Compiler (IGC) for their Compute Runtime and Windows graphics stack. The development of Jay suggests Intel is investing in a dedicated solution optimized specifically for their Linux graphics drivers.
Technical Architecture
Jay is designed as a modern SSA-based (Static Single Assignment) compiler, drawing inspiration from other contemporary NIR backends like ACO, NAK, and AGX. Key architectural features include:
- SSA throughout: The compiler maintains SSA form throughout most of the compilation pipeline
- Colombet register allocator: Similar to NAK, this handles Intel's complex register regioning restrictions
- Phi deconstruction after register allocation: A design choice that simplifies certain aspects of the compilation process
- C implementation: Written in C with approximately 14,000 lines of new code
Current Status and Targets
The compiler is currently targeting Intel Xe2 hardware but will expand to support additional generations over time. Early testing shows promising results:
- OpenGL ES 3.0 conformance: Already passing
- OpenCL 3.0 conformance: Already passing
- Vulkan support: Work in progress
Performance Breakthroughs
The most compelling evidence for Jay's potential comes from early benchmark results. In a test of the math_bruteforce sin CTS test:
| Compiler | Instructions | Spills:Fills | Compilation Time |
|---|---|---|---|
| BRW (current) | 12,980 | 578:1144 | 19.91 seconds |
| Jay (new) | 6,768 | 361:396 | 7.00 seconds |
This represents more than a 2x reduction in instruction count and a 3x improvement in compilation time. The reduced spill/fill operations also suggest better register allocation efficiency.
Development Approach
Rather than maintaining Jay as an external project with frequent rebases, Intel is moving development in-tree within Mesa. This approach should facilitate better integration with the broader Mesa ecosystem and enable more rapid iteration.
Rosenzweig notes that Jay is still a work in progress and not ready for general testing, but the initial results are encouraging enough to warrant moving development into the main Mesa repository.
Future Outlook
The development of Jay represents Intel's continued investment in open-source graphics drivers for Linux. With the compiler still in early stages but already showing dramatic performance improvements, the future looks bright for Mesa compilers on Intel hardware.
The project will be discussed further at XDC (X.Org Developer's Conference) in Toronto, where Rosenzweig plans to share more details about the compiler's implementation and design decisions.
For Linux users with Intel GPUs, Jay could eventually deliver faster application startup times, smoother gaming experiences, and better overall graphics performance through more efficient shader compilation.

Comments
Please log in or register to join the discussion