Home | History | Annotate | Download | only in main
      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 */
    359