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).
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
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.