~ubuntu-branches/ubuntu/maverick/libdrm/maverick-proposed

« back to all changes in this revision

Viewing changes to intel/mm.h

  • Committer: Bazaar Package Importer
  • Author(s): Timo Aaltonen
  • Date: 2010-01-09 00:00:29 UTC
  • mfrom: (1.3.3 upstream)
  • mto: (2.2.9 experimental)
  • mto: This revision was merged to the branch mainline in revision 39.
  • Revision ID: james.westby@ubuntu.com-20100109000029-yhmol07llcxuzk0c
Tags: upstream-2.4.17
ImportĀ upstreamĀ versionĀ 2.4.17

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * GLX Hardware Device Driver common code
 
3
 * Copyright (C) 1999 Wittawat Yamwong
 
4
 *
 
5
 * Permission is hereby granted, free of charge, to any person obtaining a
 
6
 * copy of this software and associated documentation files (the "Software"),
 
7
 * to deal in the Software without restriction, including without limitation
 
8
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 
9
 * and/or sell copies of the Software, and to permit persons to whom the
 
10
 * Software is furnished to do so, subject to the following conditions:
 
11
 *
 
12
 * The above copyright notice and this permission notice shall be included
 
13
 * in all copies or substantial portions of the Software.
 
14
 *
 
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
16
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 
18
 * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, 
 
19
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
 
20
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
 
21
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
22
 */
 
23
 
 
24
/**
 
25
 * Memory manager code.  Primarily used by device drivers to manage texture
 
26
 * heaps, etc.
 
27
 */
 
28
 
 
29
#ifndef MM_H
 
30
#define MM_H
 
31
 
 
32
struct mem_block {
 
33
        struct mem_block *next, *prev;
 
34
        struct mem_block *next_free, *prev_free;
 
35
        struct mem_block *heap;
 
36
        int ofs, size;
 
37
        unsigned int free:1;
 
38
        unsigned int reserved:1;
 
39
};
 
40
 
 
41
/* Rename the variables in the drm copy of this code so that it doesn't
 
42
 * conflict with mesa or whoever else has copied it around.
 
43
 */
 
44
#define mmInit drm_mmInit
 
45
#define mmAllocMem drm_mmAllocMem
 
46
#define mmFreeMem drm_mmFreeMem
 
47
#define mmFindBlock drm_mmFindBlock
 
48
#define mmDestroy drm_mmDestroy
 
49
#define mmDumpMemInfo drm_mmDumpMemInfo
 
50
 
 
51
/** 
 
52
 * input: total size in bytes
 
53
 * return: a heap pointer if OK, NULL if error
 
54
 */
 
55
extern struct mem_block *mmInit(int ofs, int size);
 
56
 
 
57
/**
 
58
 * Allocate 'size' bytes with 2^align2 bytes alignment,
 
59
 * restrict the search to free memory after 'startSearch'
 
60
 * depth and back buffers should be in different 4mb banks
 
61
 * to get better page hits if possible
 
62
 * input:       size = size of block
 
63
 *              align2 = 2^align2 bytes alignment
 
64
 *              startSearch = linear offset from start of heap to begin search
 
65
 * return: pointer to the allocated block, 0 if error
 
66
 */
 
67
extern struct mem_block *mmAllocMem(struct mem_block *heap, int size,
 
68
                                    int align2, int startSearch);
 
69
 
 
70
/**
 
71
 * Free block starts at offset
 
72
 * input: pointer to a block
 
73
 * return: 0 if OK, -1 if error
 
74
 */
 
75
extern int mmFreeMem(struct mem_block *b);
 
76
 
 
77
/**
 
78
 * Free block starts at offset
 
79
 * input: pointer to a heap, start offset
 
80
 * return: pointer to a block
 
81
 */
 
82
extern struct mem_block *mmFindBlock(struct mem_block *heap, int start);
 
83
 
 
84
/**
 
85
 * destroy MM
 
86
 */
 
87
extern void mmDestroy(struct mem_block *mmInit);
 
88
 
 
89
/**
 
90
 * For debuging purpose.
 
91
 */
 
92
extern void mmDumpMemInfo(const struct mem_block *mmInit);
 
93
 
 
94
#endif