summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nouveau/nouveau_mm.h
blob: 8e4f1e5713f20b4871a5d47fb342bd1d29f53450 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef __NOUVEAU_MM_H__
#define __NOUVEAU_MM_H__

union nouveau_bo_config;
struct nouveau_mman;

/* Since a resource can be migrated, we need to decouple allocations from
 * them. This struct is linked with fences for delayed freeing of allocs.
 */
struct nouveau_mm_allocation {
   struct nouveau_mm_allocation *next;
   void *priv;
   uint32_t offset;
};

extern struct nouveau_mman *
nouveau_mm_create(struct nouveau_device *, uint32_t domain,
                  union nouveau_bo_config *);

extern void
nouveau_mm_destroy(struct nouveau_mman *);

extern struct nouveau_mm_allocation *
nouveau_mm_allocate(struct nouveau_mman *, uint32_t size,
                    struct nouveau_bo **, uint32_t *offset);

extern void
nouveau_mm_free(struct nouveau_mm_allocation *);

extern void
nouveau_mm_free_work(void *);

#endif // __NOUVEAU_MM_H__