1 #ifndef __NV30_RESOURCE_H__
2 #define __NV30_RESOURCE_H__
3
4 #include "nouveau/nouveau_buffer.h"
5
6 void nv30_resource_screen_init(struct pipe_screen *);
7 void nv30_resource_init(struct pipe_context *);
8
9 struct nv30_surface {
10 struct pipe_surface base;
11 uint32_t offset;
12 uint32_t pitch;
13 uint32_t width;
14 uint16_t height;
15 uint16_t depth;
16 };
17
18 static INLINE struct nv30_surface *
nv30_surface(struct pipe_surface * ps)19 nv30_surface(struct pipe_surface *ps)
20 {
21 return (struct nv30_surface *)ps;
22 }
23
24 struct nv30_miptree_level {
25 uint32_t offset;
26 uint32_t pitch;
27 uint32_t zslice_size;
28 };
29
30 struct nv30_miptree {
31 struct nv04_resource base;
32 struct nv30_miptree_level level[13];
33 uint32_t uniform_pitch;
34 uint32_t layer_size;
35 boolean swizzled;
36 unsigned ms_mode;
37 unsigned ms_x:1;
38 unsigned ms_y:1;
39 };
40
41 static INLINE struct nv30_miptree *
nv30_miptree(struct pipe_resource * pt)42 nv30_miptree(struct pipe_resource *pt)
43 {
44 return (struct nv30_miptree *)pt;
45 }
46
47 struct pipe_resource *
48 nv30_miptree_create(struct pipe_screen *, const struct pipe_resource *);
49
50 struct pipe_resource *
51 nv30_miptree_from_handle(struct pipe_screen *, const struct pipe_resource *,
52 struct winsys_handle *);
53
54 struct pipe_surface *
55 nv30_miptree_surface_new(struct pipe_context *, struct pipe_resource *,
56 const struct pipe_surface *);
57
58 void
59 nv30_miptree_surface_del(struct pipe_context *, struct pipe_surface *);
60
61 void
62 nv30_resource_copy_region(struct pipe_context *pipe,
63 struct pipe_resource *dst, unsigned dst_level,
64 unsigned dstx, unsigned dsty, unsigned dstz,
65 struct pipe_resource *src, unsigned src_level,
66 const struct pipe_box *src_box);
67
68 void
69 nv30_resource_resolve(struct pipe_context *, const struct pipe_resolve_info *);
70
71 #endif
72