mesa: Changes to 'master'

Eric Anholt anholt at kemper.freedesktop.org
Fri Dec 14 19:23:53 UTC 2007


 src/mesa/drivers/dri/i965/Makefile               |    1 
 src/mesa/drivers/dri/i965/brw_cc.c               |   22 
 src/mesa/drivers/dri/i965/brw_clip.c             |   35 -
 src/mesa/drivers/dri/i965/brw_clip_state.c       |   23 
 src/mesa/drivers/dri/i965/brw_context.c          |    2 
 src/mesa/drivers/dri/i965/brw_context.h          |  158 +++---
 src/mesa/drivers/dri/i965/brw_curbe.c            |   26 -
 src/mesa/drivers/dri/i965/brw_gs.c               |   32 -
 src/mesa/drivers/dri/i965/brw_gs_state.c         |   24 -
 src/mesa/drivers/dri/i965/brw_misc_state.c       |   98 +---
 src/mesa/drivers/dri/i965/brw_sf.c               |   33 -
 src/mesa/drivers/dri/i965/brw_sf_state.c         |   39 +
 src/mesa/drivers/dri/i965/brw_state.h            |   89 +--
 src/mesa/drivers/dri/i965/brw_state_batch.c      |    5 
 src/mesa/drivers/dri/i965/brw_state_cache.c      |  540 ++++++++++++-----------
 src/mesa/drivers/dri/i965/brw_state_dump.c       |  122 +++--
 src/mesa/drivers/dri/i965/brw_state_pool.c       |  141 ------
 src/mesa/drivers/dri/i965/brw_state_upload.c     |    6 
 src/mesa/drivers/dri/i965/brw_structs.h          |   18 
 src/mesa/drivers/dri/i965/brw_vs.c               |   30 -
 src/mesa/drivers/dri/i965/brw_vs_state.c         |   20 
 src/mesa/drivers/dri/i965/brw_vtbl.c             |    5 
 src/mesa/drivers/dri/i965/brw_wm.c               |   30 -
 src/mesa/drivers/dri/i965/brw_wm_sampler_state.c |   62 ++
 src/mesa/drivers/dri/i965/brw_wm_state.c         |   78 ++-
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |  157 +++++-
 src/mesa/drivers/dri/intel/intel_bufmgr_ttm.c    |  453 +++++++------------
 27 files changed, 1139 insertions(+), 1110 deletions(-)

commit diffs at http://gitweb.freedesktop.org/?p=mesa/mesa.git;a=summary

New commits:
commit 6f7d35318df592ec42a37ad0d42890118c02a6b8
Author: Eric Anholt <eric at anholt.net>
Date:   Wed Dec 12 14:38:38 2007 -0800

    [intel] Remove the relocation buffer lists and just cache one per buffer.
    
    Each buffer object now has a relocation buffer pointer, which contains the
    relocations for the buffer if there are any.  At the point where we have to
    create a new type of relocation entry, we can change the code over to allowing
    multiple relocation lists, but trying to anticipate what that'll look like
    now just increases complexity.
    
    This is a 30% performance improvement on 965.

commit 38bad7677e57d629eeffd4ef39a7fc254db12735
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Dec 14 11:02:48 2007 -0800

    [965] Replace the state cache suballocator with direct dri_bufmgr use.
    
    The user-space suballocator that was used avoided relocation computations by
    using the general and surface state base registers and allocating those types
    of buffers out of pools built on top of single buffer objects.  It also
    avoided calls into the buffer manager for these small state allocations, since
    only one buffer object was being used.
    
    However, the buffer allocation cost appears to be low, and with relocation
    caching, computing relocations for buffers is essentially free.  Additionally,
    implementing the suballocator required a don't-fence-subdata flag to disable
    waiting on buffer maps so that writing new data didn't block on rendering using
    old data, and careful handling when mapping to update old data (which we need
    to do for unavoidable relocations with FBOs).  More importantly, when the
    suballocator filled, it had no replacement algorithm and just threw out all
    of the contents and forced them to be recomputed, which is a significant cost.
    
    This is the first step, which just changes the buffer type, but doesn't yet
    improve the hash table to not result in full recompute on overflow.  Because
    the buffers are all allocated out of the general buffer allocator, we can
    no longer use the general/surface state bases to avoid relocations, and they
    are set to 0 instead.




More information about the mesa-commit mailing list