Age | Commit message (Collapse) | Author |
|
|
|
Signed-off-by: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
|
|
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().
|
|
The debug functions depend on several util function for os abstractions, and
these depend on debug functions, so a seperate module is not possible.
|
|
|
|
This reverts commit a6d866f72c88d48d2bcfb3e3c882fdb639b5a8ce.
|
|
|
|
Used mostly to aid debugging memory issues or to clean up resources when
the drivers are long lived.
|
|
The freeSlabs list is not really needed as we free empty slabs immediately.
Time based cached is done separately.
|
|
In p_thread.h replace _glthread_* functions with new pipe_* functions.
Remove other old cruft.
|
|
Also, rename p_tile.[ch] to u_tile.[ch]
|
|
|
|
|
|
In pipebuffer, fencing is done at on a level above sub-allocation, so no
matter how many times slab allocator retries no buffer will be freed. The
pipebuffer fencing implemention already retries allocating.
|
|
|
|
We often want to use a pool of equally sized buffers, so this makes the
slab suballocator a drop-in replacement.
|
|
Not tested yet -- just compiles.
This includes only the slab algorithm. Fencing is already
implemented in pb_bufmgr_fence and time-based caching will be commited in a
separate module shortly.
|