nouveau: rework and simplify nv04/nv05 driver a bit
authorBen Skeggs <bskeggs@redhat.com>
Fri, 13 Apr 2012 07:50:37 +0000 (17:50 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 13 Apr 2012 16:56:12 +0000 (02:56 +1000)
commitf3d8bd3f7b9f5c6387cd5e629a82db9ad9a1e652
tree7708f8b86ab74d0d62585e0c2a8eb3321e7c81c8
parent2e47d01c9e5325906cf3bb979279599991c6328e
nouveau: rework and simplify nv04/nv05 driver a bit

TEXTURED_TRIANGLE and MULTITEX_TRIANGLE are both a bit special in that if
you use any other graph object in the meantime they'll forget their state
and spew a lovely METHOD_CNT error at you when you try to draw.

The pre-newlib driver has a flush_notify() hook which does this state
re-emit, and a number of random workarounds like extra flushes and state
dirtying after various operations to solve this issue.

I'm taking a slightly different approach to things instead, which has the
nice side-effect of removing the divergent code-paths for ttri/mtri, the
flush/dirty workarounds and the need for flush_notify.  Also gives a few
FPS boost in OA, yay.
src/mesa/drivers/dri/nouveau/nv04_context.c
src/mesa/drivers/dri/nouveau/nv04_context.h
src/mesa/drivers/dri/nouveau/nv04_render.c
src/mesa/drivers/dri/nouveau/nv04_state_fb.c
src/mesa/drivers/dri/nouveau/nv04_state_frag.c
src/mesa/drivers/dri/nouveau/nv04_state_raster.c
src/mesa/drivers/dri/nouveau/nv04_state_tex.c
src/mesa/drivers/dri/nouveau/nv04_surface.c