1 #ifndef __NV30_RESOURCE_H__
2 #define __NV30_RESOURCE_H__
3
4 #include "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 bool 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 bool
62 nv30_miptree_get_handle(struct pipe_screen *pscreen,
63 struct pipe_context *context,
64 struct pipe_resource *pt,
65 struct winsys_handle *handle,
66 unsigned usage);
67
68 void
69 nv30_miptree_destroy(struct pipe_screen *pscreen, struct pipe_resource *pt);
70
71 void
72 nv30_resource_copy_region(struct pipe_context *pipe,
73 struct pipe_resource *dst, unsigned dst_level,
74 unsigned dstx, unsigned dsty, unsigned dstz,
75 struct pipe_resource *src, unsigned src_level,
76 const struct pipe_box *src_box);
77
78 void
79 nv30_blit(struct pipe_context *pipe,
80 const struct pipe_blit_info *blit_info);
81
82 void
83 nv30_flush_resource(struct pipe_context *pipe,
84 struct pipe_resource *resource);
85
86 void *
87 nv30_miptree_transfer_map(struct pipe_context *pipe, struct pipe_resource *pt,
88 unsigned level, unsigned usage,
89 const struct pipe_box *box,
90 struct pipe_transfer **ptransfer);
91
92 void
93 nv30_miptree_transfer_unmap(struct pipe_context *pipe,
94 struct pipe_transfer *ptx);
95
96 #endif
97