Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1901 serge 1
/*
2
 * Mesa 3-D graphics library
3
 * Version:  7.5
4
 *
5
 * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
6
 * Copyright (C) 2008  VMware, Inc.  All Rights Reserved.
7
 *
8
 * Permission is hereby granted, free of charge, to any person obtaining a
9
 * copy of this software and associated documentation files (the "Software"),
10
 * to deal in the Software without restriction, including without limitation
11
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
 * and/or sell copies of the Software, and to permit persons to whom the
13
 * Software is furnished to do so, subject to the following conditions:
14
 *
15
 * The above copyright notice and this permission notice shall be included
16
 * in all copies or substantial portions of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21
 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22
 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
 */
25
 
26
/**
27
 * \file config.h
28
 * Tunable configuration parameters.
29
 */
30
 
31
#ifndef MESA_CONFIG_H_INCLUDED
32
#define MESA_CONFIG_H_INCLUDED
33
 
34
 
35
/**
36
 * \name OpenGL implementation limits
37
 */
38
/*@{*/
39
 
40
/** Maximum modelview matrix stack depth */
41
#define MAX_MODELVIEW_STACK_DEPTH 32
42
 
43
/** Maximum projection matrix stack depth */
44
#define MAX_PROJECTION_STACK_DEPTH 32
45
 
46
/** Maximum texture matrix stack depth */
47
#define MAX_TEXTURE_STACK_DEPTH 10
48
 
49
/** Maximum color matrix stack depth */
50
#define MAX_COLOR_STACK_DEPTH 4
51
 
52
/** Maximum attribute stack depth */
53
#define MAX_ATTRIB_STACK_DEPTH 16
54
 
55
/** Maximum client attribute stack depth */
56
#define MAX_CLIENT_ATTRIB_STACK_DEPTH 16
57
 
58
/** Maximum recursion depth of display list calls */
59
#define MAX_LIST_NESTING 64
60
 
61
/** Maximum number of lights */
62
#define MAX_LIGHTS 8
63
 
64
/** Maximum user-defined clipping planes */
65
#define MAX_CLIP_PLANES 6
66
 
67
/** Maximum pixel map lookup table size */
68
#define MAX_PIXEL_MAP_TABLE 256
69
 
70
/** Maximum number of auxillary color buffers */
71
#define MAX_AUX_BUFFERS 1
72
 
73
/** Maximum order (degree) of curves */
74
#ifdef AMIGA
75
#   define MAX_EVAL_ORDER 12
76
#else
77
#   define MAX_EVAL_ORDER 30
78
#endif
79
 
80
/** Maximum Name stack depth */
81
#define MAX_NAME_STACK_DEPTH 64
82
 
83
/** Minimum point size */
84
#define MIN_POINT_SIZE 1.0
85
/** Maximum point size */
86
#define MAX_POINT_SIZE 60.0
87
/** Point size granularity */
88
#define POINT_SIZE_GRANULARITY 0.1
89
 
90
/** Minimum line width */
91
#define MIN_LINE_WIDTH 1.0
92
/** Maximum line width */
93
#define MAX_LINE_WIDTH 10.0
94
/** Line width granularity */
95
#define LINE_WIDTH_GRANULARITY 0.1
96
 
97
/** Max texture palette / color table size */
98
#define MAX_COLOR_TABLE_SIZE 256
99
 
100
/** Max memory to allow for a single texture image (in megabytes) */
101
#define MAX_TEXTURE_MBYTES 1024
102
 
103
/** Number of 1D/2D texture mipmap levels */
104
#define MAX_TEXTURE_LEVELS 15
105
 
106
/** Number of 3D texture mipmap levels */
107
#define MAX_3D_TEXTURE_LEVELS 15
108
 
109
/** Number of cube texture mipmap levels - GL_ARB_texture_cube_map */
110
#define MAX_CUBE_TEXTURE_LEVELS 15
111
 
112
/** Maximum rectangular texture size - GL_NV_texture_rectangle */
113
#define MAX_TEXTURE_RECT_SIZE 16384
114
 
115
/** Maximum number of layers in a 1D or 2D array texture - GL_MESA_texture_array */
116
#define MAX_ARRAY_TEXTURE_LAYERS 64
117
 
118
/**
119
 * Max number of texture coordinate units.  This mainly just applies to
120
 * the fixed-function vertex code.  This will be difficult to raise above
121
 * eight because of various vertex attribute bitvectors.
122
 */
123
#define MAX_TEXTURE_COORD_UNITS 8
124
 
125
/**
126
 * Max number of texture image units.  Also determines number of texture
127
 * samplers in shaders.
128
 */
129
#define MAX_TEXTURE_IMAGE_UNITS 16
130
 
