X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fmm.h;h=228721ca2a5467c73693e9afa7f0c6171b17c93c;hb=360ef827651bdc0da4b8ac251f3f048b1cab60d7;hp=83a4ac8c74d99dbf3260113d75e2fb6b636546c8;hpb=005469005df6ba5f80e382d5371c6d069c27738b;p=mesa.git diff --git a/src/mesa/main/mm.h b/src/mesa/main/mm.h index 83a4ac8c74d..228721ca2a5 100644 --- a/src/mesa/main/mm.h +++ b/src/mesa/main/mm.h @@ -1,6 +1,6 @@ /* * GLX Hardware Device Driver common code - * Copyright (C) 1999 Keith Whitwell + * Copyright (C) 1999 Wittawat Yamwong * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -19,39 +19,38 @@ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * */ -#ifndef MM_INC -#define MM_INC -struct mem_block_t { - struct mem_block_t *next; - struct mem_block_t *heap; - int ofs,size; - int align; - unsigned int free:1; - unsigned int reserved:1; -}; -typedef struct mem_block_t TMemBlock; -typedef struct mem_block_t *PMemBlock; +/** + * Memory manager code. Primarily used by device drivers to manage texture + * heaps, etc. + */ + + +#ifndef MM_H +#define MM_H + -/* a heap is just the first block in a chain */ -typedef struct mem_block_t memHeap_t; +struct mem_block { + struct mem_block *next, *prev; + struct mem_block *next_free, *prev_free; + struct mem_block *heap; + unsigned ofs; + unsigned size; + unsigned free:1; + unsigned reserved:1; +}; -static __inline__ int mmBlockSize(PMemBlock b) -{ return b->size; } -static __inline__ int mmOffset(PMemBlock b) -{ return b->ofs; } -/* +/** * input: total size in bytes * return: a heap pointer if OK, NULL if error */ -memHeap_t *mmInit( int ofs, int size ); +extern struct mem_block *mmInit(unsigned ofs, unsigned size); -/* +/** * Allocate 'size' bytes with 2^align2 bytes alignment, * restrict the search to free memory after 'startSearch' * depth and back buffers should be in different 4mb banks @@ -61,29 +60,31 @@ memHeap_t *mmInit( int ofs, int size ); * startSearch = linear offset from start of heap to begin search * return: pointer to the allocated block, 0 if error */ -PMemBlock mmAllocMem( memHeap_t *heap, int size, int align2, - int startSearch ); +extern struct mem_block *mmAllocMem(struct mem_block *heap, unsigned size, + unsigned align2, unsigned startSearch); -/* +/** * Free block starts at offset * input: pointer to a block * return: 0 if OK, -1 if error */ -int mmFreeMem( PMemBlock b ); +extern int mmFreeMem(struct mem_block *b); -/* +/** * Free block starts at offset * input: pointer to a heap, start offset * return: pointer to a block */ -PMemBlock mmFindBlock( memHeap_t *heap, int start); +extern struct mem_block *mmFindBlock(struct mem_block *heap, unsigned start); -/* +/** * destroy MM */ -void mmDestroy( memHeap_t *mmInit ); +extern void mmDestroy(struct mem_block *mmInit); -/* For debuging purpose. */ -void mmDumpMemInfo( memHeap_t *mmInit ); +/** + * For debuging purpose. + */ +extern void mmDumpMemInfo(const struct mem_block *mmInit); #endif