You can kind of think of it as java bytecode, if that helps. Or assembly code. Then all the various hardware backends just have to be able to translate that into something the hardware understands, rather than having to worry about parsing GLSL or anything.
Exactly. Mesa IR, TGSI, LLVM IR and the "il" used in our proprietary driver stack are all different IRs.
Some IR's use a "stream" format (something that looks like source code) intended primarily as an human-readable interface between layers (TGSI, il), others use a more structured format which allows compiler phases to run optimization passes on the IR directly (Mesa IR), still others offer multiple representations (LLVM).
Ah OK. For a second there I thought that my understanding of Gallium was not correct
IL means intermediate layer then, right? :P
Like X.org's protocol parser implementation? Or is that something else altogether?Some IR's use a "stream" format (something that looks like source code) intended primarily as an human-readable interface between layers
Intermediate Language
I haven't looked at that part of X for maybe 20 years, will let someone else answer
A simpler example would be a C compiler that generates assembler source code then passes it to an assembler for conversion to something the CPU can execute.