tgsi: add tgsi_ureg, a simplified tgsi shader builder
authorKeith Whitwell <keithw@vmware.com>
Thu, 13 Aug 2009 11:38:58 +0000 (12:38 +0100)
committerKeith Whitwell <keithw@vmware.com>
Thu, 13 Aug 2009 12:02:47 +0000 (13:02 +0100)
commit8a7d1e7b7681a4f0be9cee9e62477317dcd09caf
treec7d3fe0859af2f4707a4013348ef21a93090daa8
parent1f40ffca634b8d6699c9b5d153c231e79527317a
tgsi: add tgsi_ureg, a simplified tgsi shader builder

This is modelled on the nice & easy-to-use facilities we had
for building shaders in mesa, eg. in texenvprogram.c and friends.

Key points include pass-by-value register structs that can be manipulated
in a functional style, eg:

   negate(swizzle(reg, X,X,X,X))

and per-opcode instruction functions, eg:

   emit_MOV( p, writemask(dst, 0x1), negate(src));

and similar.

Additionally, the interface allows mixed emit of instructions and decls,
which are sorted out internally to obey TGSI ordering.

Immediates may be emitted at any time and are scanned against existing
immediates to try and reduce redundancy.

Not all TGSI functionality is accessible through this interface, but
most or all of what mesa uses should be.
src/gallium/auxiliary/tgsi/Makefile
src/gallium/auxiliary/tgsi/SConscript
src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h [new file with mode: 0644]
src/gallium/auxiliary/tgsi/tgsi_ureg.c [new file with mode: 0644]
src/gallium/auxiliary/tgsi/tgsi_ureg.h [new file with mode: 0644]