Mesa (gallium-map-range): gallium: Unify reference counting.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed Mar 4 15:45:00 UTC 2009


Module: Mesa
Branch: gallium-map-range
Commit: 5e27cd46c04a9e7b5904cc014bffd0f4daae31fe
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5e27cd46c04a9e7b5904cc014bffd0f4daae31fe

Author: Michel Dänzer <daenzer at vmware.com>
Date:   Wed Mar  4 11:58:48 2009 +0100

gallium: Unify reference counting.

The core reference counting code is centralized in p_refcnt.h.

This has some consequences related to struct pipe_buffer:

* The screen member of struct pipe_buffer must be initialized, or
  pipe_buffer_reference() will crash trying to destroy a buffer with reference
  count 0. u_simple_screen takes care of this, but I may have missed some of
  the drivers not using it.
* Except for rare exceptions deep in winsys code, buffers must always be
  allocated via pipe_buffer_create() or via screen->*buffer_create() rather
  than via winsys->*buffer_create().

---

 src/gallium/auxiliary/draw/draw_pipe_aaline.c      |    4 +-
 src/gallium/auxiliary/draw/draw_pipe_pstipple.c    |    4 +-
 src/gallium/auxiliary/pipebuffer/pb_buffer.h       |   25 +---
 .../auxiliary/pipebuffer/pb_buffer_fenced.c        |   16 ++--
 .../auxiliary/pipebuffer/pb_buffer_malloc.c        |    2 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_cache.c |   11 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_debug.c |    8 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_mm.c    |    6 +-
 .../auxiliary/pipebuffer/pb_bufmgr_ondemand.c      |    2 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_pool.c  |    8 +-
 src/gallium/auxiliary/pipebuffer/pb_bufmgr_slab.c  |    6 +-
 src/gallium/auxiliary/sct/sct.c                    |    2 +-
 src/gallium/auxiliary/util/u_blit.c                |   17 ++--
 src/gallium/auxiliary/util/u_debug.c               |    4 +-
 src/gallium/auxiliary/util/u_draw_quad.c           |    2 +-
 src/gallium/auxiliary/util/u_gen_mipmap.c          |   17 ++--
 src/gallium/auxiliary/util/u_rect.c                |    6 +-
 src/gallium/auxiliary/util/u_simple_screen.c       |   28 ++++-
 src/gallium/auxiliary/util/u_timed_winsys.c        |    7 +-
 src/gallium/drivers/cell/ppu/cell_fence.c          |    6 +-
 src/gallium/drivers/cell/ppu/cell_texture.c        |   65 ++++-------
 src/gallium/drivers/failover/fo_context.c          |    2 +-
 src/gallium/drivers/i915simple/i915_prim_vbuf.c    |    2 +-
 src/gallium/drivers/i915simple/i915_screen.c       |   16 +--
 src/gallium/drivers/i915simple/i915_texture.c      |   72 ++++--------
 src/gallium/drivers/i965simple/brw_tex_layout.c    |   38 ++----
 .../drivers/i965simple/brw_wm_surface_state.c      |    2 +-
 src/gallium/drivers/nouveau/nouveau_stateobj.h     |   12 +--
 src/gallium/drivers/nv04/nv04_miptree.c            |   33 ++----
 src/gallium/drivers/nv04/nv04_transfer.c           |   11 +--
 src/gallium/drivers/nv10/nv10_miptree.c            |   43 +++----
 src/gallium/drivers/nv10/nv10_prim_vbuf.c          |    6 +-
 src/gallium/drivers/nv10/nv10_transfer.c           |   11 +--
 src/gallium/drivers/nv20/nv20_miptree.c            |   46 +++-----
 src/gallium/drivers/nv20/nv20_prim_vbuf.c          |    6 +-
 src/gallium/drivers/nv20/nv20_transfer.c           |   11 +--
 src/gallium/drivers/nv30/nv30_fragprog.c           |    3 +-
 src/gallium/drivers/nv30/nv30_miptree.c            |   33 ++----
 src/gallium/drivers/nv30/nv30_transfer.c           |   11 +--
 src/gallium/drivers/nv40/nv40_fragprog.c           |    3 +-
 src/gallium/drivers/nv40/nv40_miptree.c            |   33 ++----
 src/gallium/drivers/nv40/nv40_transfer.c           |   11 +--
 src/gallium/drivers/nv50/nv50_miptree.c            |   41 +++-----
 src/gallium/drivers/nv50/nv50_program.c            |    6 +-
 src/gallium/drivers/nv50/nv50_query.c              |    6 +-
 src/gallium/drivers/nv50/nv50_screen.c             |    6 +-
 src/gallium/drivers/nv50/nv50_transfer.c           |   13 +--
 src/gallium/drivers/r300/r300_screen.c             |   16 +--
 src/gallium/drivers/r300/r300_swtcl_emit.c         |    5 +-
 src/gallium/drivers/r300/r300_texture.c            |   48 +++------
 src/gallium/drivers/softpipe/sp_context.c          |    3 +-
 src/gallium/drivers/softpipe/sp_state_fs.c         |    4 +-
 src/gallium/drivers/softpipe/sp_texture.c          |   76 +++++--------
 src/gallium/drivers/softpipe/sp_tile_cache.c       |   14 +-
 src/gallium/drivers/trace/tr_screen.c              |  122 ++++++--------------
 src/gallium/drivers/trace/tr_state.c               |   12 ++-
 src/gallium/drivers/trace/tr_texture.c             |    4 +-
 src/gallium/drivers/trace/tr_winsys.c              |    8 +-
 .../include/pipe/internal/p_winsys_screen.h        |    3 +-
 src/gallium/include/pipe/p_inlines.h               |  113 ------------------
 src/gallium/include/pipe/p_refcnt.h                |   84 ++++++++++++++
 src/gallium/include/pipe/p_screen.h                |   16 +--
 src/gallium/include/pipe/p_state.h                 |   47 ++++++--
 src/gallium/state_trackers/dri2/dri_drawable.c     |    2 +-
 src/gallium/state_trackers/egl/egl_surface.c       |    6 +-
 src/gallium/state_trackers/g3dvl/vl_basic_csc.c    |    6 +-
 .../state_trackers/g3dvl/vl_r16snorm_mc_buf.c      |    8 +-
 src/gallium/state_trackers/python/st_device.c      |   24 +++--
 src/gallium/state_trackers/python/st_device.h      |    6 +-
 .../state_trackers/python/st_softpipe_winsys.c     |    4 +-
 src/gallium/state_trackers/xorg/xorg_crtc.c        |    4 +-
 src/gallium/state_trackers/xorg/xorg_dri2.c        |    2 +-
 src/gallium/state_trackers/xorg/xorg_exa.c         |   12 +-
 .../winsys/drm/intel/gem/intel_be_batchbuffer.c    |    4 +-
 src/gallium/winsys/drm/intel/gem/intel_be_device.c |   19 +---
 src/gallium/winsys/drm/intel/gem/intel_be_fence.h  |   18 +--
 .../winsys/drm/nouveau/common/nouveau_context.c    |    7 +-
 .../winsys/drm/nouveau/common/nouveau_context.h    |    2 +-
 .../drm/nouveau/common/nouveau_winsys_pipe.c       |    6 +-
 src/gallium/winsys/drm/radeon/radeon_buffer.c      |   10 +-
 src/gallium/winsys/drm/radeon/radeon_drm.c         |    3 +-
 src/gallium/winsys/egl_xlib/sw_winsys.c            |    6 +-
 src/gallium/winsys/g3dvl/xsp_winsys.c              |    4 +-
 src/gallium/winsys/gdi/gdi_softpipe_winsys.c       |    7 +-
 src/gallium/winsys/xlib/xlib_brw_screen.c          |    7 +-
 src/gallium/winsys/xlib/xlib_cell.c                |    4 +-
 src/gallium/winsys/xlib/xlib_softpipe.c            |    7 +-
 src/mesa/state_tracker/st_atom_constbuf.c          |    2 +-
 src/mesa/state_tracker/st_atom_pixeltransfer.c     |    2 +-
 src/mesa/state_tracker/st_cb_accum.c               |   18 ++--
 src/mesa/state_tracker/st_cb_bitmap.c              |   16 ++--
 src/mesa/state_tracker/st_cb_bufferobjects.c       |    5 +-
 src/mesa/state_tracker/st_cb_clear.c               |    8 +-
 src/mesa/state_tracker/st_cb_drawpixels.c          |   12 +-
 src/mesa/state_tracker/st_cb_fbo.c                 |    3 +-
 src/mesa/state_tracker/st_cb_readpixels.c          |    8 +-
 src/mesa/state_tracker/st_cb_texture.c             |   16 ++--
 src/mesa/state_tracker/st_context.c                |    2 +-
 src/mesa/state_tracker/st_draw.c                   |   10 +-
 src/mesa/state_tracker/st_draw_feedback.c          |    4 +-
 src/mesa/state_tracker/st_gen_mipmap.c             |    4 +-
 src/mesa/state_tracker/st_texture.c                |   10 +-
 102 files changed, 653 insertions(+), 943 deletions(-)

Diff:   http://cgit.freedesktop.org/mesa/mesa/diff/?id=5e27cd46c04a9e7b5904cc014bffd0f4daae31fe



More information about the mesa-commit mailing list