r300: Fix fragment program instruction pairing and register allocation
authorNicolai Haehnle <prefect@upb.de>
Sun, 18 Mar 2007 01:15:56 +0000 (02:15 +0100)
committerNicolai Haehnle <nhaehnle@gmail.com>
Mon, 19 Mar 2007 17:38:07 +0000 (18:38 +0100)
commit7b430acd71f04dce3e21bdcfe70115a23d751f30
treea50e3628283ba79336b6eb74ca9da061f8776917
parent07db8c9115c0b07d79be778976e25f8eb18d42a2
r300: Fix fragment program instruction pairing and register allocation

There were a number of bugs related to the pairing of vector and scalar
operations where swizzles ended up using the wrong source register,
or an instruction was moved forward and ended up overwriting an aliased
register.

The new algorithm for register allocation is quite conservative and may
run out of registers before necessary. On the plus side, It Just Works.

Pairing is done whenever possible, and in more cases than before, so
in practice this change should be a net win.
src/mesa/drivers/dri/r300/r300_context.h
src/mesa/drivers/dri/r300/r300_fragprog.c
src/mesa/drivers/dri/r300/r300_reg.h