summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nouveau/nouveau_mm.h
blob: 5b57c8ba4f21ef31d78df5f8950c99df8bef26f0 (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
#ifndef __NOUVEAU_MM_H__
#define __NOUVEAU_MM_H__

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,
                  uint32_t storage_type);

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__