[Intel-gfx] Sync the assembler with Mesa's opcode emission code

Damien Lespiau damien.lespiau at intel.com
Mon Feb 4 16:26:55 CET 2013


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.




More information about the Intel-gfx mailing list