mesa/dlist: shortcircuit some redundant statechanges at compile time
authorKeith Whitwell <keithw@vmware.com>
Tue, 30 Jun 2009 08:55:33 +0000 (09:55 +0100)
committerKeith Whitwell <keithw@vmware.com>
Tue, 30 Jun 2009 08:55:33 +0000 (09:55 +0100)
commit47173cf67f0ed55012b0820397f6d620d8ad4473
tree802b6513d708298290d8e0655fcd30a69ecea863
parent9014f475ff6720b694ba28906ebfe7e77795b173
mesa/dlist: shortcircuit some redundant statechanges at compile time

Currently, state-changes in mesa display lists are more or less
a verbatim recording of the GL calls made during compilation.

This change introduces a minor optimization to recognize and eliminate
cases where the application emits redundant state changes, eg:

  glShadeModel( GL_FLAT );
  glBegin( prim )
  ...
  glEnd()
  glShadeModel( GL_FLAT );
  glBegin( prim )
  ...
  glEnd()

The big win is when we can eliminate all the statechanges between two
primitive blocks and combine them into a single VBO node.

This commit implements state-change elimination for Material and ShadeModel
only.  This is enough to make a start on debugging, etc.
src/mesa/main/dlist.c
src/mesa/main/mtypes.h