Hey, Some time ago, Daniel mentioned merging the assembler into intel-gpu-tools to lower maintenance cost and have more eyes on the code. This series is the aftermath of that with an effort to sync the opcode emission from Mesa with the assembler. It's also available in my fdo i-g-t tree: http://cgit.freedesktop.org/~damien/intel-gpu-tools/log/?h=wip/mesa-sync The list of changes is pretty large, but straighforward. The big picture is: - Sync the brw_eu* files from Mesa and split them into a library, - Gradually transform the assembler code to be able to use Mesa's structures and functions. The big change here is to collect the operands in struct brw_reg to be able to use the other brw_*() functions from Mesa, - Add some nice little details to the assembler (like cleaning-up the non-useful warning messages when compiling libva shaders, adding the line number to warning and error messages, adding region warnings, ...) - Port the few features that we need for the libva shaders to brw_eu_* - Fix a few things I came across - Lots of small refactoring The regression tests used to make sure that that series is not too wrong was to ensure libva's shaders generate the same opcodes. This also means "bug compatible" as there are cases where the assembler output opcodes that don't respect region constraints (for instance). This means that there's still a (documented) diff between Mesa's copy of brw_eu* and our. But hopefully, with time, it'll shrink down. There is a sister series for Mesa I'll post later on the Mesa mailing list, the sync goes both ways.