Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5563 serge 1
 
2
#define __NV50_RESOURCE_H__
3
4
 
5
#include "util/u_double_list.h"
6
7
 
8
#include "nouveau/nouveau_buffer.h"
9
10
 
11
12
 
13
nv50_init_resource_functions(struct pipe_context *pcontext);
14
15
 
16
nv50_screen_init_resource_functions(struct pipe_screen *pscreen);
17
18
 
19
20
 
21
#define NV50_TILE_SHIFT_Y(m) ((((m) >> 4) & 0xf) + 2)
22
#define NV50_TILE_SHIFT_Z(m) ((((m) >> 8) & 0xf) + 0)
23
24
 
25
#define NV50_TILE_SIZE_Y(m) ( 4 << (((m) >> 4) & 0xf))
26
#define NV50_TILE_SIZE_Z(m) ( 1 << (((m) >> 8) & 0xf))
27
28
 
29
30
 
31
32
 
33
34
 
35
nv50_tex_choose_tile_dims_helper(unsigned nx, unsigned ny, unsigned nz);
36
37
 
38
   uint32_t offset;
39
   uint32_t pitch;
40
   uint32_t tile_mode;
41
};
42
43
 
44
45
 
46
   struct nv04_resource base;
47
   struct nv50_miptree_level level[NV50_MAX_TEXTURE_LEVELS];
48
   uint32_t total_size;
49
   uint32_t layer_stride;
50
   boolean layout_3d; /* TRUE if layer count varies with mip level */
51
   uint8_t ms_x;      /* log2 of number of samples in x/y dimension */
52
   uint8_t ms_y;
53
   uint8_t ms_mode;
54
};
55
56
 
57
nv50_miptree(struct pipe_resource *pt)
58
{
59
   return (struct nv50_miptree *)pt;
60
}
61
62
 
63
 
64
#define NV50_TEXVIEW_FILTER_MSAA8      (1 << 1)
65
#define NV50_TEXVIEW_ACCESS_RESOLVE    (1 << 2)
66
67
 
68
 
69
 */
70
boolean
71
nv50_miptree_init_layout_linear(struct nv50_miptree *mt, unsigned pitch_align);
72
73
 
74
nv50_miptree_create(struct pipe_screen *pscreen,
75
                    const struct pipe_resource *tmp);
76
77
 
78
nv50_miptree_destroy(struct pipe_screen *pscreen, struct pipe_resource *pt);
79
80
 
81
nv50_miptree_from_handle(struct pipe_screen *pscreen,
82
                         const struct pipe_resource *template,
83
                         struct winsys_handle *whandle);
84
85
 
86
nv50_miptree_get_handle(struct pipe_screen *pscreen,
87
                        struct pipe_resource *pt,
88
                        struct winsys_handle *whandle);
89
90
 
91
   struct pipe_surface base;
92
   uint32_t offset;
93
   uint32_t width;
94
   uint16_t height;
95
   uint16_t depth;
96
};
97
98
 
99
nv50_surface(struct pipe_surface *ps)
100
{
101
   return (struct nv50_surface *)ps;
102
}
103
104
 
105
nv50_zs_to_s_format(enum pipe_format format)
106
{
107
   switch (format) {
108
   case PIPE_FORMAT_Z24_UNORM_S8_UINT: return PIPE_FORMAT_X24S8_UINT;
109
   case PIPE_FORMAT_S8_UINT_Z24_UNORM: return PIPE_FORMAT_S8X24_UINT;
110
   case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT: return PIPE_FORMAT_X32_S8X24_UINT;
111
   default:
112
      return format;
113
   }
114
}
115
116
 
117
118
 
119
nv50_mt_zslice_offset(const struct nv50_miptree *mt, unsigned l, unsigned z);
120
121
 
122
nv50_miptree_surface_new(struct pipe_context *,
123
                         struct pipe_resource *,
124
                         const struct pipe_surface *templ);
125
126
 
127
nv50_miptree_transfer_map(struct pipe_context *pctx,
128
                          struct pipe_resource *res,
129
                          unsigned level,
130
                          unsigned usage,
131
                          const struct pipe_box *box,
132
                          struct pipe_transfer **ptransfer);
133
void
134
nv50_miptree_transfer_unmap(struct pipe_context *pcontext,
135
                            struct pipe_transfer *ptx);
136
137
 
138
139
 
140
nv50_surface_from_miptree(struct nv50_miptree *mt,
141
                          const struct pipe_surface *templ);
142
143
 
144
nv50_surface_from_buffer(struct pipe_context *pipe,
145
                         struct pipe_resource *pt,
146
                         const struct pipe_surface *templ);
147
148
 
149
nv50_surface_destroy(struct pipe_context *, struct pipe_surface *);
150
151
 
152