1#ifndef __NV30_RESOURCE_H__
2#define __NV30_RESOURCE_H__
3
4#include "nouveau/nouveau_buffer.h"
5
6void nv30_resource_screen_init(struct pipe_screen *);
7void nv30_resource_init(struct pipe_context *);
8
9struct 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
18static INLINE struct nv30_surface *
19nv30_surface(struct pipe_surface *ps)
20{
21   return (struct nv30_surface *)ps;
22}
23
24struct nv30_miptree_level {
25   uint32_t offset;
26   uint32_t pitch;
27   uint32_t zslice_size;
28};
29
30struct 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
41static INLINE struct nv30_miptree *
42nv30_miptree(struct pipe_resource *pt)
43{
44   return (struct nv30_miptree *)pt;
45}
46
47struct pipe_resource *
48nv30_miptree_create(struct pipe_screen *, const struct pipe_resource *);
49
50struct pipe_resource *
51nv30_miptree_from_handle(struct pipe_screen *, const struct pipe_resource *,
52                         struct winsys_handle *);
53
54struct pipe_surface *
55nv30_miptree_surface_new(struct pipe_context *, struct pipe_resource *,
56                         const struct pipe_surface *);
57
58void
59nv30_miptree_surface_del(struct pipe_context *, struct pipe_surface *);
60
61void
62nv30_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
68void
69nv30_resource_resolve(struct pipe_context *, const struct pipe_resolve_info *);
70
71#endif
72