Merge commit 'origin/7.8'
[mesa.git] / src / gallium / drivers / nouveau / nouveau_screen.h
1 #ifndef __NOUVEAU_SCREEN_H__
2 #define __NOUVEAU_SCREEN_H__
3
4 struct nouveau_screen {
5 struct pipe_screen base;
6 struct nouveau_device *device;
7 struct nouveau_channel *channel;
8 };
9
10 static inline struct nouveau_screen *
11 nouveau_screen(struct pipe_screen *pscreen)
12 {
13 return (struct nouveau_screen *)pscreen;
14 }
15
16
17
18 /* Not really sure if this is needed, or whether the individual
19 * drivers are happy to talk to the bo functions themselves. In a way
20 * this is what we'd expect from a regular winsys interface.
21 */
22 struct nouveau_bo *
23 nouveau_screen_bo_new(struct pipe_screen *pscreen, unsigned alignment,
24 unsigned usage, unsigned bind, unsigned size);
25 struct nouveau_bo *
26 nouveau_screen_bo_user(struct pipe_screen *pscreen, void *ptr, unsigned bytes);
27 void *
28 nouveau_screen_bo_map(struct pipe_screen *pscreen,
29 struct nouveau_bo *pb,
30 unsigned usage);
31 void *
32 nouveau_screen_bo_map_range(struct pipe_screen *pscreen, struct nouveau_bo *bo,
33 unsigned offset, unsigned length, unsigned usage);
34 void
35 nouveau_screen_bo_map_flush_range(struct pipe_screen *pscreen, struct nouveau_bo *bo,
36 unsigned offset, unsigned length);
37 void
38 nouveau_screen_bo_unmap(struct pipe_screen *pscreen, struct nouveau_bo *bo);
39 void
40 nouveau_screen_bo_release(struct pipe_screen *pscreen, struct nouveau_bo *bo);
41
42 boolean
43 nouveau_screen_bo_get_handle(struct pipe_screen *pscreen,
44 struct nouveau_bo *bo,
45 unsigned stride,
46 struct winsys_handle *whandle);
47 struct nouveau_bo *
48 nouveau_screen_bo_from_handle(struct pipe_screen *pscreen,
49 struct winsys_handle *whandle,
50 unsigned *out_stride);
51
52 unsigned int
53 nouveau_reference_flags(struct nouveau_bo *bo);
54
55
56
57 int nouveau_screen_init(struct nouveau_screen *, struct nouveau_device *);
58 void nouveau_screen_fini(struct nouveau_screen *);
59
60
61
62
63 #endif