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