1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#ifndef __SAVAGE_DRM_H__
26#define __SAVAGE_DRM_H__
27
28#ifndef __SAVAGE_SAREA_DEFINES__
29#define __SAVAGE_SAREA_DEFINES__
30
31#define DRM_SAVAGE_MEM_PAGE (1UL<<12)
32#define DRM_SAVAGE_MEM_WORK 32
33#define DRM_SAVAGE_MEM_LOCATION_PCI 1
34#define DRM_SAVAGE_MEM_LOCATION_AGP 2
35#define DRM_SAVAGE_DMA_AGP_SIZE (16*1024*1024)
36
37typedef struct drm_savage_alloc_cont_mem
38{
39 size_t size;
40 unsigned long type;
41 unsigned long alignment;
42 unsigned long location;
43
44 unsigned long phyaddress;
45 unsigned long linear;
46} drm_savage_alloc_cont_mem_t;
47
48typedef struct drm_savage_get_physcis_address
49{
50 unsigned long v_address;
51 unsigned long p_address;
52} drm_savage_get_physcis_address_t;
53
54
55#define DRM_IOCTL_SAVAGE_ALLOC_CONTINUOUS_MEM \
56 DRM_IOWR(0x40,drm_savage_alloc_cont_mem_t)
57#define DRM_IOCTL_SAVAGE_GET_PHYSICS_ADDRESS \
58 DRM_IOWR(0x41, drm_savage_get_physcis_address_t)
59#define DRM_IOCTL_SAVAGE_FREE_CONTINUOUS_MEM \
60 DRM_IOWR(0x42, drm_savage_alloc_cont_mem_t)
61
62#define SAVAGE_FRONT 0x1
63#define SAVAGE_BACK 0x2
64#define SAVAGE_DEPTH 0x4
65#define SAVAGE_STENCIL 0x8
66
67
68
69#define SAVAGE_UPLOAD_CTX 0x1
70#define SAVAGE_UPLOAD_TEX0 0x2
71#define SAVAGE_UPLOAD_TEX1 0x4
72#define SAVAGE_UPLOAD_PIPE 0x8
73#define SAVAGE_UPLOAD_TEX0IMAGE 0x10
74#define SAVAGE_UPLOAD_TEX1IMAGE 0x20
75#define SAVAGE_UPLOAD_2D 0x40
76#define SAVAGE_WAIT_AGE 0x80
77#define SAVAGE_UPLOAD_CLIPRECTS 0x100
78
79#define SAVAGE_UPLOAD_BUFFERS 0x200
80
81
82
83
84#define SAVAGE_NR_SAREA_CLIPRECTS 8
85
86
87
88
89
90
91
92
93#define SAVAGE_CARD_HEAP 0
94#define SAVAGE_AGP_HEAP 1
95#define SAVAGE_NR_TEX_HEAPS 2
96#define SAVAGE_NR_TEX_REGIONS 16
97#define SAVAGE_LOG_MIN_TEX_REGION_SIZE 16
98
99#endif
100
101
102
103typedef drm_tex_region_t drm_savage_tex_region_t;
104
105
106
107typedef struct {
108 unsigned int pitch;
109} drm_savage_server_regs_t;
110
111
112typedef struct _drm_savage_sarea {
113
114
115
116 unsigned int setup[28];
117 drm_savage_server_regs_t server_state;
118
119 unsigned int dirty;
120
121 unsigned int vertsize;
122
123
124
125 drm_clip_rect_t boxes[SAVAGE_NR_SAREA_CLIPRECTS];
126 unsigned int nbox;
127
128
129
130
131
132
133
134
135 unsigned int req_drawable;
136 unsigned int req_draw_buffer;
137
138 unsigned int exported_drawable;
139 unsigned int exported_index;
140 unsigned int exported_stamp;
141 unsigned int exported_buffers;
142 unsigned int exported_nfront;
143 unsigned int exported_nback;
144 int exported_back_x, exported_front_x, exported_w;
145 int exported_back_y, exported_front_y, exported_h;
146 drm_clip_rect_t exported_boxes[SAVAGE_NR_SAREA_CLIPRECTS];
147
148
149
150 unsigned int status[4];
151
152
153
154
155 drm_tex_region_t texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS+1];
156 unsigned int texAge[SAVAGE_NR_TEX_HEAPS];
157
158
159
160 int ctxOwner;
161 unsigned long shadow_status[64];
162
163
164 unsigned long agp_offset;
165} drm_savage_sarea_t,*drm_savage_sarea_ptr;
166
167
168
169typedef struct drm_savage_init {
170
171 unsigned long sarea_priv_offset;
172
173 int chipset;
174 int sgram;
175
176 unsigned int maccess;
177
178 unsigned int fb_cpp;
179 unsigned int front_offset, front_pitch;
180 unsigned int back_offset, back_pitch;
181
182 unsigned int depth_cpp;
183 unsigned int depth_offset, depth_pitch;
184
185 unsigned int texture_offset[SAVAGE_NR_TEX_HEAPS];
186 unsigned int texture_size[SAVAGE_NR_TEX_HEAPS];
187
188 unsigned long fb_offset;
189 unsigned long mmio_offset;
190 unsigned long status_offset;
191} drm_savage_init_t;
192
193typedef struct drm_savage_fullscreen {
194 enum {
195 SAVAGE_INIT_FULLSCREEN = 0x01,
196 SAVAGE_CLEANUP_FULLSCREEN = 0x02
197 } func;
198} drm_savage_fullscreen_t;
199
200typedef struct drm_savage_clear {
201 unsigned int flags;
202 unsigned int clear_color;
203 unsigned int clear_depth;
204 unsigned int color_mask;
205 unsigned int depth_mask;
206} drm_savage_clear_t;
207
208typedef struct drm_savage_vertex {
209 int idx;
210 int used;
211 int discard;
212} drm_savage_vertex_t;
213
214typedef struct drm_savage_indices {
215 int idx;
216 unsigned int start;
217 unsigned int end;
218 int discard;
219} drm_savage_indices_t;
220
221typedef struct drm_savage_iload {
222 int idx;
223 unsigned int dstorg;
224 unsigned int length;
225} drm_savage_iload_t;
226
227typedef struct _drm_savage_blit {
228 unsigned int planemask;
229 unsigned int srcorg;
230 unsigned int dstorg;
231 int src_pitch, dst_pitch;
232 int delta_sx, delta_sy;
233 int delta_dx, delta_dy;
234 int height, ydir;
235 int source_pitch, dest_pitch;
236} drm_savage_blit_t;
237
238#endif
239