131
/**
132
 * Larger of MAX_TEXTURE_COORD_UNITS and MAX_TEXTURE_IMAGE_UNITS.
133
 * This value is only used for dimensioning arrays.
134
 * Either MAX_TEXTURE_COORD_UNITS or MAX_TEXTURE_IMAGE_UNITS (or the
135
 * corresponding ctx->Const.MaxTextureCoord/ImageUnits fields) should be
136
 * used almost everywhere else.
137
 */
138
#define MAX_TEXTURE_UNITS ((MAX_TEXTURE_COORD_UNITS > MAX_TEXTURE_IMAGE_UNITS) ? MAX_TEXTURE_COORD_UNITS : MAX_TEXTURE_IMAGE_UNITS)
139
 
140
 
141
/**
142
 * Maximum viewport/image width. Must accomodate all texture sizes too.
143
 */
144
 
145
#ifndef MAX_WIDTH
146
#   define MAX_WIDTH 16384
147
#endif
148
/** Maximum viewport/image height */
149
#ifndef MAX_HEIGHT
150
#   define MAX_HEIGHT 16384
151
#endif
152
 
153
/* XXX: hack to prevent stack overflow on windows until all temporary arrays
154
 * [MAX_WIDTH] are allocated from the heap */
155
#ifdef WIN32
156
#undef MAX_TEXTURE_LEVELS
157
#undef MAX_3D_TEXTURE_LEVELS
158
#undef MAX_CUBE_TEXTURE_LEVELS
159
#undef MAX_TEXTURE_RECT_SIZE
160
#undef MAX_WIDTH
161
#undef MAX_HEIGHT
162
#define MAX_TEXTURE_LEVELS 13
163
#define MAX_3D_TEXTURE_LEVELS 9
164
#define MAX_CUBE_TEXTURE_LEVELS 13
165
#define MAX_TEXTURE_RECT_SIZE 4096
166
#define MAX_WIDTH 4096
167
#define MAX_HEIGHT 4096
168
#endif
169
 
170
/** Maxmimum size for CVA.  May be overridden by the drivers.  */
171
#define MAX_ARRAY_LOCK_SIZE 3000
172
 
173
/** Subpixel precision for antialiasing, window coordinate snapping */
174
#define SUB_PIXEL_BITS 4
175
 
176
/** Size of histogram tables */
177
#define HISTOGRAM_TABLE_SIZE 256
178
 
179
/** Max convolution filter width */
180
#define MAX_CONVOLUTION_WIDTH 9
181
/** Max convolution filter height */
182
#define MAX_CONVOLUTION_HEIGHT 9
183
 
184
/** For GL_ARB_texture_compression */
185
#define MAX_COMPRESSED_TEXTURE_FORMATS 25
186
 
187
/** For GL_EXT_texture_filter_anisotropic */
188
#define MAX_TEXTURE_MAX_ANISOTROPY 16.0
189
 
190
/** For GL_EXT_texture_lod_bias (typically MAX_TEXTURE_LEVELS - 1) */
191
#define MAX_TEXTURE_LOD_BIAS 14.0
192
 
193
/** For any program target/extension */
194
/*@{*/
195
#define MAX_PROGRAM_INSTRUCTIONS       (16 * 1024)
196
 
197
/**
198
 * Per-program constants (power of two)
199
 *
200
 * \c MAX_PROGRAM_LOCAL_PARAMS and \c MAX_UNIFORMS are just the assembly shader
201
 * and GLSL shader names for the same thing.  They should \b always have the
202
 * same value.  Each refers to the number of vec4 values supplied as
203
 * per-program parameters.
204
 */
205
/*@{*/
206
#define MAX_PROGRAM_LOCAL_PARAMS       1024
207
#define MAX_UNIFORMS                   1024
208
/*@}*/
209
 
210
/**
211
 * Per-context constants (power of two)
212
 *
213
 * \note
214
 * This value should always be less than or equal to \c MAX_PROGRAM_LOCAL_PARAMS
215
 * and \c MAX_VERTEX_PROGRAM_PARAMS.  Otherwise some applications will make
216
 * incorrect assumptions.
217
 */
218
#define MAX_PROGRAM_ENV_PARAMS         256
219
 
220
#define MAX_PROGRAM_MATRICES           8
221
#define MAX_PROGRAM_MATRIX_STACK_DEPTH 4
222
#define MAX_PROGRAM_CALL_DEPTH         8
223
#define MAX_PROGRAM_TEMPS              256
224
#define MAX_PROGRAM_ADDRESS_REGS       2
225
#define MAX_VARYING                    16    /**< number of float[4] vectors */
226
#define MAX_SAMPLERS                   MAX_TEXTURE_IMAGE_UNITS
227
#define MAX_PROGRAM_INPUTS             32
228
#define MAX_PROGRAM_OUTPUTS            64
229
/*@}*/
230
 
231
/** For GL_ARB_vertex_program */
232
/*@{*/
233
#define MAX_VERTEX_PROGRAM_ADDRESS_REGS 1
234
#define MAX_VERTEX_PROGRAM_PARAMS       MAX_UNIFORMS
235
/*@}*/
236
 
