CELL: two-sided stencil fixes
authorRobert Ellison <papillo@tungstengraphics.com>
Tue, 11 Nov 2008 20:57:10 +0000 (13:57 -0700)
committerRobert Ellison <papillo@tungstengraphics.com>
Tue, 11 Nov 2008 20:57:10 +0000 (13:57 -0700)
commit90027f85786406133a5180998a75fb612b6a221e
tree595a268f7be19e2e763855b22a66efb0566123d2
parent2b66417402bc595be301ab9ed7b9ea2a5f79e180
CELL: two-sided stencil fixes

With these changes, the tests/stencil_twoside test now works.

- Eliminate blending from the stencil_twoside test, as it produces an
  unneeded dependency on having blending working

- The spe_splat() function will now work if the register being splatted
  and the destination register are the same

- Separate fragment code generated for front-facing and back-facing
  fragments.  Often these are the same; if two-sided stenciling is on,
  they can be different.  This is easier and faster than generating
  code that does both tests and merges the results.

- Fixed a cut/paste bug where if the back Z-pass stencil operation
  were different from all the other operations, the back Z-fail
  results were incorrect.
12 files changed:
progs/tests/stencil_twoside.c
src/gallium/auxiliary/rtasm/rtasm_ppc_spe.c
src/gallium/drivers/cell/common.h
src/gallium/drivers/cell/ppu/cell_gen_fragment.c
src/gallium/drivers/cell/ppu/cell_gen_fragment.h
src/gallium/drivers/cell/ppu/cell_state_emit.c
src/gallium/drivers/cell/spu/spu_command.c
src/gallium/drivers/cell/spu/spu_main.c
src/gallium/drivers/cell/spu/spu_main.h
src/gallium/drivers/cell/spu/spu_per_fragment_op.c
src/gallium/drivers/cell/spu/spu_per_fragment_op.h
src/gallium/drivers/cell/spu/spu_tri.c