llvmpipe: do final the pixel in/out triangle test in the fragment shader
authorBrian Paul <brianp@vmware.com>
Wed, 16 Dec 2009 23:02:59 +0000 (16:02 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 16 Dec 2009 23:10:05 +0000 (16:10 -0700)
commitab9438193083b7f9a3180cb9cea45e269131048a
tree56affd185611182349f1db88cc2a49aa7d431e08
parente288796c92bb7d75cd6dfee968804c6230ef38d7
llvmpipe: do final the pixel in/out triangle test in the fragment shader

The test to determine which of the pixels in a 2x2 quad is now done in
the fragment shader rather than in the calling C code.  This is a little
faster but there's a few more things to do.

Note that the step[] array elements are in a different order now.  Rather
than being in row-major order for the 4x4 grid, they're in "quad-major"
order.  The setup of the step arrays is a little more complicated now.
So is the course/intermediate tile test code, but some lookup tables
help with that.

Next steps:
 - early-cull 2x2 quads which are totally outside the triangle.
 - skip the in/out test for fully contained quads
 - make the in/out comparison code tighter/faster.
src/gallium/drivers/llvmpipe/lp_jit.h
src/gallium/drivers/llvmpipe/lp_rast.c
src/gallium/drivers/llvmpipe/lp_rast.h
src/gallium/drivers/llvmpipe/lp_rast_priv.h
src/gallium/drivers/llvmpipe/lp_rast_tri.c
src/gallium/drivers/llvmpipe/lp_setup_tri.c
src/gallium/drivers/llvmpipe/lp_state_fs.c