237
/** For GL_ARB_fragment_program */
238
/*@{*/
239
#define MAX_FRAGMENT_PROGRAM_ADDRESS_REGS 0
240
/*@}*/
241
 
242
/** For GL_NV_vertex_program */
243
/*@{*/
244
#define MAX_NV_VERTEX_PROGRAM_INSTRUCTIONS 128
245
#define MAX_NV_VERTEX_PROGRAM_TEMPS         12
246
#define MAX_NV_VERTEX_PROGRAM_PARAMS        96
247
#define MAX_NV_VERTEX_PROGRAM_INPUTS        16
248
#define MAX_NV_VERTEX_PROGRAM_OUTPUTS       15
249
/*@}*/
250
 
251
/** For GL_NV_fragment_program */
252
/*@{*/
253
#define MAX_NV_FRAGMENT_PROGRAM_INSTRUCTIONS 1024 /* 72 for GL_ARB_f_p */
254
#define MAX_NV_FRAGMENT_PROGRAM_TEMPS         96
255
#define MAX_NV_FRAGMENT_PROGRAM_PARAMS        64
256
#define MAX_NV_FRAGMENT_PROGRAM_INPUTS        12
257
#define MAX_NV_FRAGMENT_PROGRAM_OUTPUTS        3
258
#define MAX_NV_FRAGMENT_PROGRAM_WRITE_ONLYS    2
259
/*@}*/
260
 
261
 
262
/** For GL_ARB_vertex_shader */
263
/*@{*/
264
#define MAX_VERTEX_GENERIC_ATTRIBS 16
265
#define MAX_VERTEX_TEXTURE_IMAGE_UNITS MAX_TEXTURE_IMAGE_UNITS
266
#define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_VERTEX_TEXTURE_IMAGE_UNITS + \
267
					  MAX_TEXTURE_IMAGE_UNITS)
268
/*@}*/
269
 
270
 
271
/** For GL_ARB_draw_buffers */
272
/*@{*/
273
#define MAX_DRAW_BUFFERS 8
274
/*@}*/
275
 
276
 
277
/** For GL_EXT_framebuffer_object */
278
/*@{*/
279
#define MAX_COLOR_ATTACHMENTS 8
280
/*@}*/
281
 
282
/** For GL_ATI_envmap_bump - support bump mapping on first 8 units */
283
#define SUPPORTED_ATI_BUMP_UNITS 0xff
284
 
285
/** For GL_EXT_transform_feedback */
286
#define MAX_FEEDBACK_ATTRIBS 32
287
 
288
/** For GL_ARB_geometry_shader4 */
289
/*@{*/
290
#define MAX_GEOMETRY_TEXTURE_IMAGE_UNITS             8
291
#define MAX_GEOMETRY_VARYING_COMPONENTS              32
292
#define MAX_VERTEX_VARYING_COMPONENTS                32
293
#define MAX_GEOMETRY_UNIFORM_COMPONENTS              512
294
#define MAX_GEOMETRY_OUTPUT_VERTICES                 256
295
#define MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS         1024
296
/*@}*/
297
 
298
 
299
/**
300
 * \name Mesa-specific parameters
301
 */
302
/*@{*/
303
 
304
 
305
/**
306
 * If non-zero use GLdouble for walking triangle edges, for better accuracy.
307
 */
308
#define TRIANGLE_WALK_DOUBLE 0
309
 
310
 
311
/**
312
 * Bits per depth buffer value (max is 32).
313
 */
314
#ifndef DEFAULT_SOFTWARE_DEPTH_BITS
315
#define DEFAULT_SOFTWARE_DEPTH_BITS 16
316
#endif
317
/** Depth buffer data type */
318
#if DEFAULT_SOFTWARE_DEPTH_BITS <= 16
319
#define DEFAULT_SOFTWARE_DEPTH_TYPE GLushort
320
#else
321
#define DEFAULT_SOFTWARE_DEPTH_TYPE GLuint
322
#endif
323
 
324
 
325
/**
326
 * Bits per stencil value: 8
327
 */
328
#define STENCIL_BITS 8
329
 
330
 
331
/**
332
 * Bits per color channel:  8, 16 or 32
333
 */
334
#ifndef CHAN_BITS
335
#define CHAN_BITS 8
336
#endif
337
 
338
 
339
/*
340
 * Color channel component order
341
 *
342
 * \note Changes will almost certainly cause problems at this time.
343
 */
344
#define RCOMP 0
345
#define GCOMP 1
346
#define BCOMP 2
347
#define ACOMP 3
348
 
349
 
350
/**
351
 * Maximum number of temporary vertices required for clipping.
352
 *
353
 * Used in array_cache and tnl modules.
354
 */
355
#define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
356
 
357
 
358
#endif /* MESA_CONFIG_H_INCLUDED */